Простая в использовании реализация автономной системы HTR (линейный уровень)

Как долго мой друг. Надеюсь ты в порядке. На этот раз я представляю вам новый проект / пост. Теперь с автономным распознаванием рукописного текста (на уровне строк), основными концепциями, современными моделями, моей новой предложенной моделью, результатами и выводами. Все это с помощью TensorFlow 2.0 с помощью простого в использовании кода.

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

Для получения более подробной информации вы можете прочитать презентацию проекта, а также другие используемые подходы с более подробным описанием. Кроме того, для любителей кода вы также можете найти открытый исходный код, документацию и даже учебное пособие:

Итак, давай рок!

Введение

Для тех, кто начинает работать в среде оптического распознавания символов (OCR), я считаю интересным привести краткий контекст.

Согласно [1], системы OCR делятся на две категории: онлайн, в которых входная информация получается через датчики записи в реальном времени; и offline, в котором входная информация получается через статическую информацию (изображения). В категории offline есть распознавание печатного и рукописного текста (рис. 1).

Итак, распознавание рукописного текста (HTR) имеет цель транскрибировать курсивный текст на цифровой носитель (ASCII, Unicode) [2].

В течение многих лет системы HTR использовали скрытые марковские модели (HMM) для задачи транскрипции [3] - [5], но недавно, благодаря глубокому обучению, подход сверточных рекуррентных нейронных сетей (CRNN) был использован для преодоления некоторых ограничений. HMM [6], [7]. Чтобы проиллюстрировать модель CRNN, я привожу модель [8] (рисунок 2).

Рабочий процесс можно разделить на 3 этапа. Шаг 1: входное изображение подается в слои CNN для извлечения функций. Результатом является карта характеристик. Шаг 2: благодаря реализации Long Short-Term Memory (LSTM) RNN может передавать информацию на большие расстояния и предоставлять более надежные функции для обучения. Шаг 3: с выходной матрицей RNN, временная классификация коннекционистов (CTC) [9] вычисляет величину потерь, а также декодирует в окончательный текст.

Для получения более подробной информации об этом процессе я рекомендую прочитать Создание системы распознавания рукописного текста с использованием TensorFlow Харальда Шайдла (2018).

Наконец, очень важно объяснить, что для этого поста шаг 3 (CTC) одинаков для всех представленных архитектур, затем используется метод Vanilla Beam Search [10], поскольку он не требует словарь для своего приложения, в отличие от других известных методов, таких как Token Passing [11] и Word Beam Search [8]. Поэтому архитектуры, представленные в следующих разделах, действуют только на этапах 1 и 2.

Кроме того, кодировка для кодирования текста одинакова для всех наборов данных. Таким образом, используемый список по умолчанию состоит из 95 печатаемых символов из таблицы ASCII (рисунок 3) и не содержит букв с диакритическими знаками.

Теперь вам может быть интересно, зачем использовать один и тот же CTC и кодировку для архитектур и наборов данных. Что ж, для этого эксперимента я намеренно хотел применить более единообразный подход к моделям и базам данных. Поскольку использование определенных словарей и кодировок может дать лучшие результаты в некоторых сценариях, но не так сильно в других. Например, набор символов, состоящий всего из 60 символов, «легче поразить» (1/60), чем другой набор со 125 (1/125). Фактически, подход к распознаванию текста моделями здесь становится более сложным.

Наборы данных

Для эксперимента использовался подход свободной сегментации текстовых строк наборов данных Bentham, IAM, Rimes и Saint Gall.

Методология разделения (обучение, проверка и тестирование) данных была оригинальной для каждого набора данных, за исключением Rimes, поскольку в нем нет раздела проверки. В этом случае данные проверки представляют собой подмножество 10% обучающего раздела.

Бентам [12] представляет собой сборник рукописей, написанных английским философом Джереми Бентам (1748–1832) с кратким описанием каждого набора данных. Этот набор исторических данных (рис. 4) является наиболее сложным из четырех принятых. Также в текстах присутствует значительное количество знаков препинания.

