Что такое временная классификация коннекционистов (CTC)?


15

Я ищу проект оптического распознавания символов (OCR). После некоторых исследований я натолкнулся на интересную архитектуру: CNN + RNN + CTC. Я знаком с извилистыми нейронными сетями (CNN) и рекуррентными нейронными сетями (RNN), но что такое временная классификация Connectionist (CTC)? Я хотел бы получить объяснение с точки зрения непрофессионала.


3
Я рекомендую вам прочитать оригинальную статью: Graves, et al. (2006) Временная классификация Connectionist: маркировка несегментированных последовательных данных с помощью повторяющихся нейронных сетей, Материалы 23-й Международной конференции по машинному обучению ( pdf ).
Нео Ли

Ответы:


28

У вас есть набор данных, содержащий:

  • изображения I1, I2, ...
  • наземные правдивые тексты T1, T2, ... для изображений I1, I2, ...

Таким образом, ваш набор данных может выглядеть примерно так:

введите описание изображения здесь

Нейронная сеть (NN) выводит оценку для каждого возможного горизонтального положения (часто называемого временным шагом t в литературе) изображения. Это выглядит примерно так для изображения шириной 2 (t0, t1) и 2 возможных символов («a», «b»):

| t0 | t1 --+-----+---- a | 0.1 | 0.6 b | 0.9 | 0.4

Чтобы обучить такой NN, вы должны указать для каждого изображения, где символ основного текста истины расположен на изображении. В качестве примера представьте изображение, содержащее текст «Hello». Теперь вы должны указать, где начинается и заканчивается буква «H» (например, буква «H» начинается с 10-го пикселя и продолжается до 25-го пикселя). То же самое для "e", "l, ... Это звучит скучно и является тяжелой работой для больших наборов данных.

Даже если вам удалось аннотировать полный набор данных таким образом, есть еще одна проблема. NN выводит оценки для каждого символа на каждом временном шаге, см. Таблицу, которую я показал выше, для примера с игрушкой. Теперь мы можем взять наиболее вероятный символ за временной шаг, это «b» и «a» в примере с игрушкой. Теперь подумайте о тексте большего размера, например, «Привет». Если у писателя есть стиль письма, который использует много места в горизонтальном положении, каждый символ будет занимать несколько временных шагов. Принимая наиболее вероятный символ за временной шаг, это может дать нам текст вроде «HHHHHHHHeeeellllllllloooo». Как мы должны преобразовать этот текст в правильный вывод? Удалить каждый повторяющийся символ? Это дает "Helo", что не правильно. Итак, нам понадобится умная постобработка.

CTC решает обе проблемы:

  • Вы можете обучить сеть из пар (I, T), не указывая, в какой позиции персонаж находится, используя потерю CTC
  • вам не нужно постобрабатывать вывод, так как декодер CTC преобразует вывод NN в окончательный текст

Как это достигается?

  • ввести специальный символ (CTC-пробел, обозначенный в этом тексте как "-"), чтобы указать, что ни один символ не виден в данный момент времени
  • изменить основной текст истины T на T ', вставляя пробелы CTC и повторяя символы всеми возможными способами
  • мы знаем изображение, мы знаем текст, но мы не знаем, где расположен текст. Итак, давайте просто попробуем все возможные позиции текста "Привет ----", "-Hi ---", "--Hi--", ...
  • мы также не знаем, сколько места занимает каждый символ в изображении. Так что давайте попробуем все возможные выравнивания, позволив символам повторяться, например, «HHi ----», «HHHi ---», «HHHHi--», ...
  • Вы видите проблему здесь? Конечно, если мы позволим символу повторяться несколько раз, как мы будем обрабатывать настоящие дубликаты символов, такие как «l» в «Hello»? Ну, просто всегда вставляйте пробел между этими ситуациями, например, "Hel-lo" или "Heeellll ------- llo"
  • рассчитать оценку для каждого возможного T '(то есть для каждого преобразования и каждой их комбинации), суммировать по всем оценкам, что приводит к потере для пары (I, T)
  • расшифровка проста: выбрать символ с наибольшим количеством очков для каждого временного шага, например, «HHHHHH-eeeellll-lll - oo ---», выбросить повторяющиеся символы «H-el-lo», выбросить пробелы «Hello», и мы сделано.

Чтобы проиллюстрировать это, взгляните на следующее изображение. Это в контексте распознавания речи, однако распознавание текста точно такое же. Декодирование дает один и тот же текст для обоих ораторов, даже если выравнивание и положение символа различаются.

введите описание изображения здесь

Дальнейшее чтение:


Это немного сбивает с толку, по крайней мере для меня, то, что вы изначально подразумеваете под « основанным текстом правды для каждого изображения T1, T2, ...». Вы должны начать с объяснения этого. Кроме того, не очень понятно, если вы не знакомы с понятиями, что вы подразумеваете под «Нейронная сеть (NN) выводит оценку для каждой возможной горизонтальной позиции (временной шаг t) изображения». Почему у изображения есть временные шаги? Таким образом, некоторые из ваших первоначальных утверждений, по-видимому, предполагают, что вам известны несколько концепций, которые в конечном итоге будут понятны в этом же ответе, но, ИМХО, вам следует уточнить эти концепции.
nbro

Спасибо за ответ. Я добавил иллюстрацию о наборе данных и улучшил описание. Кроме того, термин временной шаг просто означает «горизонтальное положение» или x-координату в контексте распознавания текста. Термин, скорее всего, происходит от распознавания речи (аналогичная задача), где временной шаг относится к положению во времени в аудиосигнале.
Гарри
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.