【Серия OCR за дълбоко обучение·6】Задълбочен анализ на архитектурата на CRNN
📅
Време на публикация: 2025-08-19
👁️
Четене:1947
⏱️
Около 22 минути (4248 думи)
📁
Категория: Разширени ръководства
Подробен анализ на архитектурата на CRNN, включително извличане на характеристики от CNN, моделиране на RNN последователности и пълна реализация на функцията за загуба на CTC. Потопете се в перфектната комбинация от CNN и RNN.
## Въведение
CRNN (Convolutional Recurrent Neural Network) е една от най-важните архитектури в областта на дълбокото обучение на OCR, предложена от Бай Сян и др. през 2015 г. CRNN умело комбинира възможностите за извличане на признаци на конволюционните невронни мрежи (CNN) с възможностите за моделиране на последователности на рекурентни невронни мрежи (RNN), за да постигне разпознаване на текст от край до край. Тази статия ще предостави задълбочен анализ на архитектурния дизайн, работните принципи, методите на обучение и специфичните приложения в OCR, предоставяйки на читателите цялостно техническо разбиране.
## Преглед на архитектурата на CRNN
### Мотивация за дизайн
Преди CRNN, OCR системите обикновено прилагаха стъпка по стъпка подход: първо се извършваше откриване и сегментиране на символи, след което всеки символ се разпознаваше. Този подход има следните проблеми:
**Ограничения на традиционните методи**:
- Разпространение на грешки: Грешките в сегментирането на символи могат пряко да повлияят на резултатите от разпознаването
- Сложност: Изисква проектиране на сложни алгоритми за сегментиране на символи
- Слаба устойчивост: Чувствителност към разстоянието между символите и промени на шрифтовете
- Невъзможност за обработка на непрекъснати щрихи: Явлението на непрекъснатите щрихи в ръкописния текст е трудно за разграничение
**Иновативните идеи на CRNN**:
- Обучение от край до край: Картографиране директно от изображения към текстови последователности
- Без сегментация: Избягва сложността на сегментирането на характери
- Моделиране на последователности: Използване на RNNs за моделиране на зависимости между героите
- 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 обединени, размер на стъпка 2
Conv3: 256 3×3 сгъваеми ядра, стъпка 1, запълване 1
Conv4: 256 3×3 сгъваеми ядра, стъпка 1, запълни 1
MaxPool3: 2×1 pool, размер на стъпката (2,1)
Conv5: 512 3×3 сгъваеми ядра, стъпка 1, запълване 1
BatchNorm + ReLU
Conv6: 512 3×3 сгъваеми ядра, стъпка 1, запълване 1
BatchNorm + ReLU
MaxPool4: 2×1 pool, размер на стъпките (2,1)
Conv7: 512 2×2 конволюционни ядра, стъпка 1, запълване 0
Мощност: 512×1×W/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:
**Ролята на CTCs**:
- Решаване на проблеми с подравняването: Дължините на входните последователности не съвпадат с дължините на изходните последователности
- Обучение от край до край: Няма нужда от анотации за подравняване на ниво символ
- Обработване на дублиращи се: Обработване на случаи с дублиращи се знаци правилно
**Как работи 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 връзки: Добавени остатъчни връзки за подобряване на стабилността на обучението
- DenseNet Fabric: Плътните връзки подобряват мултиплексирането на функции
- Механизъм на вниманието: Въвежда пространствено внимание в CNN
**Частични подобрения на RNN**:
- GRU Replace: Използване на GRU за намаляване на броя параметри
- Transformer: Заменя RNN чрез механизми за самовнимание
- Мулти-мащабни характеристики: Включват характеристики от различни мащаби
### Оптимизация на производителността
**Ускорение на извода**:
- Квантуване на модела: Квантизацията на INT8 намалява изчислителните усилия
- Изрязване на модела: Премахване на неважните връзки
- Дестилация на знания: Научете знанията за големи модели с малки модели
**Оптимизация на паметта**:
- Градиентни контролни точки: Намаляване на отпечатъка на паметта по време на обучение
- Смесена прецизност: Трениране с FP16
- Оптимизация на динамични графи: Оптимизиране на структурата на изчисления граф
## Реални случаи на приложение
### Ръкописно разпознаване на текст
**Сценарии за приложение**:
- Дигитализиране на ръкописни бележки
- Автоматично попълване на формуляр
- Признание на исторически документи
**Технически характеристики**:
- Голяма вариация на символите: Изисква силни възможности за извличане на признаци
- Непрекъсната обработка на удари: Предимствата на механизма CTC са очевидни
- Контекстът е важен: Възможностите за моделиране на последователности на RNN са критични
### Разпознаване на печатни текстове
**Сценарии за приложение**:
- Дигитализиране на документи
- Идентификация на билет
- Разпознаване на табели
**Технически характеристики**:
- Редовност на шрифта: Извличането на характеристики в CNN е сравнително лесно
- Правила за типография: Информация за оформлението може да се използва
- Изисквания за висока точност: Изисква фина настройка на модела
### Разпознаване на текст на сцена
**Сценарии за приложение**:
- Разпознаване на текст в Street View
- Идентификация на етикета на продукта
- Разпознаване на пътни знаци
**Технически характеристики**:
- Сложен фон: Изисква стабилно извличане на характеристики
- Тежка деформация: Необходим е стабилен архитектурен дизайн
- Изисквания в реално време: Изисква ефективно разсъждение
## Резюме
Като класическа архитектура на OCR за дълбоко обучение, CRNN успешно решава много проблеми на традиционните OCR методи. Неговият метод за обучение от край до край, концепцията за дизайн без сегментиране на символите и въвеждането на механизма CTC са важна вдъхновение за последващото развитие на OCR технологията.
**Ключови приноси**:
- Обучение от край до край: Опростява дизайна на OCR системи
- Моделиране на последователности: Ефективно използва свойствата на последователността на текста
- CTC подравняване: Адресирано несъответствието в дължината на последователността
- Проста архитектура: Лесна за разбиране и реализиране
**Посока на развитие**:
- Механизъм за внимание: Въвеждане на внимание за подобряване на представянето
- Transformer: Заменя RNN с самовнимание
- Мултимодално сливане: Комбиниране на друга информация като езикови модели
- Лек дизайн: компресия на модели за мобилни устройства
Успехът на CRNN е доказателство за големия потенциал на дълбокото обучение в областта на OCR и предоставя ценен опит за разбиране на ефективни системи за обучение от край до край. В следващата статия ще разгледаме математиката и детайлите на реализацията на функцията за загуба на CTC.
Тагове:
CRNN
CNN
RNN
LSTM
CTC
OCR
Дълбоко обучение
От край до край
Моделиране на последователности