Автор: Герман Петров

Редактура: Булат Бадамшин

Пререквизиты

Эта статья продолжает вводную статью про OCR и дополняет статью про детекторы текста на трансформерах. Рекомендуем сначала ознакомиться с вводной статьёй, затем прочитать эту, а третьей — статью о детекторах текста на трансформерах (если вдруг вы ещё не знакомились с ней 🙂).

Введение

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

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

Для решения первой проблемы исследователи из ClovaAI перешли от классической схемы детекции на уровне слов (word-level detection) к детекции на уровне символов (character-level detection). Но здесь возникла следующая проблема: большинство датасетов содержат разметку только на уровне слов. Привлечь разметчиков — плохая идея, поскольку требует существенных временных и материальных затрат. Авторы статьи предложили простое и элегантное решение — получать character-level разметку из синтетических данных (где она бесплатная) и в процессе обучения переносить её на реальные данные. Подробнее об этом будет сказано в блоке «Weakly-supervised обучение» 🙂

Чтобы решить вторую проблему, авторы используют U-net like архитектуру (то есть сегментацию с последующим получением полигональных боксов). Она позволяет лучше работать с фичами разного масштаба за счёт skip connections.

Архитектура CRAFT

Архитектура CRAFT устроена просто. В качестве бэкбона используется VGG-16. В свою очередь промежуточные слои бэкбона вместе со skip connections и UpConv-блоками образуют U-net часть для сбора локальных визуальных фичей. На выходе мы имеем два канала: один для предсказания Region Score, другой — для Affinity Score (далее разберём их подробнее).

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

Рисунок 1. Архитектура CRAFT

Рисунок 1. Архитектура CRAFT

Генерация Ground Truth Labels

Итак, у нас есть два выходных канала — Region Score и Affinity Score. Для каждого изображения в тренировочной выборке мы создаём следующие ground truth labels:

Рисунок 2. Изображения heatmap для Region Score и Affinity Score

Рисунок 2. Изображения heatmap для Region Score и Affinity Score

Отметим, что маски содержат именно вероятности, полученные с помощью Gaussian Heatmap, а не дискретные значения, как в случае сегментации. Таким образом, мы гибче работаем с рамками, которые не являются жёстко ограниченными.