История Победы На Международном Конкурсе По Распознаванию Документов Команды Smartengines

Привет, Хабр! Сегодня мы поговорим о том, как наша команда из Умные двигатели удалось выиграть международный конкурс по бинаризации документов ДИБКО17 состоялось в рамках конференции ИКДАР .

Этот конкурс проводится регулярно и уже имеет солидную историю (проводится уже 9 лет), за время которой было предложено множество невероятно интересных и безумных (в хорошем смысле) алгоритмов бинаризации.

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

время.



История победы на международном конкурсе по распознаванию документов команды SmartEngines

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

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

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

решить задачу отнесения каждого пикселя к объекту или фону), чтобы полученные изображения были максимально «приближены» к соответствующим идеальным я .

Многие метрики, по которым оценивается эта близость, конечно, зафиксированы в условиях конкурса.

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

При этом новые данные каждый раз содержат свою «изюминку», отличающую их от предыдущих соревнований (например, наличие тонких «акварельных» начертаний текста или полупрозрачных с противоположной стороны символов) и ставят перед участниками новые задачи.

Соревнования регулярно собирают около двух-трех десятков участников со всего мира.

Ниже приводится описание нашего решения для соревнований.



История победы на международном конкурсе по распознаванию документов команды SmartEngines



История победы на международном конкурсе по распознаванию документов команды SmartEngines



Схема решения

Первым шагом было собрать данные со всех предыдущих соревнований.

Всего нам удалось загрузить 65 изображений рукописных документов и 21 изображение печатных документов.

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

Организаторы не запрещали использование сторонних датасетов.

Было успешно найдено несколько тысяч изображений, по своему характеру соответствующих условиям конкурса (данные различных тематических конкурсов, организованных ICDAR, проект ЧИТАТЬ и другие).

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

Например, ни в одном из предыдущих конкурсов документы не содержали элементов оформления, хотя таблицы часто встречаются в архивах.

Готовясь к соревнованиям, мы пошли по нескольким параллельным путям.

В дополнение к классическим алгоритмическим подходам, которые мы ранее хорошо изучили, мы решили попробовать методы машинного обучения для пиксельной классификации объектов по фону, несмотря на столь небольшой объем изначально предоставленных данных.

Поскольку в итоге этот подход оказался наиболее эффективным, мы о нем и поговорим.



Выбор сетевой архитектуры

В качестве первоначального варианта была выбрана архитектура нейронной сети.

U-сеть .

Данная архитектура хорошо зарекомендовала себя при решении задач сегментации в различных конкурсах (например 1 , 2 , 3 ).

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

; в этом случае сеть построить особенно просто).



История победы на международном конкурсе по распознаванию документов команды SmartEngines

Пример архитектуры нейронной сети U-net Преимущество этой архитектуры в том, что для обучения сети можно создать достаточный объем обучающих данных из небольшого количества исходных изображений.

Более того, сеть имеет относительно небольшое количество весов из-за своей сверточной архитектуры.

Но есть и некоторые нюансы.

В частности, используемая искусственная нейронная сеть, строго говоря, не решает задачу бинаризации: она присваивает каждому пикселю исходного изображения определенное число от 0 до 1, которое характеризует степень принадлежности данного пикселя одному из классы (содержательное наполнение или фон) и которые необходимо еще преобразовать в конечный бинарный ответ. 80% исходных изображений были взяты в качестве обучающего набора.

Оставшиеся 20% изображений были выделены для валидации и тестирования.

Цветные изображения были преобразованы в оттенки серого, чтобы избежать переобучения, после чего все они были разрезаны на неперекрывающиеся окна размером 128x128 пикселей.

Оптимальный размер окна был выбран опытным путем (пробовались окна от 16х16 до 512х512).

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

Каждому такому окну изображения была присвоена бинарная маска, вырезанная из разметки.



История победы на международном конкурсе по распознаванию документов команды SmartEngines

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

Для стохастической оптимизации был выбран метод Адам .

Перекрестная энтропия использовалась в качестве метрики функции потерь.



Первичные эксперименты

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

Нейронная сеть хорошо обучалась и процесс обучения быстро сошелся к приемлемому минимуму.

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

Первые два изображения взяты из оригинальных наборов данных, третье было найдено в одном из архивов.

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

Полученные результаты сети склеиваются в одну GIF-анимацию.



История победы на международном конкурсе по распознаванию документов команды SmartEngines

Исходное изображение рукописного текста со сложным фоном

История победы на международном конкурсе по распознаванию документов команды SmartEngines

Результат бинаризации по мере обучения сети Трудность бинаризации приведенного выше примера заключается в том, чтобы отличить неоднородный фон от витиеватого почерка.

Некоторые буквы размыты, на обороте появляется текст с другой страницы, кляксы.

Тот, кто написал эту рукопись, явно не самый осторожный человек своего времени =).



История победы на международном конкурсе по распознаванию документов команды SmartEngines

Исходное изображение печатного текста, сквозь который проступает текст с предыдущей страницы.



История победы на международном конкурсе по распознаванию документов команды SmartEngines

