Как создать нейросеть для распознавания текста

0
22

Делаем модель нейросети для распознавания рукописных цифр

Вложенные модели

Здесь y_true, y_pred – это наборы one-hot векторов размером мини-батча, то есть, функция будет применяться сразу к набору данных, а не к одному конкретному наблюдению. Так как на выходе нам нужно получить одно конкретное число, то все значения для каждого наблюдения из мини-батча мы усредняем функцией reduce_mean().

Смотрите, здесь у конструктора был добавлен еще один параметр activate, определяющий тип функции активации слоя нейронов (по умолчанию ReLu). А в магическом методе __call__ мы применяем к суммам либо relu(), либо softmax(), либо используется линейная функция (то есть, выходы передаются как есть). Во всем остальном этот такой жекласс, как и в предыдущем занятии.

Google Lens — это приложение для визуальных запросов. Например, вы наводите камеру телефона на интересующий вас объект и получаете информацию о нем из Гугла. Приложение также умеет обрабатывать текст, на который вы наведете камеру. Например, переводить его. А теперь еще и умеет прочитать вслух. Но самая крутая новая фича — распознавание рукописного текста. Да, пока она работает только на английском и только если почерк нормальный, но это уже большой шаг вперед. А если вы используете браузер Chrome на компьютере, то распознанный текст можно одним кликом вставить с телефона в документ Google Docs на компьютере.

Далее, вычисляем градиенты относительно кросс-энтропии для параметров наших слоев, то есть, для весовых коэффициентов и изменяем их с помощью метода apply_gradients() сначала для параметров первого слоя, а затем, для второго. В результате, на каждой эпохе у нас функция потерь должна уменьшаться.

Первый цикл проходим по эпохам, а второй перебирает мини-батчи размером BATCH_SIZE из случайных наблюдений всей обучающей выборки. Я решил мини-батчи сформировать именно так. В каждой конкретной реализации процесса обучения эти выборки можно создавать разным образом, все зависит от поставленной задачи и представлений разработчика о правильности процесса обучения.

Специалисты Сибирского федерального университета и Санкт-Петербургского государственного электротехнического университета «ЛЭТИ» разработали нейросеть, которая распознает рукописный текст на русском языке. Речь идет о так называемой свёрточной нейросети (CNN). Она способна читать рукопись на русском языке с точностью до 99%, утверждают разработчики. По их словам, алгоритм ориентируется независимо от почерка, защищён от утечки информации и не требует подключения к интернету. Обучение нейросети проводилось с помощью предварительно обработанных данных хранилища CoMNIST — известной базы данных, содержащей образцы рукописного написания букв на латинице и кириллице. Первым делом учёные создали новый набор данных с помеченным изображением для 33 букв русского алфавита, затем разработали новую архитектуру CNN для обнаружения рукописных букв и сравнили её с уже существующими моделями. После этого выложили на Github полное описание свёрточной нейросети и исходного кода, чтобы другие исследователи имели возможность воспроизводить эти данные.

ЧИТАТЬ ТАКЖЕ:  Как самостоятельно изучить искусственный интеллект

Видео по теме

Далее разместим еще один слой из 10 выходных нейронов с функцией активации softmax. Полученный выходной вектор как раз и будет содержать класс предъявленного изображения. Например, если был изображен 0, то выход y1 должен принимать наибольшее значение; если 1, то максимальный выход – это y2 и так далее.

Здесь коллекция trainable_variables формируется автоматически из тех переменных тензоров (tf.Variable), которые присутствуют в слоях. Таким образом, мы переходим на более высокий уровень абстракции и, как следствие, получаем большую гибкость программы и удобство ее использования.Мало того, у моделиSequentialModule имеется свойствоsubmodules, которое содержит список вложенных моделей:

И давайте, еще раз, внимательно посмотрим, что же у нас в итоге получилось. Во-первых, мы обучили НС в соответствии с алгоритмом обратного распространения ошибки (backpropagation). Но откуда он здесь взялся? Мы же его явно нигде не прописывали?В этом и заключается «магия» работы вычислительного графа. С его помощью мы вычислили частные производные по всем параметрам первого и второго слоев НС относительно функции кросс-энтропии, а затем, эти градиенты были использованы в алгоритме градиентного спуска с заданным оптимизатором. Видите, как легко и просто реализуются алгоритмы машинного обучения через вычислительный граф в Tensorflow.

Машинное обучение позволяет создать нейросети, которые умеют распознавать рукописный текст. Как правило, речь идет о распознавании текста в бумажных формах с квадратиками для букв. Таким образом, рукописного текста сводится к распознаванию отдельных букв. Примеры использования распознавания рукописного текста для бизнеса — даны ниже.

Фактически, нам осталось обучить эту НС, то есть, найти значения параметров весовых коэффициентов с помощью алгоритма градиентного спуска. Как мы уже хорошо себе представляем, для этого вначале нужно задать функцию потерь. В задачах классификации (с числом классов более 2) хорошо себя зарекомендовала категориальная кросс-энтропия. В пакете Tensorflow она уже встроена и нам достаточно описать порядок ее вызова. Сделаемэто, следующимобразом:

Samsung представила смартфоны Galaxy Note 10 с 6,3-дюймовым дисплеем и Galaxy Note 10+ c экраном 6,8 дюйма. Смартфоны поддерживают стандарты связи 5G и LTE. Оба устройства получили электронное перо S Pen. Оно позволяет преобразовывать рукописный текст в заметки и дистанционно управлять смартфоном с помощью жестов. Оба устройства получили модуль из трёх камер: основной на 12 мегапикселей, телеобъектив на 12 мегапикселей и широкоугольной на 16 мегапикселей. Galaxy Note 10+ также оснащён 3D-сканером объектов, позволяющим копировать объекты для 3D-принтеров или создания трёхмерных видео. В России Galaxy Note 10 будет стоить от 76 900 рублей, Galaxy Note 10+ — от 89 990 рублей.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь