Содержание статьи
Машинное зрение на Python. Обучаем нейросеть распознавать цифры
Продолжение доступно только участникам
Но алгоритм обучения, который используется в Keras, не идеален: нейросети не всегда удается обучиться за 1000 итераций, и результаты не всегда верны. Так, Keras инициализирует начальные значения случайными величинами, и при каждом запуске результат может отличаться. Моя сеть с двумя нейронами успешно обучалась лишь в 20% случаев. Неправильная работа сети выглядит примерно так:
Следующим шагом является определение архитектуры модели. Для распознавания текста на изображении можно применять сверточные нейронные сети (CNN), которые хорошо работают с картинками. Можно использовать предварительно обученные модели, такие как VGG, ResNet или Inception, и добавить слои для работы с текстом. Также популярным выбором является сочетание CNN и RNN для работы с последовательными данными.
Можно сделать сеть поумнее: использовать четыре нейрона вместо двух, для этого достаточно заменить строчку кода model.add(Dense(2, input_dim=2, activation=’relu’)) на model.add(Dense(4, input_dim=2, activation=’relu’)) . Такая сеть обучается уже в 60% случаев, а сеть из шести нейронов обучается с первого раза с вероятностью 90%.
Раньше капча с числами была отличным способом отсеять ботов, а сейчас такая разновидность уже почти не встречается. Думаю, ты и сам догадываешься, в чем дело: нейросети научились распознавать такие капчи лучше нас. В этой статье мы посмотрим, как работает нейронная сеть и как использовать Keras и Tensorflow, чтобы реализовать распознавание цифр.
Распознавание текста на картинках в контексте сбора и разметки данных может происходить с помощью технологии оптического распознавания символов (OCR — Optical Character Recognition). По такому принципу работает ПО для сканеров: снимок печатной или рукописной страницы преобразуется в текст и сохраняется в виде документа в формате PDF, Word и т. д.
По мере развития ИИ и машинного обучения технология распознавания текста на изображениях приобретает все большую популярность. Как это работает? Вот реальный пример: компания Unipark использует ее на платных парковках для контроля за въездом и выездом автомобилей. Когда транспортное средство приближается к шлагбауму, камера делает снимок номерного знака, добавляет его в центральную базу данных компании, и шлагбаум автоматически открывается.
Вариант 2. Открой один материал
Представьте, что вы пришли на деловую встречу, где каждый из потенциальных клиентов или партнеров оставил вам визитку. Что проще? Загрузить каждую карту в модель машинного обучения, которая автоматически распознает текст и внесет его в базу данных с разнесением по соответствующим графам (Ф. И. О., адресу, дате рождения и т. д.)? Или вводить информацию вручную? Ответ очевиден.
Для каждого примера я приведу код на Python 3.7. Ты можешь запустить его и посмотреть, как все это работает. Для запуска примеров потребуется библиотека Tensorflow. Установить ее можно командой pip install tensorflow-gpu , если видеокарта поддерживает CUDA, в противном случае используй команду pip install tensorflow . Вычисления с CUDA в несколько раз быстрее, так что, если твоя видеокарта их поддерживает, это сэкономит немало времени. И не забудь установить наборы данных для обучения сети командой pip install tensorflow-datasets .
Все приведенные в этой статье примеры работают полностью автономно. Это важно, потому что существуют различные онлайн-сервисы AI, например компании Amazon, которые берут оплату за каждый запрос. Создав и обучив собственную нейронную сеть с помощью Python и Tensorflow, ты сможешь использовать ее неограниченно и независимо от какого-либо провайдера.
Рассмотрим простейшую нейросеть и научим ее выполнять функцию XOR . Разумеется, вычисление XOR с помощью нейронной сети не имеет практического смысла. Но именно оно поможет нам понять базовые принципы обучения и использования нейросети и позволит по шагам проследить ее работу. С сетями большей размерности это было бы слишком сложно и громоздко.
Когда владелец хочет уехать, он подходит к автомату по продаже билетов и выбирает свой номерной знак из списка. Стоимость рассчитывается автоматически, сразу после оплаты программа управления шлагбаумом получает сигнал о разрешении выезда для данного автомобиля. У шлагбаума номерной знак снова сканируется, проверяется по списку оплаты, и, если все хорошо, шлагбаум открывается. Никаких чеков, никаких контролеров. Все происходит внутри программного обеспечения.
Еще в 1943 году Мак-Каллок и Питтс доказали, что сеть из нейронов может выполнять различные операции. Но сначала эту сеть нужно обучить — настроить коэффициенты w каждого нейрона так, чтобы сигнал передавался нужным нам способом. Запрограммировать нейронную сеть и обучить ее с нуля сложно, но, к счастью для нас, все необходимые библиотеки уже написаны. Благодаря компактности языка Python все действия можно запрограммировать в несколько строк кода.