База данных Institut für Informatik und Angewandte Mathematik (IAM) [13] содержит формы с английскими рукописями, которые можно рассматривать как простую основу, поскольку она имеет хорошее качество для распознавания текста (рис. 5). Однако при этом возникает проблема, связанная с наличием нескольких писателей, то есть курсивный стиль не ограничен.

База данных Reconnaissance et Indexation de données Manuscrites et de fac similÉS (Rimes) [14] представляет собой собрание текстов, написанных на французском языке несколькими авторами (рис. 6). Распознавание текста также считается простым, потому что тексты хорошо написаны, однако французский язык дает больше акцентированных слов.

Наконец, база данных Saint Gall [15] содержит рукописи на латыни IX века только одного писателя (рис. 7). Полученные изображения уже преобразованы в двоичную форму и нормализованы, и самая большая проблема для этой коллекции состоит в том, чтобы справиться с переобучением, поскольку в ней всего около 1400 строк текста, а стиль письма очень регулярный.

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

Наконец, чтобы упростить ввод данных в модель, был подготовлен проект для преобразования каждого набора данных. Процесс трансформации прост. Он помещал уже предварительно обработанные изображения, наземные тексты и закодированные тексты только в один файл HDF5. Это обеспечивает быструю загрузку данных, простую загрузку на Google Диск (если вы там запустите) и уменьшает пространство для хранения (например, набор данных с 2,8 ГБ становится 360 МБ).

Архитектура

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

Я также хотел бы отметить, что выбранные мной архитектуры соответствуют подходам, использующим BLSTM на рекуррентном уровне (RNN), и которые в конечном итоге сравнивались с MDLSTM [16] в качестве альтернативы вычислительной стоимости и высокой сложности. Если вас интересуют детали и подходы, использованные в каждом исследовании, я рекомендую прочитать:

Таким образом, первая архитектура (CNN-BLSTM), представленная Пучсервером [17], имеет высокий уровень распознавания и большое количество параметров (около 9,6 миллиона). На рисунке 8 подробно показано распределение параметров и гиперпараметров по 5 сверточным слоям и 5 BLSTM.

Вторая архитектура (Gated-CNN-BLSTM), представленная Блюче и Мессиной [18], имеет изюминку подхода Gated-CNN. Таким образом, этот метод направлен на извлечение более значимых элементов изображения. Вместо подхода Puigcerver у этой модели очень мало параметров (около 730 тысяч), что делает ее более компактной и быстрой. На Рисунке 9 подробно показано распределение параметров и гиперпараметров по 8 сверточным слоям (включая 3 стробированных) и 2 BLSTM.

Наконец, предложенная архитектура (Gated-CNN-BLSTM), вдохновленная [17] и [18], направлена ​​на: (i) достижение результатов, совместимых с моделью Пучсервера; и (ii) сохранить небольшое количество параметров (не более одного миллиона), например Bluche et al. модель.

Было непросто объединить два преимущества каждой архитектуры в одно, однако при разработке я применил другой подход Gated, когда-то представленный в [19] в контексте языковой модели. Другими методами, которые также принесли различия в результатах (улучшения), были Batch Renormalization [20] и активатор Parametric Rectified Linear Unit (PReLU) [21].

Таким образом, предлагаемая архитектура Gated-CNN-BLSTM сохраняет небольшое количество параметров (около 820 тысяч) и высокую скорость распознавания. На рисунке 10 подробно показано распределение параметров и гиперпараметров по 11 сверточным слоям (включая 5 стробированных) и 2 BLSTM.

Для обучения использовался оптимизатор RMSProp [22] со стандартной скоростью обучения каждой модели для постепенного обновления параметров с использованием градиентов потерь CTC.

Настройка эксперимента

Важным подспорьем для этого проекта стала CTCModel: модель Кераса для временной классификации коннекционистов [23] репозиторий / статья . В этом Кстати, можно было абстрагироваться от рабочего процесса системы HTR, сделав простой в использовании код. Короче говоря, вместо того, чтобы беспокоиться о величине потерь и декодировании выходных данных (обычно вручную), просто вызовите методы обучения и прогнозирования, как в Keras, в данном случае TensorFlow Keras. Вот так просто.

