Обнаружение и распознавание текста (также известное как определение текста) на изображении — очень полезная и сложная проблема, над которой исследователи глубокого обучения работают уже много лет из-за ее практического применения в таких областях, как сканирование документов, навигация роботов, поиск изображений и т. д. До сих пор почти все методы состояли из двух отдельных этапов: 1) Обнаружение текста 2) Распознавание текста. Обнаружение текста просто определяет, где находится текст на данном изображении, и по этим результатам распознавание текста фактически распознает символы из текста. Из-за этих двух этапов для обучения требовалось две отдельные модели, и, следовательно, время прогнозирования было немного выше. Из-за большего времени тестирования модели не подходили для приложений реального времени. В отличие от этого, FOTS решает эту двухэтапную проблему, используя унифицированную сквозную обучаемую модель/сеть, одновременно обнаруживая и распознавая текст. Он использует общие функции свертки между задачами обнаружения и распознавания текста, которые изучают более общие функции и сокращают время тестирования, так что это может быть полезно в приложениях реального времени, таких как OCR из видеопотоков с более высоким FPS. FOTS также улучшает обнаружение текста в сценах с выровненным/повернутым текстом благодаря своему специальному компоненту под названием «RoIRotate» (Поворот области интереса), который поворачивает выровненный текст, сохраняя соотношение сторон одинаковым, а затем применяет распознавание текста.

Содержание

  1. Бизнес-проблема
  2. постановка задачи машинного обучения
  3. Потери, используемые для решения проблемы
  4. Источник данных и обзор
  5. ЭДА
  6. Генерация данных
  7. Модель
  8. Обучение модели
  9. Развертывание
  10. Выводы
  11. Будущая работа
  12. использованная литература

1. Бизнес-проблема

Чтение текста в естественных изображениях привлекает все большее внимание в сообществе компьютерного зрения. И поскольку эта проблема представляет собой комбинацию компьютерного зрения и НЛП, она имеет множество практических приложений в анализе документов, понимании сцены, навигации роботов, поиске изображений, самоуправляемых автомобилях и т. д. . Это также одна из самых сложных задач из-за разных шрифтов, размеров/масштабов и выравнивания текста в реальных изображениях. Кроме того, это должно быть достигнуто в ограниченные сроки. Эта проблема пытается решить обнаружение текста за секунды.

2. Постановка задачи машинного обучения

Задачу извлечения текста из естественных изображений можно сформулировать как двухэтапный процесс: 1) Обнаружение/локализация текста 2) Распознавание текста. Обнаружение текста можно дополнительно сформулировать как регрессию ограничивающей рамки и попиксельную классификацию текста (независимо от того, является ли пиксель частью текста или нет). FOTS объединяет оба этапа и позволяет обучать сквозную модель для точного обнаружения и распознавания текста с минимальными потерями.

3. Потери, используемые для решения задачи

Обнаружение текста имеет две потери: потеря кубиков и потеря IoU

Проигрыш в кости

Понимание потери кубиков для обнаружения четких границ. Почему потеря кубиков — гораздо лучшая альтернатива, чем потеря перекрестной энтропии? При использовании перекрестной потери энтропии статистическое распределение меток играет большую роль в точности обучения. Чем несбалансированнее распределения меток, тем сложнее будет обучение. Хотя взвешенная потеря перекрестной энтропии может облегчить эту трудность, улучшение не является значительным, и внутренняя проблема потери перекрестной энтропии не решена. При кросс-энтропийных потерях потери рассчитываются как средние потери на пиксель, а потери на пиксель вычисляются дискретно, без знания того, являются ли его соседние пиксели границами или нет. В результате потеря перекрестной энтропии учитывает потери только в микросмысле, а не в глобальном масштабе, чего недостаточно для прогнозирования на уровне изображения. Теперь Dice Loss учитывает, является ли пиксель граничным или нет.

Здесь pi представляет собой предсказанную граничную рамку, а g_i — это основная истина. Значение pi и g_i будет либо 1, либо 0, что означает, является ли пиксель граничным или нет. Таким образом, знаменатель — это общий граничный пиксель как предсказанной, так и наземной истины, а числитель — сумма правильно предсказанных пикселей, потому что он увеличивается только тогда, когда pi и g_i совпадают с 1.

Потеря долговой расписки

