Изменения

Перейти к: навигация, поиск

Распознавание изогнутого текста

1313 байт добавлено, 14:26, 23 января 2021
Нет описания правки
<!--{{В разработке}}-->
'''[[:Распознавание_текста_на_изображении|Распознавание текста]]''' {{---}} важная задача машинного обучения, решение которой позволит получать огромное количество информации из окружающего мира без участия человека. '''Распознавание изогнутого текста''', в частности, одна из проблем, лежащих на пути решения данной задачи. <br>
=== TextSnake (2018) ===
[[file:TextSnakeRepresentation.png|300px|left|thumb|Рисунок 1. Как TextSnake представляет текст<ref name="textsnake">[https://openaccess.thecvf.com/content_ECCV_2018/papers/Shangbang_Long_TextSnake_A_Flexible_ECCV_2018_paper.pdf Shangbang Long, Jiaqiang Ruan, Wenjie Zhang, Xin He, Wenhao Wu, Cong Yao, "TextSnake: A Flexible Representation for Detecting Text of Arbitrary Shapes" (2018)]</ref>]]
TextSnake отличается уникальным способом представления области с текстом (см. Рисунок 1). Математически, экземпляр текста <math>t</math>, состоящий из нескольких элементов, может быть представлен как упорядоченный список <math>S(t)</math>. <math>S(t) = \{D_0, D_1, ... , D_i , ... , D_n\}</math>, где <math>D_i</math> {{---}} это <math>i</math>-й диск, а <math>n</math> {{---}} количество дисков. Каждый диск <math>D</math> обладает набором геометрических свойств <math>(c, r, θ)</math>, где <math>c, r, θ</math> {{---}} это центр, радиус и ориентация диска <math>D</math> соответственно. Радиус <math>r</math> определён как половина от локальной высоты <math>t</math>, а ориентация <math>θ</math> {{---}} это тангенциальное направление центральной линии относительно центра <math>c</math>. Таким образом, текстовая область <math>t</math> может быть легко представлена с помощью вычисления объединения дисков в <math>S(t)</math>. Важно, что сами диски никак не связаны с символами, принадлежащими <math>t</math>. Такое представление <math>t</math> даёт возможность "выпрямить" текстовую область, что облегчит распознавание её содержимого.
<br> Статья о модели доступна по [https://openaccess.thecvf.com/content_ECCV_2018/papers/Shangbang_Long_TextSnake_A_Flexible_ECCV_2018_paper.pdf ссылке]. Реализацию этой модели можно найти в [https://github.com/princewang1994/TextSnake.pytorch открытом доступе].
[[file:TextSnakeRepresentation.png|300px|left|thumb|Рисунок 1. Как TextSnake представляет текст<ref name="textsnake">[https://openaccess.thecvf.com/content_ECCV_2018/papers/Shangbang_Long_TextSnake_A_Flexible_ECCV_2018_paper.pdf Shangbang Long, Jiaqiang Ruan, Wenjie Zhang, Xin He, Wenhao Wu, Cong Yao, "TextSnake: A Flexible Representation for Detecting Text of Arbitrary Shapes" (2018)]</ref>]]
<br clear=all>
==== Архитектура ====
== Модели для распознавания ==
Распознающие текст модели в качестве входных данных принимают изображение, где должна находиться одна строка текста. Точность распознавания этих моделей тестировалась на наборах данных, где за эталон принимается прямоугольная окружающая рамка (например, CUTE80<ref name="cute"/>, [[:Известные_наборы_данных#ICDAR|ICDAR]]'15<ref name="icdar15">[https://rrc.cvc.uab.es/files/Robust-Reading-Competition-Karatzas.pdf D. Karatzas, L. Gomez-Bigorda, A. Nicolaou, S. Ghosh, A. Bagdanov, M. Iwamura, J. Matas, L. Neumann, V. Ramaseshan Chandrasekhar, S. Lu, F. Shafait, S. Uchida, E. Valveny, "ICDAR 2015 Competition on Robust Reading"]</ref>).
<br>
=== ESIR: End-to-end Scene Text Recognition via Iterative Image Rectification (2018) ===
 
[[Файл:Esir line.png|300px|thumb|left|Рисунок 8. Повторяющая линия<ref name="esir"/>]]
ESIR использует итеративное выпрямление изображения, которое исправляет искажения, связанные с перспективой и кривизной. Для этого с помощью полинома моделируется средняя линия текстовой области. В дополнение, определяются направление и высота области текста на множестве сегментов линии. Среднюю линию с дополнительными параметрами назовём "повторяющей линией" (см. Рисунок 8).
<br>
Статья о модели доступна по [https://arxiv.org/pdf/1812.05824.pdf ссылке].
 
[[Файл:Esir line.png|300px|thumb|left|Рисунок 8. Повторяющая линия<ref name="esir"/>]]
<br clear=all>
[[Файл:Esir arch.png|800px|thumb|left|Рисунок 10. Iterative Rectification Network<ref name="esir"/>]]
<br clear=all>
*Recognition Network (сеть распознавания). Используется [[:Рекуррентные_нейронные_сети#Seq-2-seq_.D1.81.D0.B5.D1.82.D0.B8|sequence-to-sequence]] модель с [[:Механизм_внимания|механизмом внимания]]. Система состоит из кодера и декодера. В кодировщик поступает выпрямленное изображение текста размером 32x100 пикселей. Используется 53-слойная ResNet<ref name="resnet"/> для извлечения признаков, за ResNet следует два слоя двунаправленной [[:Долгая_краткосрочная_память|LSTM]]. Декодер использует LuongAttention<ref name="luong">[https://arxiv.org/pdf/1508.04025.pdf Minh-Thang Luong, Hieu Pham, and Christopher D. Manning, "Effective approaches to attention-based neural machine translation" (2015)]</ref> механизм. На этапе вывода используется алгоритм поиск луча <ref name="beam">[https://en.wikipedia.org/wiki/Beam_search Beam Search - Wikipedia]</ref> (англ. beam search).
==== Точность ====
==== Архитектура ====
[[Файл:Moran arch.png|600px650px|thumb|right|Рисунок 12. Архитектура всей модели MORAN<ref name="moran"/>]]
MORAN состоит из двух частей: MORN (Multi-Object Rectification Network) и ASRN (Attention-based Sequence Recognition Network) (см. Рисунок 12):
*MORN отвечает за выпрямление. Архитектура MORN представлена в таблице ниже (см. Рисунок 13). За каждым (за исключением последнего) свёрточным слоем следует слой [[:Batch-normalization|батчевой нормализации]] и слой [[:Практики_реализации_нейронных_сетей#:~:text=Функция%20ReLU%5Bправить%5D,аргумента%2C%20функция%20возвращает%20само%20число|ReLU]]. MORN делит изображение на несколько частей, после чего предсказывает смещение для каждой части. Предсказанное смещение используется для выпрямления.[[Файл:Moran morn arch.png|250px|thumb|left|Рисунок 13. Архитектура MORN<ref name="moran"/>]]<br clear=all>*ASRN отвечает за распознавание. Архитектура ASRN представлена в таблице ниже (см. Рисунок 14). Основной структурой ASRN является фреймворк CNN-BLSTM (архитектура, в которой используется [[:Сверточные_нейронные_сети|CNN]] для извлечения признаков и двунаправленная [[:Долгая_краткосрочная_память|LSTM]] для предсказания последовательностей)<ref name="cnnblstm">[https://arxiv.org/pdf/1411.4389.pdf J. Donahue, L. A. Hendricks, M. Rohrbach, S. Venugopalan, S. Guadarrama, K. Saenko, T. Darrell "Long-term Recurrent Convolutional Networks for Visual Recognition and Description" (2016)]</ref>. В верхних слоях CRNN<ref name="crnn">[https://ieeexplore.ieee.org/document/7801919 B. Shi, X. Bai, and C. Yao, "An end-to-end trainable neural network for image-based sequence recognition and its application to scene text recognition" (2017)]</ref> применяется одномерный механизм внимания. Далее используется attention-based декодер (GRU) <ref name="gru">[https://arxiv.org/pdf/1406.1078.pdf K. Cho, B. van Merrienboer, C. Gulcehre, D. Bahdanau, F. Bougares, H. Schwenk, Y. Bengio, "Learning phrase representations using RNN encoderdecoder for statistical machine translation" (2014)]</ref>, основанный на [[:Рекуррентные_нейронные_сети|RNN]].{|-|[[Файл:Moran morn arch.png|300px|thumb|right|Рисунок 13. Архитектура MORN<ref name="moran"/>]]| style="width:350px" | [[Файл:Moran asrn arch.png|300px|thumb|right|Рисунок 14. Архитектура ASRN<ref name="moran"/>]]|-|}<!--[[Файл:Moran morn arch.png|300px|thumb|right|Рисунок 13. Архитектура MORN<ref name="moran"/>]][[Файл:Moran asrn arch.png|250px300px|thumb|leftright|Рисунок 14. Архитектура ASRN<ref name="moran"/>]]-->
<br clear=all>
Затем над изображением работает RPN<ref name="rpn"/> нейронная сеть, которая выполняет базовый поиск областей текста на изображении. RPN<ref name="rpn"/> может выявлять символы разных форм и размеров. Уже размеченный текст более детально обрабатывается Fast R-CNN<ref name="rcnn"/> нейронной сетью. Её задачи принципиально ничем не отличаются от задач RPN<ref name="rpn"/>, Fast R-CNN<ref name="rcnn"/> лишь доводит дело до конца. Завершает работу этап детекции по маске. Сначала он разбивает полученные области текста на слова, а затем внутри слов распознает отдельные символы. На этом этапе можно настраивать локализацию. Затем данные проходят небольшой пост-процессинг перед достижением итогового результата. Примерная визуализация архитектуры представлена ниже (см. Рисунок 15).
<br clear=all>
[[file:ArchitectureMaskTextSpotter.png|800px|left|thumb|Рисунок 15. Архитектура Mask TextSpotter<ref name="masktextspotter">[https://openaccess.thecvf.com/content_ECCV_2018/papers/Pengyuan_Lyu_Mask_TextSpotter_An_ECCV_2018_paper.pdf Архитектура Pengyuan Lyu, Minghui Liao, Cong Yao, Wenhao Wu, Xiang Bai, "Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shapes" (2018)]</ref>]]
<br clear=all>
CRAFTS состоит из трех слоев: слоя детекции, коммуникации и распознавания. Данные, проходя через три этих этапа, на выходе представляют собой готовый end-to-end результат в качестве распознанных слов (см. Рисунок 16).
<br clear=all>
[[file:CraftsArchitectureFull.png|800px|thumb|left|Рисунок 16. Архитектура CRAFTS<ref name="crafts">[https://arxiv.org/pdf/2007.09629.pdf Архитектура CRAFTSYoungmin Baek, Seung Shin, Jeonghun Baek, Sungrae Park, Junyeop Lee, Daehyun Nam, Hwalsuk Lee, "Character Region Attention For Text Spotting" (2020)]</ref>]]
<br clear=all>
На этапе детекции CRAFTS использует ResNet50<ref name="resnet"/> остаточную [[:Сверточные_нейронные_сети|свёрточную нейронную сеть]] для первичной обработки изображения. На основе полученного результата определяется направление и границы сначала областей текста, а затем отдельных символов в них. На выходе получается изображение с размеченными областями текста, а внутри них размеченные ориентированные конейнеры с символами (см. Рисунок 17). Данные представляются в виде таблицы признаков.
<br clear=all>
[[file:CraftsArchitecture2.png|800px|thumb|left|Рисунок 17. [https://arxiv.org/pdf/2007.09629.pdf Подробная схема работы слоя детекции]<ref name="crafts"/>]]
<br clear=all>
Слой коммуникации принимает таблицу признаков, сгенерированную на этапе детекции, и преобразовывает ее для дальнейшей передачи в слой распознавания. Это происходит в два этапа: сначала очищение текста, потом корректировка признаков.
После очищения текста производится корректировка признаков: на каждый символ устанавливается точка внимания. Этот этап является ключевым по двум причинам. Во-первых, скорректированная таблица сама по себе облегчает работу слою распознавания, что значительно повышает его эффективность. Во-вторых, на данном этапе через откорректированную таблицу слой детекции и слой распознавания становятся зависимыми друг от друга. Это позволяет ошибке распознавания повлиять на работу слоя детекции (см. Рисунок 18). Такая связь оказывает внушительное влияние на качество обучения и, как следствие, на качество модели.
<br clear=all>
[[file:CraftsLossFlow.png|800px|thumb|left|Рисунок 18. [https://arxiv.org/pdf/2007.09629.pdf Диаграмма распространения ошибки в CRAFTS]<ref name="crafts"/>]]
<br clear=all>
Процесс распознавания состоит из трех частей: извлечение признаков, моделирование последовательности и непосредственно распознавание (см. Рисунок 19). Успех этапа распознавания во многом зависит от правильно расставленных точек внимания. Если они смещены или утеряны, то корректное распознавание практически невозможно.
<br clear=all>
[[file:CraftsRecognition.png|400px|thumb|left|Рисунок 19. [https://arxiv.org/pdf/2007.09629.pdf Архитектура слоя распознавания]<ref name="crafts"/>]]
<br clear=all>
<br>Статья о модели доступна по [https://arxiv.org/pdf/2002.06820.pdf ссылке].
<br clear=all>
[[Файл:Tperc sch.png|500px|thumb|left|Рисунок 20. Схема работы TextPerceptron<ref name="textperceptron">[https://arxiv.org/pdf/2002.06820.pdf Схема работы TextPerceptronLiang Qiao, Sanli Tang, Zhanzhan Cheng, Yunlu Xu, Yi Niu, Shiliang Pu, Fei Wu, "Text Perceptron: Towards End-to-End Arbitrary-Shaped Text Spotting" (2020)]</ref>]]
<br clear=all>
Детектор текста использует ResNet<ref name="resnet"/> и FPN<ref name="fpn"/> как основу, и реализуется путем одновременного изучения трех задач: многоклассовой семантической сегментации с учетом порядка, регрессии угла и регрессии смещения границ. STM отвечает за объединение детекции и распознания. Для этого STM генерирует доверительные точки и настраивает их позиции, на основе чего "выпрямляет" текст с помощью TPS (Thin-plate splines) для дальнейшего распознавания. В модуле распознавания может использоваться любой sequence-based метод. Примерная визуализация архитектуры представлена ниже (см. Рисунок 21).
<br clear=all>
[[file:Tperc arch.png|800px|left|thumb|Рисунок 21. [https://arxiv.org/pdf/2002.06820.pdf Архитектура TextPerceptron]<ref name="textperceptron"/>]]
<br clear=all>
=== Boundary (2020) ===
[[Файл:Bound stgs.png|500px|thumb|right|Рисунок 22. [https://arxiv.org/pdf/1911.09550.pdf Стадии работы Boundary]<ref name="boundary"/>]]
Boundary при детекции использует граничные точки, чтобы максимально точно повторить контуры текстовой области. После, используя граничные точки, текст приводится к виду, подходящему для распознающего модуля. Перед определением граничных точек заранее определяются "коробки", в которых может находиться текст (см. Рисунок 22).
<br>Статья о модели доступна по [https://arxiv.org/pdf/1911.09550.pdf ссылке].
<br clear=all>
[[Файл:Bound arch.png|800px|thumb|right|Рисунок 23. Архитектура Boundary<ref name="boundary">[https://arxiv.org/pdf/1911.09550.pdf Архитектура Hao Wang, Pu Lu, Hui Zhang, Mingkun Yang, Xiang Bai, Yongchao Xu, Mengchao He, Yongpan Wang, Wenyu Liu, "All You Need Is Boundary: Toward Arbitrary-Shaped Text Spotting" (2020)]</ref>]]
==== Архитектура ====
Первоначальная обработка изображения происходит с помощью ResNet50<ref name="resnet"/> остаточной [[:Сверточные_нейронные_сети|свёрточной нейронной сети]].
<br clear=all>
[[file:WorkflowOfMANGO.png|800px|left|thumb|Рисунок 24. Архитектура MANGO<ref name="mango">[https://arxiv.org/pdf/2012.04350.pdf Архитектура Liang Qiao, Ying Chen, Zhanzhan Cheng, Xunlu Xu, Yi Niu, Shiliang Pu, Fei Wu, "MANGO: A Mask Attention Guided One-Stage Scene Text Spotter" (2021)]</ref>]]
<br clear=all>
|+ Общие результаты моделей распознавания
|-
! Модель !! F-мера на наборе [[:Известные_наборы_данных#ICDAR|ICDAR]]'15<ref name="icdar15"/> !! F-мера на наборе данных CUTE80<ref name="cute"/>
|-
| style="background:#eaecf0;" | '''ESIR''' || 76.9 || 83.3
238
правок

Навигация