Итак, каждая модель была обучена, чтобы минимизировать значение потерь при проверке функции CTC. Для улучшения и нормализации изображений были применены два метода предварительной обработки: (i) Компенсация освещения [24] для удаления теней и баланса яркости и контраста; (ii) Deslanting [25] для удаления курсива. Сравнение изображения без / с предварительной обработкой показано на рисунке 11.

Далее, изменение размера 1024x128 (с заполнением) также было выполнено для всех входных изображений и приложения Data Augmentation, чтобы увеличить объем обучающего раздела с помощью морфологических преобразований и преобразований смещения (только незначительные изменения).

Он был установлен для всех минипакетов размером 16 и ранней остановки после 20 эпох без улучшения значения потерь при проверке. Для наилучшего использования каждой модели в пределах 20 периодов допуска также использовался график ReduceLRonPlateau [26] с коэффициентом затухания 0,2 после 10 периодов без улучшения значения потерь при проверке.

Метрики, используемые для проверки результатов, рассчитанных с помощью расстояния Левенштейна [27] между истинным значением и предсказаниями, следующие: (i) Коэффициент ошибок символа (CER) и (ii ) Коэффициент ошибок слова (WER). Как и ожидалось, результаты WER имеют тенденцию быть больше, чем CER, поскольку они соответствуют распределению ошибок символов в словах [28].

Наконец, все обучение и прогнозы проводились на платформе Google Colaboratory (Colab). По умолчанию платформа предлагает операционную систему Linux с 12 ГБ оперативной памяти и 16 ГБ памяти графического процессора Nvidia Tesla T4 (большое спасибо, Google ❤).

Полученные результаты

Для всех тестов не применяется какая-либо постобработка, например языковая модель, но учитывается только декодирование CTC в окончательном тексте (о да). К счастью, предложенная модель дала хорошие результаты, и для каждого набора данных есть отдельное обсуждение.

Начиная с набора данных Bentham, знаки препинания соответствуют примерно 20% частоты ошибок. Таким образом, без учета знаков препинания скорость распознавания выше примерно на 5%. В таблице 1 показаны детали результатов между моделями в этих трех сценариях: (i) текст без какой-либо нормализации (по умолчанию); (ii) только знаки препинания; и (iii) текст без знаков препинания.

Для базы данных IAM предложенная архитектура также достигла лучших результатов по сравнению с другими, имея улучшение до 8%. Подробности приведены в таблице 2.

В базе данных Rimes знаки препинания влияют не так сильно, как знаки ударения, используемые во французском языке. В этом случае ошибки акцента эквивалентны примерно 19% от частоты ошибок. Таким образом, для обоих сценариев предложенная архитектура достигла улучшения до 18%. В таблице 3 показаны детали обоих сценариев.

Наконец, база данных Saint Gall по-прежнему страдает от переобучения, как и ожидалось, и в ней отсутствуют знаки препинания и ударения, относящиеся к латинскому языку. В этом сценарии результаты были ближе, но также улучшились до 6%. Таблица 4 показывает детали результатов.

Для этого поста я привел краткую информацию о результатах. Однако, если вам интересно, дополнительные сведения можно найти в репозитории GitHub (папка doc) или, если хотите, в документе по проекту.

Выводы

В этом небольшом посте я представил свой недавний проект по распознаванию рукописного текста (HTR). В целом, после 3 месяцев изучения и разработки я увидел, что многие проекты HTR, как правило, очень «ручные» в обучении модели (когда есть код). Конечно, традиционные системы оптического распознавания символов (OCR) проще, и Keras позволяет их легче разрабатывать, например, в учебных пособиях с набором данных MNIST. Однако для HTR это не тот сценарий.

CTCModel, теперь я расширил его до HTRModel, делает разработку намного проще и более автоматической. В любом случае, вы можете просмотреть учебник в Jupyter Notebook (вы также можете запустить основной файл python). Я надеюсь, что хотя бы один из двух кодов поможет новым проектам распознавания текста.

Кроме того, до того, как мы пришли к предложенной архитектуре, было выполнено множество тестов (много), и даже порядок уровней активации и нормализации влияет на результаты. Один из подходов, которые я не тестировал, - это заменить традиционные сверточные слои более конкретными, например, сверточными по глубине [29] или сверточными по октаве [30]. ~ Оставляю этот совет ~

Итак, дайте мне знать, понравилось ли вам это, помогло или нет. Спасибо, что дочитали до этого момента, до встречи!

использованная литература

[1] М. Сонкусаре и Н. Саху, «Обзор методов распознавания рукописных символов (hcr) для английских алфавитов», Advances in Vision Computing: An International Journal, vol. 3. С. 1–12, 03 2016.

[2] Б.Л.Д. Безерра, К.Занчеттин, А.Х. Тозелли и Г. Пирло, Почерк: распознавание, развитие и анализ. Nova Science Pub Inc, июль 2017 г.

[3] Х. Бунке, М. Рот и Э. Г. Шукат-Таламаццини, «Автономное распознавание рукописного текста с использованием скрытых марковских моделей», Распознавание образов, т. 28, стр. 1399–1413, 09, 1995.

[4] Б. С. Сарита и С. Хемант, «Эффективная скрытая марковская модель для автономного распознавания рукописных цифр», 2010.

[5] А.Х. Тозелли и Э. Видаль, «Результаты распознавания рукописного текста на коллекции Бентама с улучшенными классическими методами n-грамм-хмм», в материалах 3-го Международного семинара по визуализации и обработке исторических документов (HIP @ ICDAR), 2015 г. .

[6] А. Грейвс, С. Фернандес, М. Ливицки, Х. Бунке и Дж. Шмидхубер, «Неограниченное онлайн-распознавание почерка с помощью рекуррентных нейронных сетей» в Advances in Neural Processing Systems 20, vol. 20, 01 2007.

[7] П. Фойгтлендер, П. Дётч и Х. Ней, «Распознавание рукописного текста с помощью больших многомерных рекуррентных нейронных сетей с долговременной краткосрочной памятью», в 15-й Международной конференции «Границы в распознавании рукописного ввода» (ICFHR), 10 2016 г., стр. 228–233.

[8] Х. Шейдл, С. Фил и Р. Саблатниг, «Поиск словарного луча: алгоритм декодирования временной классификации коннекционистов», на 16-й Международной конференции по границам в распознавании рукописного ввода (ICFHR). Ниагара-Фолс, США: Компьютерное общество IEEE, 08 2018 г., стр. 253–258.

[9] А. Грейвс, С. Фернандес и Ф. Гомес, «Коннекционистская временная классификация: маркировка несегментированных данных последовательности с помощью рекуррентных нейронных сетей», Международная конференция по машинному обучению, стр. 369–376, 2006.

[10] К. Хван и В. Сунг, Постепенное распознавание речи на уровне символов с помощью рекуррентных нейронных сетей, Международная конференция IEEE по акустике, речи и обработке сигналов (ICASSP), 2016 г., 3, 2016 г. [Online]. Доступно: http://dx.doi.org/10.1109/ICASSP.2016.7472696

[11] А. Грейвс, М. Ливицки, С. Фернандес, Р. Бертолами, Х. Бунке и Дж. Шмидхубер, «Новая коннекционистская система для неограниченного распознавания рукописного ввода», IEEE-транзакции по анализу образов и машинному интеллекту, вып. 31, с. 855–68, 06, 2009.

[12] М. Дием, С. Фил, Ф. Клебер, Р. Саблатниг, Дж. М. Сааведра, Д. Контрерас, Дж. М. Барриос и Л. С. де Оливейра, «Соревнование по распознаванию рукописных цифровых строк в сложных наборах данных (hdsrc 2014)», 14-е Международная конференция по вопросам распознавания почерка (ICFHR), т. 2014, 12 2014.

[13] У.-В. Марти и Х. Бунке, «База данных iam: база данных предложений на английском языке для автономного распознавания рукописного текста», Международный журнал анализа и распознавания документов, вып. 5. С. 39–46, 11 2002.