В задаче обнаружения объектов мы пытаемся помочь компьютеру предсказать объекты и их местоположение в заданных данных изображения. Для этого мы пытаемся сформулировать механизм, имитирующий поведение «локализации» объекта, заключая его в «прямоугольную» нотацию, которую обычно называют ограничивающей рамкой. Эти ограничивающие рамки, обычно аннотированные как 4 точки значения, представляют собой либо конкретные угловые/центральные точки координат ограничивающей рамки, либо ее ширину/высоту. Обычный формат аннотации: (слева, сверху, справа, снизу), (слева, сверху, ширина, высота) или (center_x, center_y, ширина, высота). Таким образом, задача глубокого обучения для обнаружения объектов предназначена специально для прогнозирования значений, связанных с этими точками, путем их регрессии для части локализации. Ранее потери, основанные на норме Ln, использовались в качестве функции стоимости. Так, Резатофиги и соавт. В 2019 году был предложен первый подход к регрессионным потерям ограничивающей рамки на основе IoU. Формула была:

Распознавание текста имеет потери — CTC Loss

Потеря СТС

CTC Loss: CTC расшифровывается как коннекционистская временная классификация. как модель согласовывает ввод и вывод, чтобы найти каждый символ на изображении и превратить их в текст? Вот где CTC вступает в игру. Функция стоимости CTC позволяет RNN генерировать выходные данные, например: CTC ввела пустой токен между символами, чтобы разделить их. Это делается для разделения отдельных символов, чтобы повторяющиеся символы, у которых нет пустого токена, сворачивались в один символ. Чтобы вычислить потерю CTC, на каждой отметке времени сеть выводит распределения вероятностей по возможным значениям меток. Если мы выберем случайным образом любую метку независимо друг от друга, какова вероятность того, что это даст выходную последовательность, которая рухнет на истину? Потеря CTC представляет собой отрицательный логарифм этой вероятности.

4. Источник данных и обзор

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

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

Набор данных ICDAR-2015: Это набор данных реального мира, содержащий изображения с носимых камер. Этот набор данных сравнительно очень мал (всего 1000 обучающих изображений) по сравнению с набором данных SynthText.

Поскольку набор данных SynthText достаточно велик, в документе предлагается обучить на нем всю модель, а затем адаптировать изображения реального мира, модель можно точно настроить на наборе данных ICDAR-2015.

5. Исследовательский анализ данных

Сначала рассмотрим набор данных SynthText:

Наблюдения:

  1. Случайный текст, написанный в случайном месте изображения.

2. Размер пикселя для каждого изображения разный.

Начнем с ширины изображения

Наблюдения:

  1. Большинство изображений имеют ширину от 300 до 500.
  2. Есть несколько изображений, которые имеют ширину 600 и более.
  3. Существует менее 20 процентных изображений, ширина которых меньше 315.

Теперь функция высоты

Наблюдения:

  1. Большинство изображений имеют высоту 600 и более.
  2. Есть несколько изображений, высота которых меньше 400.

Функция изменения размера:

Наблюдения:

  1. Большинство изображений имеют размер от 20 до 80.
  2. Средний размер всех изображений 40 байт.
  3. Очень мало изображений, размер которых превышает 80.

Визуализация ограничивающих рамок на изображениях

EDA для ограничивающих рамок

Наблюдения:

  1. Большинство изображений имеют количество ограничительных рамок менее 15.
  2. Около 95 процентов изображений имеют менее 20 ограничивающих рамок.
  3. Среднее количество ограничивающих рамок на изображение составляет примерно 9.

Ширина ограничивающей рамки:

Наблюдения:

  1. Большинство ограничивающих рамок имеют ширину от 50 до 200.
  2. Около 90 процентов изображений имеют ширину ограничивающей рамки менее 180.
  3. Средняя ширина ограничивающих рамок составляет ок. 80

Высота ограничивающей рамки:

Наблюдения:

  1. Большинство ограничивающих прямоугольников имеют высоту от 20 до 50.
  2. Существует несколько ограничивающих прямоугольников, высота которых превышает 50.
  3. Средняя ширина ограничивающих рамок составляет ок. 30

Размер ограничивающей рамки:

Наблюдения:

  1. Большинство ограничивающих прямоугольников имеют площадь менее 20000.
  2. Существует несколько ограничивающих прямоугольников, площадь которых превышает 20000.
  3. Средняя площадь ограничивающих рамок составляет ок. 5000

EDA в наборе данных ICDAR 15

Наблюдения:

В этом наборе данных icdar все изображения имеют ширину 720 и высоту 1280. Кроме того, это изображения реального мира, которые имеют размытый фон и не очень четкие по сравнению с набором данных SynthText.

Визуализация изображений с помощью ограничивающих рамок

Количество ограничивающих рамок на изображение:

Наблюдения:

  1. Большинство ограничивающих рамок на изображение находятся в диапазоне от 1 до 25.
  2. Около 90 процентов соединительных коробок имеют показатель ниже 30.
  3. Среднее количество ограничивающих рамок на изображение составляет приблизительно 8.

Ширина ограничивающей рамки

