Що таке часова класифікація коннекціоністів (CTC)?


15

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


3
Я рекомендую вам ознайомитися з початковим документом: Graves, et al. (2006) Тимчасова класифікація коннекціоністів: маркування даних несегментованих послідовностей з періодичними нейронними мережами, матеріали 23-ї міжнародної конференції з машинного навчання ( pdf ).
neo li

Відповіді:


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

Щоб тренувати таку мережу, необхідно вказати для кожного зображення, де на зображенні розміщений символ основного тексту правди. Як приклад, придумайте зображення, що містить текст «Привіт». Тепер ви повинні вказати, де починається і закінчується "H" (наприклад, "H" починається з 10-го пікселя і йде до 25-го пікселя). Те саме для "e", "l, ... Це звучить нудно і є важкою роботою для великих наборів даних.

Навіть якщо вам вдалося таким чином анотувати повний набір даних, є ще одна проблема. NN видає бали за кожен символ на кожному етапі, див. Таблицю, яку я показав вище, на прикладі іграшки. Зараз ми можемо взяти найімовірніший символ за крок часу, це "b" і "a" на прикладі іграшки. Тепер придумайте більший текст, наприклад, "Привіт". Якщо у письменника є стиль написання, який використовує багато місця в горизонтальному положенні, кожен персонаж займав би кілька часових кроків. Взявши найімовірніший символ за кожний крок, це може дати нам такий текст, як "HHHHHHHHeeeellllllllllloooo". Як ми повинні перетворити цей текст у правильний вихід? Видалити кожен повторюваний символ? Це дає «Хело», що не правильно. Отже, нам знадобиться якась розумна пост-обробка.

CTC вирішує обидві проблеми:

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

Як це досягається?

  • введіть спеціальний символ (CTC-пробіл, позначений як "-" у цьому тексті), щоб вказати, що жоден символ не бачиться на заданому кроці часу
  • змінити основний текст істини T до T ', вставляючи CTC-пробіли та повторюючи символи усіма можливими способами
  • ми знаємо зображення, текст знаємо, але не знаємо, де текст розташований. Отже, давайте просто спробуємо всі можливі позиції тексту "Привіт ----", "-Хі ---", "--Хі--", ...
  • ми також не знаємо, скільки місця займає кожен символ у зображенні. Тож давайте також спробуємо всі можливі вирівнювання, дозволяючи символам повторюватись на зразок "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.