[14] Э. Гросицки, М. Карре, Ж.-М. Бродин и Э. Джеффруа, Кампания по оценке Rimes для обработки рукописных писем, в ICFHR 2008: 11-я Международная конференция по границам в распознавании почерка. Монреаль, Канада: Университет Конкордия, 8, 2008 г., стр. 1–6. [Онлайн]. Доступно: https://hal.archives-ouvertes.fr/hal-01395332.

[15] А. Фишер, Э. Индермюле, Х. Бунке, Г. Фиххаузер и М. Штольц, «Создание основы для распознавания почерка в исторических документах», Сборник материалов международной конференции ACM, стр. 3–10, 01 2010 г. .

[16] Б. Мойссет и Р. О. Мессина, «Действительно ли 2D-LSTM мертв для распознавания текста в автономном режиме?» CoRR, т. abs / 1811.10899, 2018.

[17] Дж. Пучсервер, «Действительно ли многомерные повторяющиеся слои необходимы для распознавания рукописного текста?» 14-я Международная конференция IAPR по анализу и распознаванию документов (ICDAR), стр. 67–72, 11 2017.

[18] Т. Блюче и Р. Мессина, «Закрытые сверточные рекуррентные нейронные сети для распознавания многоязычного почерка», 14-я Международная конференция IAPR по анализу и распознаванию документов (ICDAR), стр. 646–651, 11, 2017.

[19] Y. N. Dauphin, A. Fan, M. Auli, D. Grangier, «Языковое моделирование с помощью сверточных сетей с воротами», 2017.

[20] С. Иоффе, Перенормировка партии: на пути к уменьшению зависимости
от мини-партии в моделях, нормализованных по партии
, CoRR, vol. abs / 1702.03275,
2017. [Online]. Доступно: http://arxiv.org/abs/1702.03275

[21] К. Хе, Х. Чжан, С. Рен и Дж. Сун, «Углубляясь в выпрямители: превосходя показатели человеческого уровня по классификации изображений», Международная конференция IEEE по компьютерному зрению (ICCV), 2015 г., 12 2015 г. С. 1026–1034.

[22] Т. Тилеман и Г. Хинтон, «Лекция 6.5 – rmsprop: разделите градиент на текущее среднее его недавней величины», COURSERA: Neural Networks for Machine Learning, 2012.

[23] Y. Soullard, C. Ruffino, T. Paquet, «CTCModel: коннекционистская временная классификация в Керасе», 2018.

[24] К.-Н. Чен, С.-Х. Чен и Ч.-К. Чанг, Эффективные методы компенсации освещенности для текстовых изображений, Digital Signal Processing, vol. 22, нет. 5. С. 726–733, 2012. [Online]. Доступно: http://www.sciencedirect.com/science/article/pii/S1051200412000826

[25] А. Винчиарелли и Дж. Люэттин, «Новая техника нормализации для рукописных слов, написанных курсивом», Письма о распознавании образов, т. 22 (9), стр. 1043–1050, 07 2001.

[26] Ф. Чолле, «Керас: библиотека глубокого обучения для теано и тензорного потока», 2015.

[27]] В. Левенштейн, “Двоичные коды, способные исправлять удаления, вставки и обращения”, Докл. 10, стр. 707, 1966 г.

[28] Дж. А. Санчес, В. Ромеро, А. Х. Тозелли, М. Вильегас и Э. Видаль, «Набор тестов для распознавания рукописного текста в исторических документах», Распознавание образов, т. 94. С. 122–134, 2019.

[29] А.Г. Ховард, М. Чжу, Б. Чен, Д. Калениченко, В. Ван, Т. Вейлан, М. Андреетто, Х. Адам, Мобильные сети: эффективные сверточные нейронные сети для приложений мобильного зрения, 2017. [ Онлайн]. Доступно: https://arxiv.org/pdf/1704.04861.pdf

[30] Ю. Чен, Х. Фан, Б. Сю, З. Ян, Ю. Калантидис, М. Рорбах, С. Ян, Дж. Фэн, Отбросьте октаву: уменьшение пространственной избыточности в сверточных нейронных сетях с помощью октавной свертки. ”, 2019. [Онлайн]. Доступно: «https://arxiv.org/pdf/1904.05049.pdf