Наблюдения:

  1. Большинство ограничивающих прямоугольников имеют ширину от 30 до 100.
  2. Около 95 процентов соединительных коробок имеют показатель ниже 150.
  3. Средняя ширина всех изображений составляет ок. 60

Высота ограничивающей рамки:

Наблюдения:

  1. Большинство ограничивающих прямоугольников имеют высоту от 10 до 60.
  2. немногие имеют ширину более 60.
  3. Средняя высота всех ограничивающих прямоугольников составляет ок. 40
  4. Большинство ограничивающих прямоугольников имеют высоту почти одинаковой высоты.

Размер ограничивающей рамки:

Наблюдения:

  1. Большинство ограничивающих прямоугольников имеют размер 5000.
  2. Немногие имеют ширину более 15000.
  3. Почти все ограничивающие рамки имеют одинаковый размер.

6. Предварительная обработка данных/генерация достоверных данных

ГЕНЕРАТОР ДАННЫХ ДЛЯ ОБНАРУЖЕНИЯ ТЕКСТА

Чтобы обучить компонент обнаружения текста модели FOTS, необходимо создать следующие маски/изображения истинности земли для каждого изображения истинности земли.

  1. Карта оценки: канал изображения, показывающий, является ли пиксель частью текста или фона для каждого пикселя в данном изображении. Вот пример карты наземной истинности и соответствующего изображения:
  2. Geo-Map: географическая карта содержит 5 масок/каналов: для каждого пикселя, который является частью текста, первые 4 канала предсказывают его расстояния до верхней, нижней, левой и правой сторон ограничивающей рамки, содержащей этот пиксель, а последний канал предсказывает ориентацию соответствующего ограничивающего прямоугольника. Вот визуализация этих 5 каналов геокарты с соответствующей наземной правдой:
  3. Обучающая маска: это одноканальное изображение, которое используется для игнорирования очень маленьких ограничивающих рамок и ограничивающих рамок без транскриптов процесса обучения и расчета потерь.

Поэтому перед обучением модели необходимо сгенерировать следующие исходные данные: 1) карту результатов, 2) географическую карту, 3) обучающую маску, 4) текстовые расшифровки, 5) список ограничивающих рамок.

ГЕНЕРАТОР ДАННЫХ ДЛЯ РАСПОЗНАВАНИЯ ТЕКСТА

В модели распознавания текста мы создали 2 генератора (обучение и тестирование). Мы преобразовали изображения в размер (64,128,3) и преобразовали слова для конкретного изображения слова в вектор размера 23. Здесь для этих векторов мы создали словарь, который содержит все возможные символы, которые могут составлять слово.

7. Моделирование

Общая архитектура ВОТС

Общие свертки:

Для извлечения функций высокого уровня из изображений используются общие свертки, которые предварительно обучены в сети изображений и используют Resnet50 в качестве основы. Общие свертки — это слои свертки, которые имеют одинаковый вес среди них. На изображении выше показана архитектура общих сверток, в которой первые блоки оранжевого цвета содержат один слой свертки, за которым следует слой максимального пула, за которым следуют слои resnet50. Другие оранжевые блоки содержат единственную архитектуру слоев resnet50. Светло-зеленые блоки — это выходные объекты соответствующих блоков. Блоки синего цвета — это блоки Deconv, которые выполняют деконволюцию соответствующих выходных объектов. Поскольку в изображениях естественной сцены много небольших текстовых полей, мы масштабируем (расширяем) карты объектов с 1/32 до 1/4 размера исходного входного изображения в общих свертках. т. е. повышает разрешение входных функций и увеличивает размер изображений или функций. Функция активации, используемая во всей архитектуре, называется ReLu. Также обратите внимание, что объекты низкого уровня напрямую связаны с картами объектов высокого уровня, которые показаны черными стрелками на приведенной выше диаграмме.

Ветвь обнаружения текста:

Для ветви обнаружения текста идея была взята из исследовательской работы точный детектор текста сцены (EAST), в которой ветвь обнаружения текста использует полностью сверточную сеть в качестве детектора текста. Этот сверточный слой имеет 5 каналов для карты результатов и географической карты. Как только ограничивающие рамки будут предложены ветвью текстового детектора, NMS с учетом местоположения (не максимальное подавление) будет использоваться для получения ограничивающей рамки с самым высоким IoU по ограничивающей рамке наземной истины.

Вот фрагмент кода, реализующий уровень обнаружения.

Код обнаружения потери ветки:

RoIRotate (поворот интересующей области):

RoIRRotate применяет преобразование к ориентированным/выровненным областям объектов для получения карт объектов с выравниванием по осям. ROI использует билинейную интерполяцию для вычисления выходных значений. Эта операция позволяет избежать рассогласования между областью интереса и извлеченными функциями, а также делает длину выходных функций переменной, что больше подходит для распознавания текста. Этот процесс можно разделить на два этапа. Во-первых, параметры аффинного преобразования вычисляются через предсказанные или наземные координаты истинности текстовых предложений. Затем к общим картам признаков для каждого региона применяются аффинные преобразования и получаются канонические горизонтальные карты признаков текстовых регионов.

