CRNN¶
CRNN (Convolutional Recurrent Neural Network, свёрточная рекуррентная нейронная сеть) — это архитектура глубокого обучения, предназначенная для распознавания последовательностей из изображений, в частности для задач оптического распознавания символов (OCR) и распознавания рукописного текста. CRNN объединяет в себе свёрточные слои для извлечения пространственных признаков, рекуррентные слои для моделирования последовательностей и механизм Connectionist Temporal Classification (CTC) для выравнивания и декодирования выходных данных без необходимости предварительной сегментации.
¶История и предпосылки
До появления CRNN распознавание текста в изображениях обычно требовало многоэтапных пайплайнов: детекция отдельных символов, их сегментация и последующая классификация. Такой подход был чувствителен к качеству изображения, шрифтам и углам наклона. В 2015 году группа исследователей из Китайского университета Гонконга (Baoguang Shi, Xiang Bai, Cong Yao) предложила единую сквозную архитектуру, которая объединила извлечение признаков, моделирование последовательности и декодирование в одной модели. Результаты были опубликованы в статье «An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition» (2015). Архитектура получила название CRNN и быстро стала стандартом для задач распознавания текста произвольной длины.
¶Архитектура
CRNN состоит из трёх основных компонентов, работающих последовательно:
¶Свёрточные слои (Convolutional Layers)
Первый блок — это свёрточная нейронная сеть (CNN), которая принимает на вход изображение (например, текстовую строку) и извлекает из него пространственные признаки. Обычно используются стандартные свёрточные слои с активацией ReLU, слои подвыборки (max-pooling) и пакетной нормализации (batch normalization). Выходом этого блока является трёхмерный тензор признаков, где высота (H) часто уменьшается до 1 за счёт пулинга, а ширина (W) сохраняется пропорционально длине последовательности. Таким образом, каждый столбец этого тензора представляет собой вектор признаков, соответствующий определённому горизонтальному положению в изображении.
¶Рекуррентные слои (Recurrent Layers)
Второй блок — рекуррентная нейронная сеть (RNN), обычно на основе двунаправленных LSTM (Bi-LSTM) или GRU. Этот блок обрабатывает последовательность векторов признаков, полученных от CNN. Рекуррентные слои моделируют контекстные зависимости между соседними столбцами, что критически важно для распознавания символов, особенно в случае размытых или частично перекрытых знаков. Двунаправленная архитектура позволяет учитывать информацию как слева направо, так и справа налево, улучшая точность.
¶Механизм CTC (Connectionist Temporal Classification)
Третий блок — это слой CTC, который выполняет декодирование последовательности вероятностей, выданной RNN, в итоговую строку текста. CTC не требует предварительного выравнивания между входными кадрами и выходными символами. Он вводит специальный «пустой» токен (blank), который позволяет модели делать паузы между повторяющимися символами. На этапе обучения CTC вычисляет вероятность всех возможных путей выравнивания и минимизирует логарифмическую вероятность правильной последовательности. На этапе инференса используется жадный поиск (выбор наиболее вероятного символа на каждом шаге) или beam search для нахождения наиболее вероятной последовательности.
¶Применение
CRNN нашла широкое применение в задачах, где требуется распознавание последовательностей из изображений:
¶Оптическое распознавание символов (OCR)
CRNN является основой многих современных OCR-систем, как для печатного, так и для рукописного текста. Она эффективно распознаёт текст на документах, вывесках, этикетках, номерных знаках автомобилей и в других сценариях. В России CRNN используется в системах автоматизации документооборота, распознавания паспортных данных и обработки банковских чеков.
¶Распознавание текста на сцене (Scene Text Recognition)
В отличие от сканированных документов, текст на фотографиях реальных сцен может быть искажён перспективой, иметь разный цвет, шрифт и фон. CRNN, обученная на разнообразных данных, способна справляться с такими условиями. Это применяется в системах дополненной реальности, робототехнике и анализе изображений с камер наблюдения.
¶Распознавание музыкальных нот
Архитектура CRNN адаптируется для распознавания последовательностей нот из изображений нотных партитур. В этом случае CNN выделяет признаки нотных знаков, а RNN моделирует их временную последовательность.
¶Биометрические системы
CRNN используется для распознавания подписей и рукописного ввода, где требуется высокая точность идентификации последовательности штрихов.
¶Преимущества и недостатки
¶Преимущества
- Сквозное обучение: модель обучается от изображения к тексту без ручной сегментации.
- Устойчивость к длине последовательности: CRNN может обрабатывать строки произвольной длины, так как RNN и CTC не требуют фиксированного размера входа.
- Контекстная зависимость: двунаправленные LSTM позволяют учитывать соседние символы, что повышает точность.
- Относительная простота реализации: архитектура хорошо поддерживается в современных фреймворках (PyTorch, TensorFlow, Keras).
¶Недостатки
- Чувствительность к искажениям: сильные перспективные искажения, кривые строки или нестандартные шрифты могут снижать точность. Для таких случаев требуются предварительные этапы коррекции (например, пространственная трансформация).
- Зависимость от качества изображения: размытие, низкое разрешение или зашумлённость ухудшают работу CNN.
- Вычислительная сложность: рекуррентные слои последовательны по своей природе, что затрудняет параллелизацию на GPU по сравнению с чисто свёрточными архитектурами.
- Ограниченная память: LSTM имеют ограниченную ёмкость для длинных последовательностей (более 100 символов), хотя на практике это редко является проблемой.
¶Развитие и современные альтернативы
С момента появления CRNN были предложены улучшения и альтернативы. Например, архитектура ASTER (Attentional Scene Text Recognizer) добавила механизм внимания и модуль пространственной трансформации для коррекции искажений. SATRN (Self-Attention based Text Recognition Network) заменил RNN на трансформеры, что позволило лучше обрабатывать длинные последовательности благодаря механизму самовнимания. Однако CRNN остаётся популярной базовой архитектурой благодаря своей эффективности и простоте. В российских исследовательских и коммерческих проектах (например, в системах распознавания документов компаний ABBYY, Smart Engines) используются как классические CRNN, так и их модификации.
¶Интересные факты
- Оригинальная статья CRNN 2015 года набрала более 3000 цитирований (по данным Google Scholar на 2024 год) и считается одной из основополагающих в области распознавания текста.
- Архитектура CRNN может быть применена не только к тексту, но и к распознаванию последовательностей любых визуальных объектов, например, штрих-кодов или дорожных знаков.
- В некоторых реализациях CRNN используется одномерная свёртка вместо рекуррентных слоёв для ускорения инференса, что приводит к архитектуре, называемой CRNN-1D.
¶Источники
- Shi, B., Bai, X., & Yao, C. (2015). An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition. arXiv preprint arXiv:1507.05717.
- Graves, A., Fernández, S., Gomez, F., & Schmidhuber, J. (2006). Connectionist temporal classification: labelling unsegmented sequence data with recurrent neural networks. Proceedings of the 23rd International Conference on Machine Learning.
- Shi, B., Yang, M., Wang, X., Lyu, P., Yao, C., & Bai, X. (2018). ASTER: An Attentional Scene Text Recognizer with Flexible Rectification. IEEE Transactions on Pattern Analysis and Machine Intelligence.
- Lee, J., Park, S., Baek, J., & Kim, S. (2020). On Recognizing Texts of Arbitrary Shapes with 2D Self-Attention. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →

