【Серія OCR з глибокого навчання·6】Глибокий аналіз архітектури CRNN
📅
Час публікації: 2025-08-19
👁️
Читання:1890
⏱️
Приблизно 22 хв (4248 слів)
📁
Категорія: Розширені посібники
Детальний аналіз архітектури CRNN, включно з виділенням ознак CNN, моделюванням послідовностей RNN та повною реалізацією функції втрат CTC. Зануртеся у ідеальне поєднання CNN і RNN.
## Вступ
CRNN (Convolutional Recurrent Neural Network) — одна з найважливіших архітектур у сфері глибокого навчання OCR, запропонована Бай Сяном та ін. у 2015 році. CRNN майстерно поєднує можливості вилучення ознак згорткових нейронних мереж (CNN) з можливостями моделювання послідовностей рекурентних нейронних мереж (RNN) для досягнення наскрізного розпізнавання тексту. Ця стаття надасть глибокий аналіз архітектурного дизайну, робочих принципів, методів навчання та конкретних застосувань в OCR, надаючи читачам всебічне технічне розуміння.
## Огляд архітектури CRNN
### Мотивація до дизайну
До CRNN системи OCR зазвичай застосовували покроковий підхід: спочатку виконувалися виявлення та сегментація символів, а потім розпізнавали кожен символ. Цей підхід має такі проблеми:
**Обмеження традиційних методів**:
- Поширення помилок: Помилки сегментації символів можуть безпосередньо впливати на результати розпізнавання
- Складність: Вимагає розробки складних алгоритмів сегментації символів
- Низька надійність: чутливість до інтервалу між символами та змін шрифту
- Нездатність обробляти безперервні штрихи: Явище безперервних штрихів у рукописному тексті важко відокремити
**Інноваційні ідеї CRNN**:
- Наскрізне навчання: Відображення безпосередньо з зображень у текстові послідовності
- Відсутність сегментації: уникає складності сегментації символів
- Моделювання послідовностей: використання RNN для моделювання залежностей між персонажами
- CTC Alignment: Вирішує невідповідності довжини послідовностей вхід-вихід
### Загальна архітектура
Архітектура CRNN складається з трьох основних компонентів:
**1. Згорткові шари**:
- Функція: Вилучення послідовностей ознак із вхідних зображень
- Вхід: текстове зображення рядка (фіксована висота, змінна ширина)
- Вихід: послідовність карти об'єктів
**2. Рекурентні шари**:
- Функція: Моделювати контекстуальні залежності в послідовностях ознак
- Вхід: послідовність ознак, витягнута CNN
- Вихід: послідовність ознак з контекстною інформацією
**3. Транскрипційний шар**:
- Функція: Перетворення послідовностей ознак у текстові
- Метод: Використання CTC (Конекціоністська часова класифікація)
- Вихід: Фінальний результат розпізнавання тексту
## Детальне пояснення згорткових шарів
### Стратегії вилучення ознак
Згортковий шар CRNN спеціально розроблений для розпізнавання тексту:
**Особливості структури мережі**:
- Невелика глибина: зазвичай використовують 7 шарів згорткового шару
- Малі згорткові зерна: переважно використовуються 3×3 згорткові ядра
- Стратегія пулінгу: Використовуйте пулінг обережно у напрямку ширини
**Конкретна конфігурація мережі**:
Вхід: 32×W×1 (висота 32, ширина W, один канал)
Conv1: 64 3×3 згорткових ядер, крок 1, заповнення 1
MaxPool1: 2×2 пули, довжина кроку 2
Conv2: 128 3×3 згорткових ядер, крок 1, заповнити 1
MaxPool2: 2×2 pooled, розмір кроку 2
Conv3: 256 3×3 згорткових ядер, крок 1, заповнити 1
Conv4: 256 3×3 згорткових ядер, крок 1, заповнити 1
MaxPool3: 2×1 пул, розмір кроку (2,1)
Conv5: 512 3×3 згорткових сердечників, крок 1, заповнити 1
BatchNorm + ReLU
Conv6: 512 3×3 згорткових ядер, крок 1, заповнити 1
BatchNorm + ReLU
MaxPool4: 2×1 pooled, розмір кроку (2,1)
Conv7: 512 2×2 згорткових ядер, крок 1, заповнити 0
Потужність: 512×1×Вт/4
### Ключові аспекти дизайну
**Стратегія високої компресії**:
- Мета: Стиснути зображення до висоти 1 пікселя
- Метод: Поступово стискайте висоту за допомогою кількох шарів пулінгу
- Причина: Висота текстового рядка відносно неважлива
**Стратегія утримання ширини**:
- Мета: максимально зберігати інформацію про ширину зображення
- Метод: Зменшити операції пулювання у напрямку ширини
- Причина: Інформація послідовності тексту переважно відображається у напрямку ширини
**Конвертація карти об'єктів**:
Вихід згорткового шару потрібно перетворити у вхідний формат RNN:
- Сирий вихід: C×H×W (висота × каналу× ширина)
- Конвертовано: W×C (довжина послідовності× розмір ознаки)
- Метод: Візьміть вектор ознак для кожної позиції ширини як часовий крок
## Детальне пояснення круглого шару
### Відбір RNN
CRNN зазвичай використовують двонаправлені LSTM як шар петлі:
**Переваги двонаправленого LSTM**:
- Контекстуальна інформація: Використовуйте як прямий, так і зворотний контекст
- Залежності на великі відстані: LSTM здатна обробляти залежності на відстані
- Стабілізація градієнта: Уникає проблеми зникнення градієнтів
**Конфігурація мережі**:
Вхід: W×512 (довжина послідовності × розмір ознаки)
BiLSTM1: 256 прихованих комірок (128 вперед + 128 назад)
BiLSTM2: 256 прихованих комірок (128 вперед + 128 назад)
Вихід: W×256 (довжина послідовності× приховані розміри)
### Механізми моделювання послідовностей
**Моделювання залежностей за часом**:
Шар RNN фіксує залежності часу між символами:
- Інформація попереднього персонажа допомагає розпізнавати поточного персонажа
- Інформація про наступні символи також може надати корисний контекст
- Інформація всього слова або фрази допомагає розрізнити неоднозначність
**Покращення функцій**:
Ознаки, оброблені RNN, мають такі характеристики:
- Контекстно-чутливий: ознаки кожної локації містять контекстуальну інформацію
- Таймінгова послідовність: Ознаки в сусідніх локаціях мають певну безперервність
- Семантичне багатство: поєднує візуальні та послідовні риси
## Детальне пояснення транскрипційного шару
### Механізм CTC
CTC (Конекціоністська часова класифікація) є ключовим компонентом CRNN:
**Роль CTC**:
- Вирішення проблем вирівнювання: довжини вхідних послідовностей не збігаються з довжинами вихідних послідовностей
- Наскрізне навчання: Немає потреби в анотаціях вирівнювання на рівні символів
- Обробка дублікатів: правильна обробка випадків дублікатів символів
**Як працює CTC**:
1. Розширити набір міток: додати порожні мітки поверх оригінального набору символів
2. Перелік шляхів: перераховує всі можливі шляхи вирівнювання
3. Ймовірність шляху: обчисліть ймовірність кожного шляху
4. Маргіналізація: сумуємо ймовірності всіх шляхів, щоб отримати ймовірність послідовності
### Функція втрат CTC
**Математичне представлення**:
Враховуючи вхідну послідовність X і цільову послідовність Y, втрати CTC визначаються як:
L_CTC = -log P(Y| X)
де P(Y| X) отримується шляхом суми ймовірностей усіх можливих вирівняних шляхів:
P(Y| X) = Σ_π∈B^(-1)(Y) P(π| X)
Тут B^(-1)(Y) позначає всі множини шляхів, які можна відобразити у цільову послідовність Y.
**Алгоритм вперед-назад**:
Для ефективного розрахунку втрат CTC використовується алгоритм прямо-назад для динамічного програмування:
- Алгоритм прямого руху: Обчислює ймовірність досягнення кожного стану
- Зворотний алгоритм: обчислює ймовірність від кожного стану до кінця
- Обчислення градієнтів: обчислення градієнтів у поєднанні з ймовірністю вперед-назад
## Стратегія тренувань CRNN
### Попередня обробка даних
**Попередня обробка зображення**:
- Нормалізація розміру: уніфікація висоти зображення до 32 пікселів
- Підтримка співвідношення сторін: Зберігає співвідношення сторін оригінального зображення
- Конвертація в відтінки сірого: конвертація в одноканальне зображення в відтінках сірого
- Чисельна нормалізація: значення пікселів нормалізуються до [0,1] або [-1,1]
**Покращення даних**:
- Геометричні перетворення: обертання, нахил, перспективне перетворення
- Зміни освітлення: яскравість, регулювання контрасту
- Додавання шуму: гаусівський шум, сіль і перець шуму
- Розмиття: Розмиття руху, гаусове розмиття
### Техніки тренування
**Планування швидкості навчання**:
- Початкова швидкість навчання: зазвичай встановлена на 0.001
- Стратегія розпаду: експоненціальний або ступінний спад
- Стратегія розігріву: Перші кілька епох використовують невелику швидкість навчання
**Техніки регуляризації**:
- Dropout: Додайте dropout після RNN-шару
- Зменшення ваги: регуляризація L2 запобігає перепідгону
- Пакетна нормалізація: Використовуйте пакетну нормалізацію на шарі CNN
**Вибір оптимізатора**:
- Адам: адаптивна швидкість навчання, швидка збіжність
- RMSprop: Підходить для навчання RNN
- SGD+Momentum: Традиційний, але стабільний варіант
## Оптимізація та вдосконалення CRNN
### Оптимізація архітектури
**Часткові покращення CNN**:
- ResNet Connections: Додано залишкові з'єднання для покращення стабільності навчання
- DenseNet Fabric: Щільні з'єднання покращують мультиплексування функцій
- Механізм уваги: Вводить просторову увагу у CNN
**Часткові покращення RNN**:
- GRU Replacement: Використання GRU для зменшення кількості параметрів
- Трансформер: замінює RNN за допомогою механізмів самоуваги.
- Багатомасштабні функції: Включають ознаки з різних масштабів
### Оптимізація продуктивності
**Прискорення виведення**:
- Квантування моделі: квантування INT8 зменшує обчислювальні зусилля
- Обрізання моделі: Видалення неважливих з'єднань
- Дистиляція знань: вивчення знань про великі моделі з малими моделями
**Оптимізація пам'яті**:
- Градієнтні контрольні точки: Зменшення пам'яті під час тренувань
- Змішана точність: Тренування з FP16
- Оптимізація динамічного графа: оптимізація структури обчисленого графа
## Реальні прикладні випадки
### Розпізнавання рукописного тексту
**Сценарії застосування**:
- Оцифрування рукописних нотаток
- Автоматичне заповнення форми
- Визнання історичних документів
**Технічні особливості**:
- Велика варіація символів: Вимагає сильних можливостей вилучення ознак
- Безперервна обробка ударів: Переваги механізму CTC очевидні
- Контекст має значення: Можливості моделювання послідовностей у RNN є критично важливими
### Розпізнавання друкованих текстів
**Сценарії застосування**:
- Оцифрування документів
- Ідентифікація квитків
- Розпізнавання знаків
**Технічні особливості**:
- Регулярність шрифтів: вилучення ознак CNN досить просте
- Правила типографіки: Можна використовувати інформацію про макет
- Вимоги до високої точності: Потребує тонкого налаштування моделі
### Розпізнавання тексту сцени
**Сценарії застосування**:
- Розпізнавання тексту у вигляді вулиць
- Ідентифікація етикетки продукту
- Розпізнавання дорожніх знаків
**Технічні особливості**:
- Складний фон: Вимагає надійного вилучення ознак
- Сильна деформація: Потрібна надійна архітектурна конструкція
- Вимоги в реальному часі: Потребують ефективного мислення
## Резюме
Як класична архітектура глибокого навчання OCR, CRNN успішно розв'язує багато проблем традиційних методів OCR. Його наскрізний метод навчання, концепція дизайну без сегментації символів і впровадження механізму CTC стали важливим натхненням для подальшого розвитку технології OCR.
**Ключові внески**:
- Наскрізне навчання: спрощує проєктування систем OCR
- Моделювання послідовності: ефективно використовує властивості послідовності тексту
- Вирівнювання CTC: Вирішено невідповідність довжини послідовності
- Проста архітектура: Легко зрозуміти та реалізувати
**Напрямок розвитку**:
- Механізм уваги: Введення уваги для підвищення продуктивності
- Трансформер: замінює RNN на самоувагу
- Мультимодальне злиття: Об'єднує іншу інформацію, наприклад, мовні моделі.
- Легка конструкція: стиснення моделі для мобільних пристроїв
Успіх CRNN є свідченням великого потенціалу глибокого навчання у сфері OCR і надає цінний досвід для розуміння того, як розробляти ефективні системи наскрізного навчання. У наступній статті ми розглянемо математику та деталі реалізації функції втрат CTC.
Теги:
CRNN
CNN
RNN
LSTM
CTC
OCR
Глибоке навчання
Від початку до кінця
Моделювання послідовностей