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

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

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

Данная статья является частью цикла статей об OCR и продолжает тему детекции текста, затронутую в посте про CRAFT. Рекомендуем ознакомиться с ним перед прочтением статьи.

Все статьи из цикла про OCR:

Введение

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

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

Авторы DB (Differentiable Binarization, дифференцируемая бинаризация) нашли решение проблемы, пойдя от обратного. Вместо улучшения постпроцессинга они предложили улучшать сами бинарные маски. Однако напрямую этого сделать нельзя, так как бинаризация — пороговая (не дифференцируемая) функция. Тогда ресёрчеры воспользовались следующим математически трюком: апроксимировали пороговую функцию гладкой (ниже об этом будет рассказано подробнее). Таким образом, теперь мы предсказываем не только вероятности символов, но и пороги для их бинаризации. За счёт этого существенно упрощается последующий постпроцессинг и, следовательно, значительно уменьшается количество ошибок при детекции, а также её скорость.

Рисунок 1. Пайплайн детекции текста (синие стрелочки) и пайплайн DB (красные стрелочки). Пунктирные стрелки обозначают операции только на инференсе; сплошные стрелки — операции как при обучении, так и при инференсе

Рисунок 1. Пайплайн детекции текста (синие стрелочки) и пайплайн DB (красные стрелочки). Пунктирные стрелки обозначают операции только на инференсе; сплошные стрелки — операции как при обучении, так и при инференсе

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

Основу архитектуры DB составляет классический **FPN-like бэкбон**, который эффективно собирает многоуровневые фичи за счёт bottom-up и top-down блоков. Полученные таким образом признаки разного масштаба приводятся к одному размеру с помощью transposed свёрток и конкатенируются. С полученной итоговой картой признаков мы и будем работать далее.

Затем нам нужно предсказать вероятности символов. В голове CRAFT у нас находились для этого два слоя — region score (для предсказания центров символов) и affinity score (для предсказания центров промежутков между символами). В DB у нас также две карты. Если первая — аналог region score (карта вероятностей, probability map), то вторая — карта обучаемых порогов (threshold map). На выходе, накладывая threshold map на probability map, мы формируем итоговую бинарную маску, из которой будем извлекать полигоны символов.

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

Рисунок 2. Архитектура модели DB: «pred» состоит из свёрток 3×3 и двух transposed свёрток с шагом 2. Значения «1/2», «1/4», ... и «1/32» указывают на соотношение размера карты признаков по сравнению с размером входного изображения

Рисунок 2. Архитектура модели DB: «pred» состоит из свёрток 3×3 и двух transposed свёрток с шагом 2. Значения «1/2», «1/4», ... и «1/32» указывают на соотношение размера карты признаков по сравнению с размером входного изображения