Сфера AI активно развивается и всё больше компаний думают о том, как использовать искусственный интеллект в своем бизнесе. Для многих это кажется чем-то сложным и труднодоступным. Однако уже сейчас некоторый функционал можно смело перекладывать на обученные машины. Чтобы не быть голословными, мы рассмотрим конкретный пример: легко и быстро прикрутим и настроим нейронку к сайту. Погнали.
Cписок ингредиентов и постановка цели
Конечно, чтобы сайт умел писать симфонии и рисовать портреты в стиле барокко, нужно очень постараться. Как минимум - собрать качественный датасет и обучить нейронку. Поэтому мы выберем что-то попроще, чтобы все необходимые составляющие были в открытом доступе. Например, научим сайт распознавать рукописные цифры и переводить их.
Для этого нам понадобятся:
- python 3.7
- flask
- tensorflow 2.0
- keras
- щепотка JavaScript
Что должно получиться на выходе: пользователь рисует цифру → обученная модель на архитектуре CNN распознает значение → считывание и вывод результата.
Мы будет использовать модель, обученную на наборе рукописных цифр MNIST, так что ваш сайт сможет спокойно распознавать цифры от 0 до 9.
Немного о нюансах
А их может всплыть достаточно, так как сфера машинного обучения развивается и меняется буквально каждый день. Поэтому методы, описанные в книгах и статьях даже за прошлый год, могут устареть и быть неактуальны.
Описываемый нами пациент - не исключение. Последовательность наших действий была описана в книге "Hands-On Python Deep Learning for the Web". Но, следуя ее инструкциям, нам бы пришлось использовать устаревшие пакеты. К тому же пакеты tensorflow и keras корректно работают только с определенными версиями друг друга. Поэтому придется прибегнуть к умышленному даунгрейду.
Но и тут не всё так гладко: некоторые пакеты требуют определенной архитектуры вашего железа. Например, установив tensorflow 2.0 на платформу с Celeron j1900, вы увидите, что там не будет инструкции AVX2:
Неприятно, но дорогу осилит идущий. Или тот, кто не поленится поискать погуглить способы решения. Один из них - установить tensorflow 2.0 с помощью wheel. Сперва на гит GitHub затем установка:
- x86 - vc_redist.x86.exe
- x64 - vc_redist.x64.exe
Для корректной совместимости минимальную версию Keras, а именно Keras==2.3.0. На выходе получаем:
pip install tensorflow -2.0 .0 -cp37-cp37m-win_amd64.whl
и
pip install keras== 2.3 .0
Работа с кодом
Код основной программы - flask_app.py:
Далее подгружаем пакеты:
Компилируем модель нейронной сети:
ВАЖНО: необходимо произвести замену на tf.compat.v1.get_default_graph(), чтобы добиться совместимости. После этого можем приступать к настройкам, связанным с сервером на flask. Начнем с прорисовки шаблона страницы:
Модуль для преобразования нарисованной картинки в число:
И, наконец, основная функция для предсказания:
Как работает нейросеть
Сперва запускаем команду python flask_app.py. Она активирует локальный flask-сервер, который выводит index.html.
Пользователь рисует в окне цифру, нажимает на "predict", и изображение отправляется на сервер. Там оно сохраняется и преобразуется в цифровой массив. После этого его обрабатывает CNN, распознавая цифру и возвращая ответ на сайт.
Как видно на гифке выше, не всегда сетка правильно распознает написанную цифру. Судить ее за это не стоит, ведь она обучалась всего на 10 эпохах.
С другой стороны, алгоритм отдает предпочтение тому варианту, который по математическим вычислениям ближе к предсказанному. Так что в какой-то степени, сетке виднее, какая цифра изображена 😅
Заключение
У вам мог возникнуть вопрос: ну и зачем на сайту нужна такая функция? Ответ - это лишь инструмент, который можно использовать по-разному. Главное - подобрать логичный способ ее использования.
Например, это может стать нетривиальной капчей, которая позволит вписывать ответ простого примера. Или интерактивом для розыгрышей, где человеку нужно будет выполнять квиз и получать вознаграждение. Вариантов много и они напрямую связаны с воображением.
Цель статьи - доказать, что повсеместное внедрение ИИ уже очень близко. Совсем скоро для этого будет требоваться значительно меньше ресурсов и именно поэтому LabelMe хочет помочь самым разным компаниям быстрее вступить в новую эпоху.
Мы с радостью проконсультируем вас, поможем составить ТЗ и подготовим датасет, подходящий под конкретно ваши цели и бизнес-процессы. Оставить заявку для обратной связи можно прямо в комментариях под статьей или на любой другой из наших площадок.
Другие наши статьи: