Автор: Булат Бадамшин Редактура: Игорь Иткин
Задача распознавания текста на фотографии — важная задача во многих технологических и бизнес-процессах: от анализа сканов документов до автономного вождения.
Глобально можно выделить два основных этапа ее решения:
В этой статье мы поговорим о втором этапе, а именно — о Scene text recognition (STR).
Scene text recognition (STR) — распознавание текста на фотографиях реального мира.
На рисунке 1 представлены примеры одного из популярных датасетов STR — это ICDAR2013 и ICDAR2015.
Рисунок 1. Семплы с разметкой из датасетов ICDAR2013 и ICDAR2015
На фотографиях выше мы видим, что текст бывает сильно искажен (вытянут в длину или ширину, имеет непрямоугольную форму и др.), по-разному ориентирован в пространстве, размещен на различных сложных фонах. Он даже может быть рукописным. Это все усложняет задачу его распознавания.
Самые популярные модели распознавания текста преимущественно базируются на визуальных энкодерах: CRNN, VitSTR, TrOCR и др. Но задача распознавания текста мультимодальна — у нас есть изображение и текст. Поэтому применение мультимодальной модели, Visual-language model (VLM), кажется вполне разумным 🙂
Также подумали и авторы модели CLIP4STR. Они решили сделать новый бейзлайн для STR-задач на основе самой популярной VLM-модели — CLIP.
<aside> 💡 CLIP [подробный разбор архитектуры], или Contrastive Language-Image Pre-training — модель от OpenAI, обученная на огромном датасете пар изображений и текста. Модель с двумя энкодерами для текста и картинок, которые можно использовать для генерации соответствующих качественных фичей. Их затем можно применять для своих даунстрим задач.
</aside>
Идея CLIP4STR довольно проста: почему бы не использовать для распознавания текста в реальном мире модель, обученную на парах “текст — картинка”, следовательно, имеющую “сильные” энкодеры для представления обеих модальностей. Действительно, можно применять картиночный энкодер CLIP для получения эмбеддингов изображения с текстом и из них генерировать какой-то текст (как, например, это делается в ViTSTR), а затем использовать текстовый энкодер CLIP для исправления ошибок в тексте с предыдущего этапа.
Если проанализировать слой внимания визуального энкодера CLIP (см. рисунок 2), можно увидеть: на семплах из датасета STR CLIP в тех местах, где на фото есть текст, веса внимания больше. То есть CLIP может выступать как хороший бэкбон для задачи распознавания текста.
Рисунок 2. Веса внимания CLIP-ViT-B для семплов из датасета STR
Рисунок 2. Веса внимания CLIP-ViT-B для семплов из датасета STR
Перед более подробным рассмотрении CLIP4STR давайте вспомним, какие SOTA-модели существуют для задачи распознавания текста.
В основном модели STR делятся на два вида: контекстно-независимые и контекстно-зависимые.