Эксперимент в распознавании рукописных текстов на кириллице. Часть 2

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Всем привет! В этой части хочу рассказать как мы использовали модель NomeroffNet предназначенного для распознавания автомобильных номеров, распознать рукописные записи. В предедущей статье я поделился опытом в использовании моделей SimpleHTR и LineHTR для распознавания рукописных текстов.

Распознавание рукописного текста (англ. Handwritten Text Recognition, HTR) - это автоматический способ расшифровки записей с помощью компьютера. Оцифрованный текст рукописных записей позволило бы автоматизировать бизнес процессы множества компаний, упростив работу человека. В данной статье рассматривается модель распознавания рукописного текста на кириллице на основе искусственной нейронной сети. Архитектура данной нейронной сети состоит из слоев сверточной нейронной сети (англ. Convolutional neural network, CNN) и рекуррентной нейронной сети (англ. Recurrent neural network, RNN), а также имеет алгоритм декодирования на основе коннекционной временной классификации (англ. Connectionist Temporal Classification, CTC), который приводит текст к окончательному варианту. Данная модель была обучена на собранном нами датасете рукописных текстов и дала результат 80% точности.

В данной статье мы рассматриваем модель распознавания рукописного текста, основанная на современной высокоуровневой архитектуре нейронных сетей. Обобщенная архитектура модели распознавания текста проиллюстрирована на рисунке 1.

Рисунок 1- Обобщенная архитектура модели распознавания текста
Рисунок 1- Обобщенная архитектура модели распознавания текста

В начале подается изображение с текстом на сверточный слой нейронной сети (CNN)  для извлечения особенностей изображения. Следующим шагом является применение к  результатам свертки рекуррентной нейронной сети с архитектурой Долгая краткосрочная  память (англ. Long short-term memory; LSTM) с последующим применением специального  алгоритма декодирования. Этот алгоритм декодирования берет выходные данные LSTM и  производит окончательную маркировку (Рисунок 2). В результате получается строка из  символов - одна наиболее вероятная буква на каждом временном шаге. Затем все  последовательные повторяющиеся символы объединяются в один символ. На примере слова  “apple” (Рисунок 2) две буквы «е» объединены в один. Специальный пробел позволяет  разделить символы, которые повторяются в оригинальной маркировке. В алфавите также  содержится пустой символ, чтобы научить нейронную сеть предсказывать пустой символ  между такими символами. Затем все пустые символы удаляются и получается  окончательный вариант слова.

Рисунок 2- Принцип работы алгоритма декодирования
Рисунок 2- Принцип работы алгоритма декодирования

В нашей работе мы использовали модель распознавания текста, реализованную в  проекте Nomeroff Net для распознавания номеров автомобилей. Для нашей цели мы  убрали из модели распознавания номеров лишние модули (препроцессинг, детекция номера,  аффинное преобразование) и оставили лишь модель распознавания текста.

В данной реализации используется немного сложная архитектура нейронной сети  (Рисунок 3), чем то, что мы рассматривали в начале, но основные принципы все те же. В  начале подается изображение с текстом на сверточные слои нейронной сети для извлечения  особенностей изображения. Изображение проходит через два слоя свертки с объединением  (C, P - Convolution + Pooling). Результат свертки преобразуется в другую форму и размер  (Reshape), затем подается в полносвязную нейронную сеть (FC - Fully Connected).  Следующим шагом является применение рекуррентной нейронной сети с архитектурой Управляемых рекуррентных блоков (англ. Gated Recurrent Units, GRU). Данные проходят  через два слоя GRU и производится поэлементное сложение (Element-wise addition).  Результаты сложения снова проходят через два слоя GRU, но здесь уже к выходным  результатам применяется операция склеивания (конкатенация, англ. concatenation).  Объединенные данные вывода рекуррентных слоев подаются к полносвязному слою (FC) с  последующей функцией активации softmax, которая возвращает наиболее вероятные  символы. В конце к полученному набору символов применяется специальный алгоритм  декодирования CTC и он выдает окончательный результат распознавания.

Рисунок 3 - Архитектура нейронной сети для распознавания рукописного текста
Рисунок 3 - Архитектура нейронной сети для распознавания рукописного текста

Задача машинного обучения с учителем требует входных размеченных данных, на  которых можно было бы обучить модель. Для обучения данной модели был собран набор  данных с рукописным текстом на кириллице. Набор данных содержит 18 563 изображения с  аннотациями, состоящие из 43 классов (названия стран и городов). Для сбора данных были  специально подготовлены формы на бумаге формата А4 с пустыми ячейками для  заполнения, и розданы среди студентов для охвата большого диапазона почерков для  каждого класса. 

На собранном датасете мы обучили вышеупомянутую модель распознавания текста.  Данная модель имеет 4 863 469 тренировочных параметров нейронной сети. Обучение  нейронной сети проходило 3 эпохи на 11 197 изображениях для обучения, 3 637 для валидации и 3 729 для теста. На рисунке 4 приведены некоторые примеры из набора данных  для теста с результатами их распознавания.

Рисунок 4 –Результаты распознавания текста
Рисунок 4 –Результаты распознавания текста

На данный момент обученная модель дает 80% точности. Есть еще  нерешенные задачи над которыми мы сейчас работаем: увеличение объема датасета,  препроцессинг изображений, подбор гиперпараметров нейронной сети, применение словаря.  От объема и вариации почерков очень сильно зависит качество обучения, поэтому на данный  момент наша работа акцентирована на увеличение количество изображений с рукописным  текстом. Обученную модель распознавания рукописного текста можно будет применять для  различных задач, связанных с компьютерным зрением и обработкой текста.

Источник: https://habr.com/ru/post/534040/


Интересные статьи

Интересные статьи

В первой части описан тяжкий квест по оцифровке старых семейных видеозаписей с разбиением их на отдельные сцены. После обработки всех клипов я хотел организовать их просмотр в онлайне так...
Дешёвый сервер из китайских запчастей. Часть 1, железная Размытая кошка позирует на фоне настраиваемого сервера. На заднем плане – мышка на сервере Привет, Хабр! В жизни каждого человека ино...
Всем привет! Меня зовут Дмитрий Самсонов, я работаю ведущим системным администратором в «Одноклассниках». У нас более 7 тыс. физических серверов, 11 тыс. контейнеров в нашем облаке и 200 прил...
В первой части я рассказал про концепцию проекта. Во второй части разбираем конструкцию робота MIRO по косточкам (много картинок).
Добрый день! Как и было обещано в предыдущей статье, сегодня мы продолжим разговор о методологиях, применяемых в A/B-тестировании и рассмотрим методы оценки результатов множественных экспериме...