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

【Серія OCR з глибокого навчання·6】Глибокий аналіз архітектури CRNN

Детальний аналіз архітектури 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.
OCR-асистент QQ онлайн-обслуговування клієнтів
Служба підтримки QQ(365833440)
OCR-асистент у групі комунікації користувачів QQ
QQГрупа(100029010)
Асистент OCR — зв'яжіться зі службою підтримки електронною поштою
Поштова скринька:net10010@qq.com

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