Результат бинаризации по мере обучения сети В этом примере помимо неоднородного фона присутствует еще и текст, появившийся с предыдущей страницы.

Отличием, по которому можно определить, что появившийся текст следует отнести к «фону», является неправильное «зеркальное» очертание символов.



История победы на международном конкурсе по распознаванию документов команды SmartEngines



История победы на международном конкурсе по распознаванию документов команды SmartEngines

Изображение с таблицей и результат его бинаризации в процессе обучения сети После каждого эксперимента мы дополнительно оценивали актуальность полученной модели на наборе выбранных данных из государственных архивов, а также на различных типах печатных документов и анкет. Было замечено, что при применении сети к примерам из этих данных результат работы алгоритма зачастую был неудовлетворительным.

Было решено добавить такие изображения в обучающую выборку.

Наиболее проблемными были края страниц документа и линии их разметки.

Всего было выбрано 5 дополнительных изображений, содержащих интересующие объекты.

Первичная бинаризация проводилась с использованием существующей версии сети, после чего пиксели проверялись экспертом, а полученные изображения добавлялись в обучающую выборку.



История победы на международном конкурсе по распознаванию документов команды SmartEngines



История победы на международном конкурсе по распознаванию документов команды SmartEngines

В примере выше видно, что сеть подсвечивает края страниц, что является ошибкой.



История победы на международном конкурсе по распознаванию документов команды SmartEngines



История победы на международном конкурсе по распознаванию документов команды SmartEngines

Здесь помимо сетевых ошибок по краям страниц еще и очень «неуверенная» подсветка строк таблицы и текста внутри нее.



Используемые методы аугментации и как они помогают

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

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

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



История победы на международном конкурсе по распознаванию документов команды SmartEngines

Пример комбинации нескольких методов дополнения, используемых «на лету» во время обучения сети Поскольку при генерации данных со всевозможными искажениями и их сочетаниями количество примеров быстро растет, используется метод «на лету» аугментации, при котором выборка раздувается непосредственно перед подачей примеров на обучение.

Схематически это можно представить так:

История победы на международном конкурсе по распознаванию документов команды SmartEngines

Диаграмма, показывающая процесс раздувания данных на лету и их вывода для обучения.

Такой подход позволяет оптимизировать процесс раздувания данных и обучения сети, поскольку:

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

  • Параллельное увеличение данных в мини-пакетах происходит независимо и эффективно задействует все ядра машины.

    Некоторые из наиболее ресурсоемких операций можно переписать с помощью theano/tensorflow и рассчитать на 2-м графическом процессоре.

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

  • Большая часть памяти остается незанятой, поскольку в ней одновременно хранится около 20% всех данных (набора проверки и текущего пакета).

    Это позволяет провести 5 экспериментов одновременно эффективно использовать вычислительные ресурсы сервера.

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

качество сети будет не хуже, чем при обучении и валидации.

Некоторые специалисты по неизвестным причинам пренебрегают работой с данными и ищут способ повысить производительность системы только за счет изменения сетевой архитектуры.

С наш точки зрение , работа с данными не менее, а зачастую и более важна, чем продуманный выбор параметров сетевой архитектуры.



Улучшение качества

Процесс улучшения качества решения происходил итеративно.

В основном работа шла по трем направлениям:

  • Анализ сетевых ошибок и работа с данными.

  • Доработка сетевой архитектуры, настройка гиперпараметров слоев и механизмов регуляризации.

  • Построение ансамбля на основе нейронной сети и традиционных методов.

Данные обрабатывались в следующих циклах:

История победы на международном конкурсе по распознаванию документов команды SmartEngines

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

Было зафиксировано около 2000 «окон» (но не более 50 окон из одного изображения), в которых ошибка достигала максимального значения по квадратичной метрике, и изображений, из которых эти окна были вырезаны.

Затем эти изображения были проанализированы и классифицированы по типу ошибки.

Результат выглядел примерно так:

История победы на международном конкурсе по распознаванию документов команды SmartEngines

Пример диаграммы распределения ошибок Далее выбирается наиболее распространенный тип ошибок.

Создается искажение, имитирующее изображения с этим типом ошибок.

Проверено, что текущая версия системы действительно допускает ошибку в искаженном изображении, и ошибка возникает из-за добавленного искажения.

Затем созданная процедура дополнения добавляется к набору существующих и применяется в процессе обучения.

После обучения новой сети и обновления параметров настройки системы происходит новый анализ и классификация ошибок.

На заключительном этапе цикла мы проверяем, что качество растет и количество ошибок того или иного типа значительно снижается.

Естественно, здесь описан весьма «идеалистический» ход событий =).

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

Тем не менее такая методология позволяет исключить 80% ошибок, возникающих на разных этапах построения системы.

Пример: некоторые изображения содержат шум от неоднородного фона, клякс и, в частности, пергаментного зерна.

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



История победы на международном конкурсе по распознаванию документов команды SmartEngines

