Подробная КТПН
предисловие
Эта статья в основном основана наbestrivern
Блог понимает сеть CTPN. Сеть CTPN предназначена в основном для текста.
I. Обзор
Для распознавания текста в сложных сценах первое, что нужно сделать, — определить положение текста, т. е.обнаружение текста. Это всегда было центром исследований.
Обнаружение текста можно рассматривать как обнаружение специальной цели, но оно отличается от обычного обнаружения цели.При обычном обнаружении цели каждая цель имеет определенную ограничивающую рамку.Обнаруженная рамка и коэффициент наложения на землю текущей цели больше 0,5, что указывает на то, что результат обнаружения правильный.. Правильное обнаружение при обнаружении текста должно охватывать всю длину текста, а критерии оценки отличаются от обычных методов обнаружения целей.ICDAR 2017 RobustReading Competition), поэтому общие методы обнаружения объектов не подходят для обнаружения текста.
CTPN в ECCV
2016
предложенныйАлгоритм обнаружения текста. привязка CTPNГлубокая сеть CNN и LSTM,Может эффективно обнаруживать горизонтально распределенный текст в сложных сценах.
2. Ключевая идея
- использовать
垂直anchor
Механизм регрессии для обнаружения небольших текстовых полей-кандидатов - обнаружение текста
难点
лежит вДлина текста не фиксирована., который может быть очень длинным текстом или очень коротким текстом. Если будет принят общий метод обнаружения цели, возникнет проблема:Как составить хорошее текстовое предложение. В ответ на вышеуказанные проблемы автор предлагает метод вертикальной привязки, Конкретный метод заключается в прогнозировании только вертикального положения текста, а горизонтальное положение не прогнозируется. Подобно якорю в более быстром rcnn, но разница в том,Ширина вертикального анкера фиксированная,Размер в бумаге 16 пикселей. А высота варьируется от 11px до 273px (каждый раз делится на 0,7), всего 10 якорей. - Рекуррентная сеть RNN используется для соединения обнаруженных мелкомасштабных текстов для получения текстовых строк..
- использовать
CNN+RNN端到端
метод обучения, поддерживает мультимасштабность и многоязычность, избегает постобработки
Структура сети Three.ctpn
Предположим, вы вводите N изображений:
- Во-первых, VGG извлекает признаки и получает размерN * C * H * Wэто карта функций conv5.
- После этого на conv53*3 раздвижное окно, то есть каждая точка комбинируется с окружающими объектами области 3*3 для полученияСобственные векторы длины 3*3*C. выводN * 9C * H * WКарта признаков , которая, очевидно, представляет собой только пространственные особенности, изученные CNN.
- Затем измените эту карту объектов:
- затем сBatch=NHимаксимальная продолжительность временипоток данныхВведите двунаправленный LSTM, чтобы изучить функции последовательности для каждой строки.. Двунаправленный вывод LSTM, а затем восстановить форму через Reshape:
Эта функция включает в себя как пространственные функции, так и функции последовательности, изученные LSTM.
- Затем через сверточный слой «FC» он становится особенностьюN * 512 * H * W
- Наконец, после аналогичного Faster R-CNNСеть RPN, получайте текстовые предложения, как показано на рисунке 2-b.
Вот объяснение того, как карта признаков conv5 меняется с N*C*H*W на N*9C*H*W.
В исходном коде caffe im2col используется для извлечения 9 соседних точек рядом с каждой точкой, а затем каждая строка обрабатывается следующим образом:
Затем каждый канал обрабатывается следующим образом:
А im2col — это операция для ускорения свертки, то есть свертка становится умножением матриц, чтобы использовать библиотеку Blas для быстрого расчета. Когда дело доходит до tf, такой операции нет, поэтому вместо im2col обычно используется conv2d, то есть принудительная свертка C --> 9C.
собственное понимание:
Прежде всего, чего мы достигаем через сеть VGG, так это извлечение карт признаков,
N * C * H * W
, где C — количество каналов конечного вывода CNN, а затем мы используем сеть 3*3 для извлечения пикселей из 9 точек вокруг каждой точки пикселя (изначально H*W), что становитсяH * W * 9
, который, наконец, появляется какN * 9C * H * W
, потому что нам нужно отправить карту объектов в RNN (двунаправленный LSTM), чтобы мы могли получить функции последовательности данных,因为前文中我们也指出了使用竖向的anchor,所以我们的序列输入就是W,学习每一行的序列特征
, непрерывные функции, нам нужноN * 9C * H * W
изменить форму,(NH) * W * 9C
, и, наконец, выведите 256 результатов, форма в это время(NH) * W * 256
, форма стандартного изображения в изменении формыN * 256 * H * W
, после полностью связанного слоя объект становитсяN * 512 * H * W
, а затем, после прохождения через сеть RPN, аналогичную Fast R-CNN, это место предназначено для того, чтобы определить, можно ли соединить кадр, а метод RPN Fast R-CNN состоит в том, чтобы дождаться, пока кадр станет положительным и ненативным, и скорректировать центральное положение кадра-кандидата Поправка на усадку.
Далее в статье рассматриваются следующие три вопроса:
- Зачем использовать двунаправленный LSTM
- Как сгенерировать текстовые предложения на рисунке 2-b с помощью выходных данных слоя FC
- Как определить конечную позицию текста через текстовые предложения, т.е.Алгоритм построения текстовой строки
Дополнительные инструкции:
Конкретный процесс внедрения CTPN состоит из трех частей:Обнаружение небольших текстовых полей,петля, соединяющая текстовые поля,Утончение краев текстовой строки. Конкретные этапы реализации следующие:
- Используйте VGG16 в качестве базовой сети для извлечения функций и получите функции conv5_3 в виде карты функций, размерW×H×C
- На приведенной выше карте признаков для скольжения используется скользящее окно размером 3*3, и каждое окно может получить вектор признаков длиной 3×3×C,Центр каждого скользящего окна предсказывает k смещений относительно точки привязки.(эквивалентно k полям на пиксель)
- Введите функции, полученные на предыдущем шаге, в двунаправленный LSTM, чтобы получить выходные данные длины W × 256, а затем подключите 512 полносвязных слоев, чтобы подготовиться к выходным данным.
- Часть выходного слоя в основном имеет три выхода.
2k个vertical coordinate
, поскольку якорь представлен высотой центрального положения (координата Y) и высотой прямоугольного блока, поэтому используется 2k выходных данных. (Обратите внимание, что вывод здесь — это смещение относительно якоря.).2k个score
,Поскольку прогнозируется k текстовых предложений, имеется 2k оценок, одна для текста и одна для нетекста (эквивалентно положительному и отрицательному в softmax)..k个side-refinement
, эта часть в основном используется дляДве конечные точки уточненной текстовой строки представляют собой горизонтальный перевод каждого предложения..- использовать стандарт
非极大值抑制算法
ПриходитьОтфильтруйте избыточные текстовые предложения.- последнее использование
基于图的文本行构造算法
,Объедините полученные текстовые сегменты в текстовые строки.
4. Двунаправленный LSTM
CNN изучает пространственную информацию в рецептивном поле, а LSTM изучает особенности последовательности. Очевидно, что для обнаружения текстовой последовательности требуются как абстрактные пространственные признаки CNN, так и признаки последовательности (в конце концов, текст непрерывен).
Каковы преимущества использования двунаправленного LSTM в CTPN по сравнению с обычным однонаправленным LSTM? Двунаправленный LSTM фактически соединяет два LSTM в противоположных направлениях, как показано на рисунке r.
В общем, двунаправленные LSTM лучше, чем однонаправленные LSTM. Или посмотрите на пример во вводной статье LSTM:
Мой телефон сломался, и я собираюсь ____ купить новый телефон.
Предположим, LSTM используется для заполнения пустой части. Если вы посмотрите только на слова перед горизонтальной чертой «телефон сломан», «я» собираюсь «чинить», «купить» или «плакать»? Двусторонний LSTM может видеть, что следующее слово — «новый мобильный телефон», поэтому вероятность заполнения «купить» для слова на горизонтальной линии намного выше. Очевидно, что для обнаружения текста это также применимо.
5. Полносвязный слой и сеть rpn
После полносвязного слоя получается 512-мерная карта признаков.
После того, как CTPN узнает набор функций «пространственно + последовательность» через CNN и BLSTM, он подключается к сети RPN после сверточного слоя «FC». Здесь RPN похож на Faster R-CNN и делится на две ветви:
- Левая ветвь используется для регрессии ограничивающей рамки. Поскольку каждая точка карты характеристик fc оснащена 10 якорями и возвращает только центральную координату y и высоту 2 значений, rpn_bboxp_red имеет 20 каналов (
修正Anchor的部分
) - Правая ветвь используется для классификации Softmax Anchor (
判断anchor中是不是存在文字
)
Конкретная сеть RPN точно такая же, как Faster R-CNN, поэтому она не будет представлена, а будут проанализированы только различия.
Шесть. Вертикальное позиционирование текста привязки.
Поскольку CTPN нацелен на обнаружение горизонтально расположенного текста, он использует набор(10) Анкеры одинаковой ширины, который используется для определения положения текста. Ширина и высота анкера:
Обратите внимание, потому чтоCTPN использует модель VGG16 для извлечения признаков, тогда ширина и высота карты признаков conv5 составляют 1/16 ширины и высоты входного изображения..
в то же времяfc равно conv5 ширине и высоте.
Как показано на рисунке 6,CTPN оснащает каждую точку карты объектов fc 10 из указанных выше привязок..
Якоря устанавливаются следующим образом:
- Убедитесь, что в направлении x Anchor покрывает каждую точку исходного изображения и не перекрывает друг друга..
- Высота разных текстов сильно различается по оси Y, поэтому установите высоту Anchors на 11-283, чтобы покрыть текстовые цели разной высоты..
Еще одна вещь, я вижу, что люди продолжают спрашивать, почему размер привязки соответствует исходному масштабу изображения, а не масштабу функции conv5/fc. Это связано с тем, что Anchor является кадром-кандидатом цели, а кадр обнаружения цели в исходном масштабе изображения получается после последующей классификации + коррекции положения. Тогда для этого требуется, чтобы якорь был соответствующим исходному масштабу изображения! Кроме того, если размер привязки соответствует масштабу conv5/fc, то требуется регрессия ограничивающей рамки, чтобы вернуть маленькую рамку в большую, что выходит за рамки цели проектирования мелкомасштабной корректирующей рамки регрессии.
После получения Anchor, аналогично Faster R-CNN, CTPN выполнит следующую обработку (实际上还是做线性回归,训练网络,得到中心修正和缩放比的修正
):
- Softmax определяет, содержит ли Anchor текст, то есть выбирает положительный Anchor с большой оценкой Softmax.
- Регрессия ограничительной рамки корректирует центральную координату Y и высоту привязки, содержащей текст.
Уведомление,与Faster R-CNN不同的是,这里Bounding box regression不修正Anchor中心x坐标和宽度
. Конкретный метод регрессии заключается в следующем:
()Дапредсказыватьпринадлежит中心坐标和高度值
,идаAnchor的中心y坐标和高度
. ()ДаНаземная правдаиз中心坐标和高度值
.
даЗначение прогноза регрессии и преобразования координат якоря,даПреобразование координат между Ground Truth и якорем.
В конечном итоге необходимо минимизироватьиошибка регрессии. Можно выбрать гладкую потерю L1.
После того, как якорь будет обработан вышеприведенным Softmax и регрессией ограничивающей рамки в направлении y, будет получен набор текстовых предложений с вертикальной полосой, показанных на рисунке 7. В дальнейшем вам нужно только соединить эти текстовые предложения вместе с алгоритмом построения строки текста, чтобы получить позицию текста.
В статье автор также приводит сравнение прямого использования Faster R-CNN RPN для генерации обычных предложений и CTPN LSTM + вертикальный Anchor для генерации текстовых предложений, как показано на рисунке 8, очевидно, что CTPN больше подходит для обнаружения текста .
7. Алгоритм построения текстовой строки
На предыдущем шаге была получена одна или несколько строк текстовых предложений, и следующим шагом является принятиепостроение текстовой строки, объедините эти текстовые предложения в поле обнаружения текста.
Чтобы проиллюстрировать проблему, предположим, что изображение имеет два текстовых предложения, как показано на рисунке 9, то есть два набора привязок синего и красного цвета. CTPN использует следующий алгоритм для построения текстовых строк:
- Сортировка якорей по горизонтальной координате x
- Рассчитайте каждый Якорь по очереди по правиламиз,сочинение
- пройти черезПостройте график подключения и, наконец, получите окно обнаружения текста.
Это подробно объясняется ниже. Предположим, что каждый индекс Anchor — это зеленое число, а каждая оценка Anchor Softmax — это черное число.
Алгоритм построения текстовой строки строит каждый Anchor следующим образом.из:
Жду с нетерпением:
- Вдоль положительного горизонтального направления ищем иЯкоря-кандидаты, горизонтальное расстояние которых меньше 50
- Из кандидата Якорь выберитес вертикальным направлениемЯкорь
- Выберите оценку Softmax в условии 2
最大
из
Затем посмотрите в обратном направлении:
- Вдоль отрицательного горизонтального направления ищите иЯкоря-кандидаты, горизонтальное расстояние которых меньше 50
- Из кандидата Якорь выберитес вертикальным направлениемЯкорь
- Выберите оценку Softmax в условии 2
最大
из
Примечание: здесьпредставляет собой одномерную долговую расписку в вертикальном направлении.
окончательное сравнениеи:
если, то это самое длинное соединение, то установить
если, указывающее, что это не самое длинное соединение (то есть соединение должно содержаться в другом более длинном соединении).
Иллюстрация, рис. 10, якорь в соответствии с X имеет хороший порядок, а с фиг. Softmax Score (оценка, приведенная здесь только для иллюстрации.
Затем устанавливается граф N * N Connect (где N — количество положительных Якорей). Пройдите по графику:
Таким образом, рамка обнаружения текста определяется через текстовые предложения.
8. Боковое уточнение текстовых строк
Поскольку оговорено, что ширина возвращаемого поля составляет 16 пикселей, это вызовет некоторые ошибки в положении.Пришло время для Side-refinement вступить в игру. Определенная формула выглядит следующим образом:
Где * означает GroundTruth..Представляет левую или правую границу регрессии,Представляет собой абсциссу центра привязки,имеет фиксированную ширину 16 пикселей. Таким образом, определение O эквивалентно коэффициенту масштабирования, который помогает нам растянуть результат поля после регрессии, чтобы лучше соответствовать положению фактического текста. Сравнительная диаграмма выглядит следующим образом: красный прямоугольник — результат использования бокового уточнения, а желтый прямоугольник — результат отказа от использования метода бокового уточнения:
9. Потеря
Выражение потерь выглядит следующим образом:
CTPN содержит 3 потери в целом,分类的Ls
,边框回归的Lv
,边框左右的回归的偏移Lo
Ls для традиционныхsoftmax_cross_entropy_loss
(Кросс-энтропийные потери для классификации), где я обозначает i-е из всех предсказанных якорей,, Ns — параметр нормализации, представляющий сумму всех привязок.
Используемый уровеньsmooth_L1_loss
(Линейная регрессия: потеря среднего квадрата ошибки), где j представляет собой j-ю часть всех привязок с IOU > 0,5, а Nv — параметр нормализации, представляющий сумму количества привязок с IOU > 0,5 для всех привязок и достоверности. λ1 – параметр сбалансированности многозадачности,λ1=1.0.
Ло также используетсяsmooth_L1_loss
, где k представляет k-ю привязку границы, то есть набор граничных привязок, которые, по прогнозам, находятся на расстоянии 32 пикселя от истинного положения. Nv — это параметр нормализации, который представляет собой сумму всех номеров граничных привязок. λ1 – параметр сбалансированности многозадачности,λ1=2.0.
10. Резюме
преимущество:
CTPN более точен для обнаруженных границ в четырех точках вверх, вниз, влево и вправо, что лучше, чем EAST.
недостаток:
(1)CTPN может распознавать текст только в горизонтальном направлении, если в вертикальном, то будет мнимое пословное разъединение.. Если угол наклонен, метод соединения анкера постобработки необходимо изменить, но это должно привести к новым проблемам.
(2)Поскольку CTPN включает в себя проблему слияния якорей, когда объединять и когда отключать, это проблема.. Программа использует горизонтальный биннинг в пределах 50 пикселей и вертикальный IOU > 0,7 биннинга. Возможно из-за внедрения BLSTM стало хуже отключение этого линка. Таким образом, для двухколоночного и трехколоночного текста ctpn будет обрабатываться как поле, а иногда и отдельно, короче говоря, это не так хорошо, как EAST.