Вот интуитивно понятная визуализация процесса RoIRotate.

Обратите внимание, что приведенное выше изображение предназначено только для визуализации. Фактическая реализация RoIRotate работает с картами объектов, извлеченными с помощью общих сверток, а не с необработанными изображениями.

Ветвь распознавания текста:

Ветвь распознавания текста предназначена для прогнозирования текстовых меток с использованием признаков региона, извлеченных с помощью общей свертки и преобразованных RoIRotate. Принимая во внимание длину последовательности меток в текстовой области, входные признаки LSTM уменьшаются только вдвое за счет общей свертки исходного изображения по оси ширины. В противном случае различимые черты в области компактного текста, особенно черты узких символов, будут устранены. Наша ветвь распознавания текста включает в себя последовательную свертку наподобие VGG, коллекцию, уменьшающуюся только по оси высоты, двунаправленный LSTM, полносвязный и окончательный CTC-декодер. Эта часть в основном похожа на CRNN, и ее структура показана на рисунке ниже.

Ниже приведен код отделения признания:

Код потери CTC:

Вышеупомянутая архитектура FOTS работает следующим образом: первое изображение подается в общие свертки, из которых извлекаются общие функции. Эти общие функции передаются в ветвь обнаружения текста, где мы предсказываем и обнаруживаем ограничивающие рамки для текста в изображении. Оператор RoI Rotate, который извлекает функции текстового предложения, эти функции затем передаются в ветвь распознавания текста, которая состоит из кодера рекуррентной нейронной сети (RNN) и декодера временной классификации соединений (CTC) для распознавания и прогнозирования текста, наконец, результат обнаружения текста ветвь и ветвь распознавания текста объединяются в изображение с предсказанными ограничивающими рамками и предсказанным текстом ограниченных рамок. Поскольку все потери, используемые для моделей в этой сети, дифференцируемы, вся сеть может быть обучена от начала до конца.

Теперь, когда мы поняли, что такое FOTS, давайте спросим, ​​зачем использовать FOTS для реализации TEXT Spotting?

Во-первых, FOTS является БЫСТРЫМ по сравнению с другими методами, так как FOTS реализует как обнаружение, так и распознавание совместно. Кроме того, наблюдение за распознаванием текста заставляет модель учитывать мелкие детали символов, FOTS изучает семантическую информацию среди разных символов в одном слове, которые имеют разные шаблоны. Это также увеличивает разницу между персонажами и фоном, которые имеют похожие узоры.

8. Модельное обучение

Поскольку набор данных SynthText очень велик, то есть 800 тыс. изображений (41 ГБ), обучение нашей модели на всех данных невозможно из-за меньшей вычислительной мощности. Поэтому в качестве решения этой проблемы мы случайным образом выбираем 15 000 изображений из этого набора данных и используем их для обучения нашей модели.

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

Во время обучения мы использовали различные обратные вызовы Tensorflow, такие как:

  1. Обратный вызов Reduce On Plateau: используется для снижения скорости обучения, когда веса нашей модели застревают на локальных минимумах.
  2. Обратный вызов проверки указателя модели: используется для сохранения веса модели во время обучения.
  3. Обратный вызов тензорной доски: используется для визуализации потерь и весов слоев в тензорной доске.

Вот несколько прогнозов модели:

9. Развертывание

10. Выводы:

  1. Мы видим, что модель обнаружения все еще работает хорошо, но модель распознавания работает не так хорошо.
  2. Это связано с тем, что мы взяли только 15 тыс. изображений из 800 тыс. изображений из SynthText для обнаружения и 10 тыс. изображений для распознавания, мы не обучали наши модели всем данным SynthText, поскольку он занимает 41 ГБ, что требует высокой вычислительной мощности и из-за меньшей вычислительной мощности. и ресурсы используют столько данных.
  3. И модели обнаружения, и модели распознавания можно обучать на большем количестве данных, чтобы обеспечить лучшие результаты.

11. Будущая работа:

  1. Будут использоваться полные данные SynthText для обучения как части обнаружения, так и распознавания.
  2. Работаем над частью обнаружения для создания более точных ограничивающих рамок.
  3. Организация кода в более читабельной форме.
  4. Можно использовать слой метода NLP для правильного декодирования слова на уровне распознавания.

12: Ссылки:

https://arxiv.org/pdf/1801.01671.pdf







Вы можете найти полный код на моем Github здесь.

Рад связаться с вами на linkedin 😃