Пример имитации «зернистого пергамента» с помощью искажения Процесс оптимизации архитектуры нейронной сети и гиперпараметров слоев проводился по нескольким направлениям:

  • Вариация текущей сетевой архитектуры по глубине/количеству слоев/количеству фильтров и т.д.
  • Тестируем другие архитектуры для решения нашей задачи (VGG, Resnet и т. д.).

    Для проверки возможности использования уже обученных нейронных сетей были исследованы сети архитектур VGG и Resnet. Использовались два подхода:

    1. Вектор признаков был записан из выходных данных различных слоев каждой сети, которые использовались в качестве входных данных полносвязной нейронной сети, обученной решать задачу классификации.

      В этом случае обучалась только «окончательная» полносвязная нейронная сеть, а сети, предоставляющие функции, оставались неизменными.

      Для уменьшения размерности входного пространства полносвязной сети использовалось разложение по сингулярным значениям.

    2. Второй подход заключался в том, что мы заменили последние N слоев одной из сетей (например, VGG) на полносвязные и переобучили всю сеть.

      Те.

      просто использовал готовые веса в качестве начальной инициализации.

В целом надо сказать, что оба подхода дали определённые результаты, но по качеству и надёжности уступали подходу обучения сети U-net с нуля.



Процесс ансамбля

Следующий этап создания итогового решения – построение ансамбля из нескольких решений.

Для построения ансамбля мы использовали 3 сети U-net разной архитектуры, обученные на разных наборах данных, и один необученный метод бинаризации, который использовался только на краях изображения (для обрезки краев страниц).

Мы попытались построить ансамбль двумя разными способами:

  • Усредняя ответы.

  • Взвешенная сумма ответов.

    Вклад в окончательный ответ определялся качеством работы на проверочном наборе.

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

Несмотря на то, что в этом соревновании алгоритм не имел ограничений по времени, наша совесть не позволяла нам принять такое решение.



Выбор окончательного решения

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

Окончательное решение было выбрано на основе этой статистики.

Получилась ровно одна сеть U-net, хорошо обученная с использованием всего описанного выше + отсечка по порогу.

Одним из возможных способов предоставить решение организаторам было создание Docker-контейнера с образом решения.

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

Например, изначально мы прогоняли каждое изображение по сетке несколько раз:

  • нормальное изображение
  • зеркальный
  • перевернутый
  • слегка уменьшенный
  • слегка увеличенный
Затем результаты усреднялись.

Как показали последующие результаты, даже без подобных ухищрений качества сети хватило, чтобы занять первое место на обоих тестовых наборах =)

Результаты

В этом году в соревнованиях приняли участие 18 команд со всего мира.

Были участники из США, Китая, Индии, Европы, Ближнего Востока и даже Австралии.

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

При этом наблюдалась большая вариативность типов архитектур используемых нейронных сетей.

Использовались как полносвязные, сверточные, так и рекуррентные варианты со слоями LSTM. Например, фильтрация и морфология использовались в качестве этапа предварительной обработки.

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

Ниже приведены окончательные результаты измерений раствора.

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

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

официальный сайт конкурса ).

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

Краткое описание метода Счет ФМ Фпс ПСНР ДДР
1 Наш метод (сеть U-net) 309 91.01 92.86 18.28 3.40
2 FCN (архитектура, аналогичная VGG) + постфильтрация 455 89.67 91.03 17.58 4.35
3 Ансамбль из 3 DSN, с 3-уровневым выходом, работа над патчами разного масштаба 481 89.42 91.52 17.61 3.56
4 Ансамбль из 5 ФЦН – вход: патчи разного масштаба + бинаризация по методу Хоу + знаки РД.

529 86.05 90.25 17.53 4.52
5 Аналогично предыдущему методу, но добавил постобработку CRF 566 83.76 90.35 17.07 4.33
.

.

.

.

.

.

.

7 Морфология + Хау + постобработка 635 89.17 89.88 17.85 5.66
Оцу 77.73 77.89 13.85 15.5
Саувола 77.11 84.1 14.25 8.85
Лучший метод, никак не использующий нейронные сети, занял 7 место.

Ниже мы демонстрируем работу нашего алгоритма на ряде тестовых изображений.



История победы на международном конкурсе по распознаванию документов команды SmartEngines



История победы на международном конкурсе по распознаванию документов команды SmartEngines



История победы на международном конкурсе по распознаванию документов команды SmartEngines



История победы на международном конкурсе по распознаванию документов команды SmartEngines



История победы на международном конкурсе по распознаванию документов команды SmartEngines



История победы на международном конкурсе по распознаванию документов команды SmartEngines



История победы на международном конкурсе по распознаванию документов команды SmartEngines



История победы на международном конкурсе по распознаванию документов команды SmartEngines



История победы на международном конкурсе по распознаванию документов команды SmartEngines



История победы на международном конкурсе по распознаванию документов команды SmartEngines

Ну и сертификат, который нам вручили на конференции ICDAR 2017 в Японии:

История победы на международном конкурсе по распознаванию документов команды SmartEngines

Теги: #Обработка изображений #Машинное обучение #Алгоритмы #конкурсы #бинаризация #python #нейронные сети #python #Интеллектуальный анализ данных #Обработка изображений #Машинное обучение

Вместе с данным постом часто просматривают: