【Серия OCR для глубокого обучения·6】Глубокий анализ архитектуры CRNN
📅
Время публикации: 2025-08-19
👁️
Чтение:1913
⏱️
Примерно 22 мин (4248 слов)
📁
Категория: Продвинутые руководства
Детальный анализ архитектуры CRNN, включая извлечение признаков CNN, моделирование последовательностей RNN и полную реализацию функции потерь CTC. Погрузитесь в идеальное сочетание CNN и RNN.
## Введение
CRNN (Convolutional Recurrent Neural Network) — одна из важнейших архитектур в области глубокого обучения OCR, предложенная Бай Сяном и др. в 2015 году. CRNN умело сочетает возможности извлечения признаков сверточных нейронных сетей (CNN) с возможностями моделирования последовательностей рекуррентных нейронных сетей (RNN) для достижения сквозного распознавания текста. В этой статье будет представлен глубокий анализ архитектурного проектирования CRNN, принципов работы, методов обучения и конкретных приложений в OCR, предоставляя читателям всестороннее техническое понимание.
## Обзор архитектуры CRNN
### Мотивация в дизайне
До CRNN системы OCR обычно применяли пошаговый подход: сначала выполнялось обнаружение и сегментация символов, а затем распознавался каждый символ. Этот подход имеет следующие проблемы:
**Ограничения традиционных методов**:
- Распространение ошибок: ошибки сегментации символов могут напрямую влиять на результаты распознавания
- Сложность: требует проектирования сложных алгоритмов сегментации символов
- Плохая надёжность: чувствительность к интервалу между символами и изменениям шрифта
- Неспособность работать с непрерывными штрихами: явление непрерывных штрихов в рукописном тексте трудно отделить
**Инновационные идеи CRNN**:
- Сквозное обучение: напрямую отображение изображений в текстовые последовательности
- Отсутствие сегментации: Избегает сложности сегментации символов
- Моделирование последовательностей: использование RNN для моделирования зависимостей между символами
- CTC Alignment: решает несоответствия длины последовательностей входа и выхода
### Общая архитектура
Архитектура CRNN состоит из трёх основных компонентов:
**1. Сверточные слои**:
- Функция: Извлекать последовательности признаков из входных изображений
- Вход: изображение текстовой строки (фиксированная высота, переменная ширина)
- Выход: последовательность карт объектов
**2. Повторяющиеся слои**:
- Функция: моделирование контекстных зависимостей в последовательностях признаков
- Вход: последовательность признаков, извлеченная CNN
- Выход: последовательность признаков с контекстной информацией
**3. Слой транскрипции**:
- Функция: Преобразование последовательностей признаков в текстовые
- Метод: Использование CTC (Коннекционистская временная классификация)
- Вывод: итоговый результат распознавания текста
## Подробное объяснение сверточных слоёв
### Стратегии извлечения признаков
Сверточный слой CRNN специально разработан для распознавания текста:
**Особенности структуры сети**:
- Малая глубина: обычно используется 7 слоёв сверточных слоёв
- Малые сверточные зерна: в основном используются 3×3 сверточных зерна
- Стратегия пулинга: используйте пулинг экономно в направлении ширины
**Конкретная конфигурация сети**:
Вход: 32×В×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 пул, размер шага (2,1)
Conv5: 512 3×3 сверточных сердечников, шаг 1, заполнить 1
BatchNorm + ReLU
Conv6: 512 3×3 сверточных ядра, шаг 1, заполнить 1
BatchNorm + ReLU
MaxPool4: 2×1 пул, размер шага (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:
**Роль 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**:
- Замена ГРУ: Использование ГРУ для уменьшения количества параметров
- Transformer: заменяет RNN с помощью механизмов самовнимания
- Многомасштабные особенности: включают элементы разных масштабов
### Оптимизация производительности
**Ускорение вывода**:
- Квантование модели: квантование INT8 снижает вычислительные усилия
- Обрезка модели: удаление неважных соединений
- Дистилляция знаний: изучение знаний о больших моделях с малыми моделями
**Оптимизация памяти**:
- Градиентные контрольные точки: Уменьшают отпечаток памяти во время обучения
- Смешанная точность: тренировка с FP16
- Динамическая оптимизация графов: оптимизация структуры вычисленного графа
## Реальные случаи применения
### Распознавание рукописного текста
**Сценарии применения**:
- Оцифровка рукописных заметок
- Автозаполнение формы
- Признание исторических документов
**Технические особенности**:
- Большая вариация символов: требует сильных возможностей извлечения признаков
- Непрерывная обработка ударов: Преимущества механизма CTC очевидны
- Значение контекста: возможности моделирования последовательностей у RNN критически важны
### Распознавание печатного текста
**Сценарии применения**:
- Оцифровка документов
- Идентификация билетов
- Распознавание указателей
**Технические особенности**:
- Регулярность шрифтов: извлечение признаков CNN относительно просто
- Правила типографики: Информация о макете может использоваться
- Требования к высокой точности: Требуется тонкая настройка модели
### Распознавание текста сцены
**Сценарии применения**:
- Распознавание текста в уличном виде
- Идентификация на этикетках продукта
- Распознавание дорожных знаков
**Технические особенности**:
- Сложный фон: требует надёжного извлечения признаков
- Сильная деформация: требуется устойчивое архитектурное проектирование
- Требования в реальном времени: требуют эффективного рассуждения
## Краткое содержание
Как классическая архитектура глубокого обучения OCR, CRNN успешно решает многие задачи традиционных методов OCR. Его сквозная методика обучения, концепция дизайна без сегментации символов и внедрение механизма CTC стали важной вдохновлением для дальнейшего развития технологии OCR.
**Ключевые вклады**:
- Сквозное обучение: упрощает проектирование систем OCR
- Моделирование последовательностей: эффективно использует свойства последовательности текста
- Выравнивание CTC: устранено несоответствие длины последовательностей
- Простая архитектура: Легко понять и реализовывать
**Направление развития**:
- Механизм внимания: привлечение внимания для повышения эффективности
- Трансформер: заменяет RNN на самосознание
- Мультимодальное слияние: объединение другой информации, например, языковых моделей
- Лёгкий дизайн: сжатие модели для мобильных устройств
Успех CRNN свидетельствует о огромном потенциале глубокого обучения в области OCR и предоставляет ценный опыт для понимания того, как разрабатывать эффективные сквозные системы обучения. В следующей статье мы рассмотрим математику и детали реализации функции потерь CTC.
Теги:
CRNN
CNN
RNN
LSTM
CTC
OCR
Глубокое обучение
От начала до конца
Моделирование последовательностей