Реферат
на тему:
“Системи оптичного розпізнавання образів”
На сьогоднішній день існує досить багато потужних програм по розпізнаванню символів, але слід зазначити, що здатність людини читати друкований текст низької якості дотепер перевершує здатності комп'ютера.
Кожен друкований текст має первинну властивість — шрифти, якими він надрукований. Виходячи з цього, існують два класи алгоритмів розпізнавання друкованих символів: шрифтовий та безшрифтовий. Шрифтові або шрифтозалежні алгоритми використовують апріорну інформацію про шрифт, яким надруковано букви. Це означає, що програмі повинна бути надана повноцінна вибірка тексту, надрукованого даним шрифтом. Програма вимірює й аналізує різні характеристики шрифту й заносить їх у свою базу еталонних характеристик. По закінченні цього процесу шрифтова програма оптичного розпізнавання символів готова до розпізнавання даного конкретного шрифту.
Недоліки зазначеного підходу:
- алгоритм повинен заздалегідь знати шрифт, що йому представляють для розпізнавання, тобто він повинен зберігати в базі різні характеристики цього шрифту;
- якість розпізнавання тексту, надрукованого довільним шрифтом, буде прямо пропорційна кореляції характеристик цього шрифту зі шрифтами, наявними в базі програми.
Ці фактори обмежують універсальність таких алгоритмів.
Для роботи програми розпізнавання необхідний блок настроювання на конкретний шрифт. Очевидно, що цей блок буде вносити свою частку помилок в інтегральну оцінку якості розпізнавання, або функцію встановлення шрифту доведеться покласти на користувача.
Програма, заснована на шрифтовому алгоритмі розпізнавання символів, вимагає від користувача спеціальних знань про шрифти взагалі, про їхні групи й відмінності один від одного, про шрифти, якими надруковано документ користувача. У випадку якщо паперовий документ не створений самим користувачем, а прийшов до нього ззовні, не існує загального способу довідатися, з використанням яких шрифтів був надрукований цей документ.
З іншого боку, у шрифтового підходу є перевага, завдяки якій його активно використовують й, очевидно, будуть використовувати в майбутньому. А саме, маючи детальну апріорну інформацію про символи, можна побудувати досить точні й надійні алгоритми розпізнавання. Взагалі, при побудові шрифтового алгоритму розпізнавання, на відміну від безшрифтового, надійність розпізнавання символу є інтуїтивно ясною й математично вираженою величиною. Ця величина визначається як відстань у якому-небудь метричному просторі від еталонного символу, пред'явленого програмі в процесі навчання, до символу, що програма намагається розпізнати.
Другий клас алгоритмів — безшрифтові або шрифтонезалежні, тобто алгоритми, що не мають апріорних знань про символи, що надходять до них на вхід. Ці алгоритми вимірюють й аналізують різні характеристики (ознаки), що властиві буквам як таким безвідносно шрифту й абсолютного розміру, яким вони надруковані. У граничному випадку для шрифтонезалежного алгоритму процес навчання може бути відсутнім. У цьому випадку характеристики символів вимірює, кодує й поміщає в базу програми сама людина. Однак, на практиці рідко зустрічаються випадки, коли такий шлях вичерпно вирішує поставлене завдання. Більш загальний шлях створення бази характеристик полягає в навчанні програми на вибірці реальних символів.
Hедоліком даного підходу є нижча якість розпізнавання, ніж у шрифтових алгоритмів. Це пов'язане з тим, що рівень узагальнення при вимірах характеристик символів набагато більший, ніж у випадку шрифтозалежних алгоритмів. Фактично це означає, що різні допуски й спрощення при вимірах характеристик символів для роботи безшрифтових алгоритмів можуть бути в 2-20 разів більші в порівнянні зі шрифтовими.
Переваги цього підходу тісно пов'язані з його недоліками. Основними перевагами є:
- універсальність. Це означає, з одного боку, можливість застосування цього підходу у випадках великої різноманітності символів, які можуть надійти на вхід системи; з іншого боку, за рахунок закладеної в них здатності узагальнювати, такі алгоритми можуть екстраполювати накопичені знання за межі навчальної вибірки, тобто стійко розпізнавати символи, на вигляд далекі від тих, які були присутні в навчальній вибірці.
- технологічність. Процес навчання шрифтонезалежних алгоритмів звичайно є більше простим й інтегрованим у тому розумінні, що навчальна вибірка не фрагментована на різні класи. При цьому відсутня необхідність підтримувати в базі характеристик різні умови спільного існування цих класів (некорельованість, незмішуваність, систему унікального іменування й т.п.). Проявом технологічності є також той факт, що часто вдається створити майже повністю автоматизовані процедури навчання.
- зручність у процесі використання програми. У випадку, якщо програма побудована на шрифтонезалежних алгоритмах, користувач не зобов'язаний знати що-небудь про сторінку, яку він хоче ввести в комп'ютерну пам'ять і повідомляти програму про ці знання. Також спрощується інтерфейс користувача програми за рахунок відсутності набору опцій і діалогів, що обслуговують навчання й керування базою характеристик. У цьому випадку процес розпізнавання можна представляти користувачеві як “чорний ящик” (при цьому користувач повністю не має змоги керувати, або якимось чином модифікувати хід процесу розпізнавання). У підсумку це приводить до розширення кола потенційних користувачів за рахунок включення в нього людей, що наділені мінімальною комп'ютерною грамотністю.
При розпізнаванні символів досить широко використовуються штучні нейронні мережі. Алгоритми, що використовують нейронні мережі для розпізнавання символів, часто будуються в такий спосіб. Зображення символу (растр), що є вхідним для розпізнавання, приводиться до деякого стандартного розміру. Як правило, використається растр розміром 16х16 пікселів.
Значення яскравості у вузлах нормалізованого растра використовуються, як вхідні параметри нейронної мережі. Число вихідних параметрів нейронної мережі дорівнює числу розпізнаваних символів. Результатом розпізнавання є символ, якому відповідає найбільше зі значень вихідного вектора нейронної мережі. Підвищення надійності таких алгоритмів пов'язано, як правило, або з пошуком більш інформативних вхідних ознак, або з ускладненням структури нейронної мережі.
Надійність розпізнавання й потреба програми в обчислювальних ресурсах багато в чому залежать від вибору структури й параметрів нейронної мережі. Зображення цифр приводяться до єдиного розміру (16х16 пікселів). Отримане зображення подається на вхід нейронної мережі, що має три внутрішніх рівні й 10 вузлів у верхньому рівні. Нижні шари мережі не є повнопов‘язаними. Вузли нижчого рівня спільно використовують загальний набір ваг. Все це, за задумом розроблювачів, повинне підвищити здатність нижчих рівнів мережі до виділення первинних ознак у зображеннях. Отримана в такий спосіб нейронна мережа має 1256 вузлів й 9760 незалежних параметрів. Для збільшення здатності мережі до узагальнення й зменшення обсягу необхідних обчислень і пам'яті проводиться видалення маловикористовуваних ваг. У результаті число незалежних параметрів зменшується в чотири рази. Навчання нейронної мережі проведено на наборі з 7300 символів, тестування на наборі з 2000 символів. Помилки розпізнавання становлять приблизно 1% на навчальному наборі й 5% на перевірочному.
Як вхідні параметри нейронної мережі, замість значень яскравості у вузлах нормалізованого растра можуть використовуватися значення, що характеризують перепад яскравості. Такі вхідні параметри дозволяють краще виділяти межі букви. Об‘єкти розпізнавання приводяться до розміру 16х16 пікселів. Після цього вони піддаються додатковій обробці з метою виділення ділянок з найбільшими перепадами в яскравості.
Одним із широко використовуваних методів підвищення точності розпізнавання є одночасне використання декількох різних розпізнавальних модулів і наступне об'єднання отриманих результатів (наприклад, шляхом голосування). При цьому дуже важливо, щоб алгоритми, використовувані цими модулями, були як можна більше незалежні. Це може досягатися як за рахунок використання розпізнавальних модулів, що використовують принципово різні алгоритми розпізнавання, так і спеціальним підбором навчальних даних.
Один з таких методів був запропонований кілька років тому і заснований на використанні трьох розпізнавальних модулів (машин). Перша машина навчається звичайним чином. Друга машина навчається на символах, які були відфільтровані першою машиною таким чином, що друга машина бачить суміш символів, 50% з яких були розпізнані першою машиною вірно й 50% невірно. Нарешті, третя машина навчається на символах, на яких результати розпізнавання 1-ої й 2-ий машин різні. При тестуванні розпізнавані символи подаються на вхід всім трьом машинам. Оцінки, одержувані на виході всіх трьох машин складаються. Символ, що одержав найбільшу сумарну оцінку видається як результат розпізнавання.
Як правило, алгоритм розпізнавання заснований на виділенні з растра із зображенням букви первинних ознак і наступному використанні штучної нейронної мережі для оцінки близькості вхідного зображення із символами із заданого набору букв. Результатом роботи є набір оцінок, що відбивають ступінь близькості розпізнаваного символу із символами із заданого набору символів. Набір розпізнаваних символів може включати букви й цифри. Вхідні матеріали для розпізнавання зображення символів перетворюються до єдиного розміру.
Відмінною рисою реалізованого алгоритму є використання нейронної мережі з досить великою кількістю вхідних ознак. Hа вихідному зображенні виділяються первинні ознаки, що характеризують перепади яскравості у вузлах растра. Нейронна мережа має один внутрішній рівень, що містить 100 вузлів і є загальнопов‘язаною, тобто кожен вузол внутрішнього рівня з'єднаний з усіма вхідними вузлами, а кожен вузол верхнього рівня з'єднаний з усіма вузлами внутрішнього рівня. Для зменшення обсягу обчислень при розпізнаванні для кожного розпізнаваного зображення символу використовуються не всі вхідні ознаки, а тільки частина, іншими словами вектор вхідних параметрів нейронної мережі є сильно розрідженим.
Навчання нейронної мережі відбувається звичайним чином, тобто використовується алгоритм зворотнього поширення помилки. Програма навчання одержує на вхід файл із зображеннями символів. При навчанні символи із цієї бази перебираються циклічно. Для кожного зображення з бази виділяються первинні ознаки, після чого виконуються прямий і зворотний проходи по мережі. Модифікація ваг мережі при навчанні виконується після кожного символу. Крок зміни ваг мережі постійний.
Для прискорення й поліпшення навчання погано розпізнавані символи проглядаються частіше за інші. Для цього використовується кеш, у якому зберігаються важко розпізнавані зображення. Растри для навчання вибираються як із вхідного файлу, так і з кешу. Вибір символу з кешу відбувається з урахуванням якості його розпізнавання, тобто погано розпізнавані символи вибираються частіше.
Крім того, при навчанні мережі використовується регулярізація ваг мережі, тобто вводиться їхнє експонентне згасання.
Якість розпізнавання залежить не тільки від алгоритмів, що використовуються програмами розпізнавання й навчання нейронної мережі, але й від того, яким чином навчалася нейронна мережа. На якість навчання нейронної мережі впливають наступні фактори: параметри бази з навчальними растрамиб, розмір, спосіб відбору растрів, порядок растрів у базі, наявність брудних символів і помилок у розмітці.
На різних етапах навчання можливе використання різних оптимізуючих факторів:
1. Крок зміни коефіцієнтів мережі.
2. Використання регуляризації мережі.
3. Історія навчання мережі.
4. Використання додаткового шуму й перекручувань символів.
5. Момент зупинки навчання. Бажано уникати як недостатнього навчання мережі, так і перенавчання.
6. Розмір кешу поганих растрів і відносна частота вибору растрів з навчальної бази даних і з кешу поганих символів.
Параметри навчання взаємозалежні й повинні вибиратися узгоджено. Так, наприклад, при невеликому розмірі навчальної бази використання перекручувань символів може приводити до поліпшення якості навчання, а при збільшенні розміру бази приводить до його погіршення. Використання кешу поганих символів на самому початку навчання не має особливого сенсу. Навпаки, після декількох проходів по базі з навчальними символами більша частина символів з бази розпізнається з дуже великою надійністю. Зміна ваг мережі відбувається головним чином за рахунок растрів, що втримуються в кеші поганих символів.
Регуляризація (тобто введення експонентного згасання ваг при навчанні) приводить до деякого погіршення якості розпізнавання. Однак використання дуже невеликого коефіцієнта згасання дозволяє підвищити стійкість мережі без помітних втрат для розпізнавання.
Для визначення найкращого моменту зупинки мережі можна періодично тестувати якість розпізнавання на невеликій незалежній базі даних.
Порівняння якості різних алгоритмів розпізнавання символів ускладнене тим, що відносне значення числа правильно розпізнаних символів істотно залежить від конкретної бази даних, на якій проводиться тестування. На якість розпізнавання також впливають: обсяг набору розпізнаваних символів, технологія навчання нейронної мережі, методика й алгоритми виділення первинних ознак, технологія підготовки навчальної бази даних й інші фактори.
Алгоритм може бути вдосконалений шляхом пошуку більш адекватного подання структурних ознак розпізнаваних символів. Використання більшої навчальної бази даних і збільшення пам'яті нейронної мережі також може дати деяке поліпшення якості розпізнавання. Проектована система має працювати у режимі, близькому до реального часу, а отже розроблюваний алгоритм має бути досить швидким і, в той же час, мати достатню точність розпізнання.
Для реалізації поставленої мети доцільно буде спочатку виділити на фотознімку номерний знак, а потім, використовуючи адаптовані до реальних умов існуючі алгоритми розпізнавання символів, розпізнати власне державний номер.
З цією метою вхідне зображення проходить етап первинної обробки наступним чином:
- пікселам, колір яких відповідає кольору тла номерного знаку (білий, жовтий, блакитний), привласнюється білий колір — $00FFFFFF у форматі RGB;
- пікселам, колір яких не відповідає кольору тла номерного знаку, привласнюється чорний колір — $00000000 у форматі RGB;
Цей етап можливо проводити як окрему процедуру попередньої обробки, так і в якості складової під час більш детального аналізу зображення.
Зображення аналізується починаючи з верхнього лівого кута і закінчується правим нижнім. Мета аналізу – визначити місця переходу між білою та чорною областю зображення, на їх основі визначити прямі лінії, а на перетині прямих ліній визначити кути отриманої рамки номерного знаку. Дослідним шляхом визначається така кількість послідовних точок переходу, що може трактуватися як пряма лінія. Слід зазначити, що перебирати все зображення попіксельно недоцільно. Після знаходження першого перепаду кольору пряма лінія визначається різницею між кольорами сусідніх пікселів. Для цього використаємо функцію:
де А – амплітуда, відстань по осі ординат аналізованого піксела від прогнозованої границі (підбирається експериментально); В – коефіцієнт розтягнення по осі абсцис (оптимальне значення В=4 – забезпечує прямолінійне діагональне сканування); С – забезпечує початкові умови для сканування (з якого піксела обчислюється перехід кольору).
Коефіцієнти А, В, С доцільно обирати серед множини натуральних чисел. Таким чином кількість аналізованих пікселів можливо скоротити в два рази.
Сучасні методи рішення поставленого завдання не враховують в достатній мері проблеми фіксації й розпізнавання текстових зображень і прийняття відповідних рішень.