Асистент розпізнавання тексту OCR

【Серія OCR для глибокого навчання·7】Функція втрат CTC та методи навчання

Принцип, реалізація та методи тренування функцій втрат CTC, а також основні методи розв'язання задач вирівнювання послідовностей. Заглибиться в алгоритми вперед-назад, стратегії декодування та методи оптимізації.

## Вступ Конекціоністська часова класифікація (CTC) є важливим проривом у моделюванні послідовностей глибокого навчання, особливо в галузі OCR. CTC розв'язує фундаментальну проблему невідповідності між довжиною вхідної та вихідної послідовності, що дозволяє навчатися наскрізним шляхом послідовності. У цій статті буде розглянуто математичні принципи, реалізацію алгоритмів та методи оптимізації тренувань CTC. ## Основні концепції CTC ### Проблеми з вирівнюванням послідовності У завданнях OCR ми стикаємося з такими викликами: **Невідповідність довжини**: Довжина послідовності ознак вхідного зображення відрізняється від довжини вихідної текстової послідовності. Наприклад, слово, що містить 3 символи, може відповідати послідовності ознак із 100 часових кроків. **Невизначена позиція**: Точне положення кожного символу на зображенні невідоме. Традиційні методи вимагають точної сегментації символів, що складно на практиці. **Складність сегментації символів**: Безперервно написаний текст, рукописний текст або художні шрифти важко точно розділити на окремі символи. ### Рішення CTC CTC вирішує проблеми вирівнювання послідовностей такими інноваційними способами: Знайомлення з порожніми маркери: використовуйте спеціальні порожні маркери для вирівнювання. Порожні теги не відповідають жодним вихідним символам і використовуються для відокремлення дублікатів від послідовностей заповнення. Ймовірність шляху: Обчислює ймовірність усіх можливих шляхів вирівнювання. Кожен шлях представляє можливу відповідність кроку від символу до часу. **Динамічне планування**: Ефективно обчислювати ймовірності шляхів за допомогою алгоритмів вперед-назад, уникаючи перелічення всіх можливих шляхів. ## Математичні принципи CTC ### Основні визначення Задано вхідну послідовність X = (x₁, x₂, ..., xt) та цільову послідовність Y = (y₁, y₂, ..., yu), де T ≥ U. Набір тегів: L = {1, 2, ..., K}, що містить K категорій символів. **Розширена колекція тегів**: L_ext = L ∪ {blank}, що містить порожні теги. **Шлях вирівнювання**: Послідовність довжини T π = (π₁, π₂, ..., πt), де πt ∈ L_ext. ### Відображення шляхів до тегів CTC визначає функцію відображення B, яка перетворює шлях вирівнювання у вихідну послідовність міток: 1. Видалити всі порожні маркери 2. Об'єднання послідовних дублікатів символів **Приклад відображення**: - π = (a, a, blank, b, blank, b, b) → B(π) = (a, b, b) - π = (порожній, c, c, a, порожній, t) → B(π) = (c, a, t) ### Функція втрат CTC Функція втрат CTC визначається як від'ємний логарифм суми всіх ймовірностей шляхів, відображених у цільову послідовність Y: L_CTC = -log P(Y| X) = -log Σ_{π∈B⁻¹(Y)} P(π| X) де B⁻¹(Y) — множина всіх шляхів, відображених у Y. Ймовірність шляху: Припускаючи, що прогнози кожного кроку часу є незалежними, ймовірність шляху дорівнює: P(π| X) = ∏t yt^{πt} де yt^{πt} — ймовірність того, що крок часу t передбачає мітку πt. ## Алгоритм вперед-назад ### Вперед алгоритм Прямий алгоритм обчислює ймовірність шляху від початку послідовності до поточної позиції. **Розширена послідовність міток**: Для полегшення обчислення розгорніть цільову послідовність Y до Y_ext, вставляючи порожні теги перед і після кожного символу. **Ініціалізація**: - α₁(1) = y₁^{порожня} (перша позиція порожня) - α₁(2) = y₁^{y₁} (перша позиція — перший символ) - α₁(s) = 0 для інших локацій **Рекурсивна формула**: Для t > 1 та позиції s: - Якщо Y_ext[s] порожня або така сама, як попередній символ: α_t(s) = (α_{t-1}(s) + α_{t-1}(s-1)) × y_t^{Y_ext[s]} - Інакше: α_t(s) = (α_{t-1}(s) + α_{t-1}(s-1) + α_{t-1}(s-2)) × y_t^{Y_ext[s]} ### Зворотний алгоритм Зворотний алгоритм обчислює ймовірність шляху від поточної позиції до кінця послідовності. **Ініціалізація**: - β_T(| Y_ext|) = 1 - β_T(| Y_ext|-1) = 1 (якщо останній тег не порожній) - β_T(s) = 0 для інших локацій **Рекурсивна формула**: Для t < T та позицій s: - Якщо Y_ext [s+1] порожнє або збігається з поточним символом: β_t(s) = (β_{t+1}(s) + β_{t+1}(s+1)) × y_{t+1}^{Y_ext[s+1]} - Інакше: β_t(s) = (β_{t+1}(s) + β_{t+1}(s+1) + β_{t+1}(s+2)) × y_{t+1}^{Y_ext[s+1]} ### Градієнтний розрахунок Загальна ймовірність:P (Y| X) = α_T(| Y_ext|) + α_T(| Y_ext|-1) **Градієнт ймовірності міток**: ∂(-у P(Y| X))/∂y_k^t = -1/P(Y| X) × Σ_{s:Y_ext[s]=k} (α_t(s) × β_t(s))/y_k^t ## Стратегія декодування CTC ### Жадібне розшифрування Гріді розшифровує мітку з найвищою ймовірністю на кожному кроці часу: π_t = argmax_k y_t^k Потім застосуйте B-відображення для отримання фінальної послідовності. **Плюси**: Легкі розрахунки та швидкість **Недоліки**: Глобальний оптимальний розв'язок може не бути отриманий ### Декодування пошуку за допомогою bundle Пошук пучка підтримує кілька кандидатських шляхів, розширюючи найперспективніші шляхи на кожному етапі часу. **Кроки алгоритму**: 1. Ініціалізація: Кандидатна колекція містить порожні шляхи 2. Для кожного кроку часу: - Розширення всіх кандидатських шляхів - Зберігати K-шлях з найвищою ймовірністю 3. Повернути повний шлях з найвищою ймовірністю **Налаштування параметрів**: - Ширина пучка K: Балансує обчислювальну складність із якістю декодування - Штраф за довжину: Уникайте переваги коротких послідовностей ### Пошук за префіксними наборами Пошук у префіксних пучках враховує ймовірність префіксного шляху, щоб уникнути подвійного підрахунку шляхів з тим самим префіксом. **Основна ідея**: Об'єднувати шляхи з одним префіксом і зберігати лише найбільш ймовірний метод розширення. ## Техніки навчання та оптимізація ### Попередня обробка даних **Обробка довжини послідовності**: - Динамічне пакетування: групування послідовностей подібної довжини - Стратегія заповнення: заповнювати короткі послідовності спеціальними маркерами - Стратегія урізання: Розумно обрізати надто довгі послідовності **Попередня обробка етикетки**: - Стандартизація набору символів: Уніфіксане кодування символів і капіталізація - Спеціальна обробка символів: Обробляє знаки розділу та пробіли - Нарощування словникового запасу: створіть повний глосарій персонажів ### Стратегія тренувань **Навчання курсу**: Починайте тренування з простих зразків і поступово підвищуйте складність: - Короткі та довгі послідовності - Чітке зображення на розмите зображення - Від звичайних шрифтів до рукописних шрифтів **Покращення даних**: - Трансформації геометрії: обертання, масштабування, розрізання - Додавання шуму: гаусівський шум, сіль і перець шуму - Зміни освітлення: яскравість, регулювання контрасту **Техніки регуляризації**: - Випадіння: запобігання надмірному підгону - Деградація ваги: регуляризація L2 - Згладжування етикеток: знижує надмірну впевненість ### Налаштування гіперпараметрів **Планування швидкості навчання**: - Стратегія розігріву: Перші кілька епох використовують невелику швидкість навчання - Косинусне відпал: швидкість навчання зменшується відповідно до косинусної функції - Адаптивне налаштування: коригує на основі продуктивності валідаційного набору **Вибір розміру партії**: - Обмеження пам'яті: Розгляньте об'єм пам'яті GPU - Градієнтова стабільність: забезпечує більш стабільний градієнт для більших партій - Швидкість збіжності: Швидкість і стабільність тренування балансу ## Практичні аспекти застосування ### Обчислювальна оптимізація **Оптимізація пам'яті**: - Градієнтні контрольні точки: Зменшує слід пам'яті прямого поширення - Тренування змішаної точності: зменшення потреб у пам'яті з FP16 - Динамічна оптимізація графів: Оптимізує виділення пам'яті для обчислених графів **Оптимізація швидкості**: - Паралельні обчислення: використовує можливості паралельної обробки GPU - Оптимізація алгоритмів: реалізована за допомогою ефективних алгоритмів прямого руху назад - Пакетна оптимізація: Правильно встановлюйте розміри пакетів ### Чисельна стабільність **Обчислення ймовірностей**: - Обчислення логарифмічного простору: Уникнути переповнення значень, спричиненого множенням ймовірностей - Чисельне обрізання: обмежує діапазон значень ймовірностей - Методи нормалізації: Забезпечення валідності розподілів ймовірностей **Градієнтна стабільність**: - Градієнтне обрізання: запобігає градієнтним вибухам - Ініціалізація ваги: Використовуйте відповідну стратегію ініціалізації - Пакетна нормалізація: стабілізує процес навчання ## Оцінка ефективності ### Оцінити метрики **Точність на рівні персонажа**: Accuracy_char = Кількість правильно розпізнаних символів / Загальна кількість символів **Точність на рівні серії**: Accuracy_seq = кількість точно правильних послідовностей / загальна кількість послідовностей **Відстань редагування**: Вимірює різницю між передбачуваною послідовністю та дійсною послідовністю, включаючи мінімальну кількість операцій вставки, видалення та заміни. ### Аналіз помилок **Поширені типи помилок**: - Плутанина персонажів: Неправильне визначення схожих персонажів - Помилки дублювання: CTC мають тенденцію до дублювання символів - Помилка довжини: неточні прогнози довжини послідовності **Стратегії вдосконалення**: - Складний добування вибірки: Зосередження уваги на тренуванні зразків із високим рівнем похибок - Оптимізація постобробки: Виправляє помилки за допомогою мовних моделей - Інтегрований підхід: поєднання прогнозів з кількох моделей ## Резюме Функція втрат CTC є потужним інструментом для моделювання послідовностей, особливо при вирішенні задач вирівнювання. Впроваджуючи алгоритми порожнього маркування та динамічного програмування, CTC реалізує наскрізне навчання послідовностей і уникає складних етапів попередньої обробки. **Основні висновки**: - CTC вирішує проблему невідповідності довжин вхідних і вихідних послідовностей - Алгоритми вперед-назад забезпечують ефективні обчислення ймовірностей - Відповідна стратегія декодування є ключовою для фінального виконання - Методи навчання та стратегії оптимізації суттєво впливають на продуктивність моделі **Поради щодо застосування**: - Вибрати відповідну стратегію декодування для конкретного завдання - Акцент на методах попередньої обробки та вдосконалення даних - Фокус на чисельній стабільності та обчислювальній ефективності - Оптимізація постобробки на основі знань домену Успішне застосування CTC заклало важливу основу для розвитку глибокого навчання у сфері моделювання послідовностей, а також забезпечило ключову підтримку розвитку технології OCR.
OCR-асистент QQ онлайн-обслуговування клієнтів
Служба підтримки QQ(365833440)
OCR-асистент у групі комунікації користувачів QQ
QQГрупа(100029010)
Асистент OCR — зв'яжіться зі службою підтримки електронною поштою
Поштова скринька:net10010@qq.com

Дякую за ваші коментарі та поради!