![]() | 1 2 3 4 Навчання нейромережі з вчителем.Розрізняють алгоритми навчання з вчителем і без вчителя. Навчання з учителем припускає, що для кожного вхідного вектора існує цільовий вектор, що представляє собою необхідний вихід. Разом вони називаються навчальною парою. Зазвичай мережа навчається на деякому числі таких навчальних пар. Пред'являється вихідний вектор, обчислюється вихід мережі і порівнюється з відповідним цільовим вектором, різницю (помилка) за допомогою зворотного зв'язку подається в 39 мережу, і ваги змінюються відповідно до алгоритму, що прагнуть мінімізувати помилку. Вектори навчальної множини пред'являються послідовно, помилки обчислюються і ваги підлаштовуються для кожного вектора доти, поки помилка по всьому навчальному масиву не досягне прийнятно низького рівня. Навчання нейромережі без вчителя.Незважаючи на численні прикладні досягнення, навчання з учителем критикувалося за свою біологічну неправдоподібність. Важко уявити навчальний механізм в мозку, який би порівнював бажані і дійсні значення виходів, виконуючи корекцію за допомогою зворотного зв'язку. Навчання без вчителя є набагато більш правдоподібною моделлю навчання для біологічної системи. Розвинена Кохоненом і багатьма іншими, вона не потребує цільовому векторі для виходів і, отже, не вимагає порівняння з зумовленими ідеальними відповідями. Навчальне безліч складається лише з вхідних векторів. Алгоритм навчання нейроної мережі: У даній дипломній роботі в якості методу навчання використовується дельта- правило Відроу-Хоффа (навчання "з вчителем"). Розглянемо принцип роботи даного методу. Стан нейрона i визначимо наступним чином: (2.5) Як функції активації будемо використовувати сигмоїдальну функцію (1.6). Ваги нейронів на кожному кроці навчання будемо визначати наступним чином: (2.6) 40 2.1.3 Розробка алгоритму порівняння зображень з використанням відстані Хеммінга Суть розпізнавання будь-якого тексту - порівняння з образом. У дитинстві, дивлячись на текст, ми бачимо всього лише картинку. Ми ще не наділені необхідними критеріями її аналізу, для того щоб зрозуміти, що на картинці не просто малюнок, а текст, і не просто текст, а якусь розповідь. Ми ростемо, і починаємо отримувати образи символів, дізнаємося що малюнок з буквою «А» позначає букву А, а не пароходик. Стаючи старше, ми набираємо базу образів (або базу критеріїв образів), за якою шляхом порівняння та аналізу ми можемо сказати, який символ перед нами. Точно така ж ситуація і з комп'ютером. Спершу він просто отримує в пам'ять картинку, потім шукає на ній якісь області, і після цього порівнює ці області зі своєю базою і проводить аналіз, результатом якого буде визначення символу на зображенні. Передаємо в пам'ять картинку, шукаємо на картинці якісь області, порівнюємо з базою, але методи порівняння картинки досі незрозумілі. Сучасні методи порівняння зображення діляться на дві категорії: 1.Порівняння з еталоном. Порівняння за критеріямиМетод нейронних мереж може використовуватись в обох випадках. Порівняння за критеріями найбільш трудомістким, тому що виконати алгоритмічне завдання з визначенням характерних рис символу складно, та й ефективність подібного алгоритму буде напевно слабка. Пов'язано це зі схожістю символів, а якщо ми будемо розпізнавати текст низького розширення, то витрат на відточування подібного алгоритму буде в рази більше [16]. Порівняння з еталоном - завдання більш просте і більш ефективне. Тут все максимально просто - створити еталонне зображення і порівняти їх. 41 Ми будемо використовувати метод порівняння - попіксельно. Суть - почергове порівняння двох відповідних пікселів двох чорно-білих картинок. Оскільки два пікселі повинні бути відповідними, то картинки повинні бути однакові за розміром. Для простоти ми будемо розглядати тільки чорно-білі зображення. Наприклад малюнок складається всього з двох пікселів. Тоді множину всіх об'єктів, яку можна буде зобразити (універсальна множина), яка представлена на рисунку 2.3, складається з чотирьох об'єктів: (0,0), (0,1), (1,0), (1,1), де 1 - чорний піксель, 0 – білий. Рисунок 2.3 – Універсальна множина Всі об'єкти універсальної множини можна розмістити у вершинах одиничного квадрата, таким чином, множині фігур, зображених на двухпіксельному полі, може бути порівнювати безліч точок у двовимірному просторі. Ребру цього квадрата буде відповідати перехід від одного зображення до іншого. Для переходу від (1,1) до (0,0) потрібно буде пройти два ребра, для переходу від (0,1) до (0,0) - одне. Зазначимо, що число ребер у нашому переході - це кількість незбіжних пікселів двох зображень. Висновок: відстань від одного малюнка до іншого дорівнює числу незбіжних пікселів в них. Ця відстань називається відстанню Хеммінга, яка графічно зображена на рисунку 2.4. 42 Наступний етап роботи нашої програми - складання бази (масив записів символу і його графічного представлення). Ми зробимо стандартну базу зображень українських символів і цифр без застосування графічних редакторів – у вихідному коді. Для цього буде потрібно задати зображення потрібного розміру, відкрити режим канви, і написати в зображенні необхідну літеру. Рисунок 2.4 – Представлення відстані Хеммінга на системі координат Тут же необхідно обробити отриману картинку так, як ми обробляємо вихідну, щоб еталон був максимально наближений до розпізнаваної картинці і навпаки. Питання дещо ускладнюється, якщо потрібно порівняти зображення різних розмірів. Однак досить очевидним рішенням цієї проблеми є приведення всіх зображень до однакового розміру. Залишається вибрати цей розмір - якщо вибрати його занадто маленьким, то очевидно, що відмінності між зображеннями будуть нівелюватися, і у нас буде багато хибно позитивних спрацьовувань. При занадто великому розмірі невиправдано підвищується ресурсомісткість алгоритму порівняння. 43 Досвід показує, що найбільш оптимальним є розмір наведеного зображення від 16х16 до 64х64. Так само досвід показує, що колірні характеристики зображення роблять набагато менший вплив на візуальні відчуття схожості зображень в порівнянні з характеристиками яскравості, тому їх можна відкинути. Отже, алгоритм порівняння схожих зображень буде включати в себе наступні кроки.Приведення всіх зображень до одного розміру.Відкидання колірної інформації (перетворення в сіре зображення). Знаходження среднеквадратической різниці для кожної пари зменшених сірих зображень. Порівняння отриманої середньоквадратичної різниці здеяким порогом. Тут поріг визначає міру схожості зображень. Так якщо вибрати порогом 0%, то алгоритм знайде тільки повністю ідентичні зображення. При 5% порозі алгоритм зможе знайти також візуально схожі зображення, які можуть змінюватися роздільною здатністю, якістю стиснення, наявністю дрібних написів і т.д. при незначній кількості помилкових спрацьовувань. При порозі вище 10%, як правило, кількість помилкових спрацьовувань може перевищувати число позитивних спрацьовувань. Даний алгоритм в тому чи іншому варіанті повинен бути застосований у будь-якій програмі, що здійснює пошук схожих зображень. Варіації зазвичай стосуються способу отримання зменшеного зображення, розмірів зменшеного зображення і способів його квантування по кольоровій палітрі, вибору метрики, визначає ступінь відмінності зображень. 44 3. ПРОГРАМНА РЕАЛІЗАЦІЯ 3.1 Програмна реалізація модуля для розпізнавання зображень 3.1.1 Обґрунтування вибору мови програмування Система програмування Delphi версії 7 фірми Enterprise (Borland) надає найбільш широкі можливості для програмування додатків ОС Windows. Delphi - це продукт Borland International для швидкого створення додатків. Процес створення інтерфейсу майбутньої програми нагадує забаву з ігровим комп'ютерним конструктором. Тому RAD-середовища ще називають візуальними середовищами розробки: якими ми бачимо робітники і діалогові вікна програми при проектуванні, такими вони і будуть, коли програма запрацює. Високопродуктивний інструмент візуального побудови додатків включає в себе справжній компілятор коду і надає засоби візуального програмування, кілька схожі на ті, що можна виявити в Microsoft Visual Basic (вона не є RAD-системою) або в інших інструментах візуального проектування. В основі Delphi лежить мова Object Pascal, який є розширенням об'єктно-орієнтованої мови Pascal. Насамперед Delphi призначений для професійних розробників, бажаючих дуже швидко розробляти програми в архітектурі клієнт-сервер. Delphi виробляє невеликі за розмірами високоефективні виконувані модулі (. Exe і. Dll), тому в Delphi повинні бути, перш за все, зацікавлені ті, хто розробляє продукти на продаж. З іншого боку невеликі за розмірами і швидко виконувані модулі означають, що вимоги до клієнтських робочих місцях істотно знижуються - це має важливе значення і для кінцевих користувачів. 45 3.1.2 Розробка програмного продукту Для реалізації дипломного проекту була обрана мова Object Pascal. Розробка програмного продукту велася в середовищі програмування Delphi 7. Як й інші традиційні інженерні дисципліни, розробка програмного забезпечення має справу з проблемами якості, вартості та надійності. Деякі програми містять мільйони рядків вихідного коду, які, як очікується, повинні правильно виконуватися в умовах, що змінюються. Складність ПЗ порівнянна з складністю найбільш складних з сучасних машин. На сьогоднішній день вважається кращою програма, яка потребує менших затрат на розробку та супроводження, а не найкоротша чи найшвидша. Найбільш перспективний напрям організаційного розвитку є напрямок розподілу праці, спрощення кожної функції або операції, нормування праці, поетапний контроль результатів, високий рівень стандартизації. Така організація праці у виробництві ПП становить технологію виробничого процесу. Немає універсальної технології розробки програм, але більшість запропонованих технологій мають спільні риси, адже об’єкт праці – програмний продукт відрізняється продуктовою однаковістю, одним рівнем розвитку обчислювальної техніки та самої галузі програмування. За рахунок модифікації й оновлення процедурні технології успішно конкурують із новітніми сучасними концепціями. Розробка програми на основі наперед підготовлених компонентів (технологія збірного програмування) є засобом переведення програмування на індустріальну основу, зменшення складності програмування реальних задач. Розглянемо докладніше ієрархію форм дипломного проекту та їх призначення та зв'язку. Перерахуємо форми використані в проекті і опишемо їх призначення: - MainForm - головна форма проекту. Використовується для завантаження розпізнаваного зображення, його обробки, а також для управління іншими формами; 46 - LearnForm - форма, за допомогою якої буде проводиться створення, навчання, тестування і збереження нейромережі; - UtilForm - форма, за допомогою якої буде формуватися база еталонних зображень; - NoizeLevelForm - форма, основним завданням якої, буде визначення порогу відсікання, при очищенні зображення; - RecognizeForm - форма, яка безпосередньо буде служити для виведення розпізнаного тексту; - LogForm - форма, в яку будуть передаватися відомості про роботу програми, для їх відображення та збереження; Розглянемо основні модулі програми: - модуль main.pas-головний модуль програми, через який здійснюється управління рештою функцій і модулями програми; - модуль add.pas містить в собі процедури і функції програми які не зв'язані з розпізнаванням або навчанням нейромережі. Тобто додаткові функції, наприклад пошук файлів, очищення пам'яті, порівняння двох зображень, вирівнювання компонента за стовпцями і т.д; - модуль loadImageUnit.pas містить в собі функції, що управляють відображенням завантаженого зображення; - модуль clearUtil.pas містить в собі функції для очищення зображення від шумів; - модуль convertToGray.pas містить в собі функції для конвертації зображення в чорно-біле растрове зображення; - модуль Learn.pas містить в собі функції для управління процесом навчання; - модуль learnFunctions.pas містить в собі функції, які застосовуються при навчанні нейромережі; - модуль Log.pas містить в собі функції, які застосовуються для формування, відображення, збереження логу; - модуль NNClass.pas - відповідає за управління класом нейромережі. 47 - модуль noizeLevelSetup.pas містить функції щовідповідають за установку порогового значення при обробці зображень; - модуль selectRecArea.pas - містить в собі функції, які відповідають за сегментацію зображення і виділення областей розпізнавання; Рисунок 3.1 – Схема взаємодії форм Розглянемо процес роботи програми в цілому.Розпізнаваний документ завантажується в програму. Якщо існує навчена нейронна мережа для такого типу документів, то користувач вибирає її, і система розпізнає документ. Якщо ж навченої мережі не існує, то конвертуємо зображення в градації сірого, після чого виділяються всі сегменти для розпізнавання. Після цього сформовані сегменти обробляються за допомогою утиліти для формування еталонів для навчання. Після формування бази, запускається утиліта для навчання нейромережі, виставляються первинні значення для нейромережі і 48 виробляється навчання. Після навчання, мережа тестується, і якщо результат незадовільний, то мережа перенавчається. Якщо результат тестування навченої нейромережі задовільний, то нейромережа з усіма параметрами зберігається у файл. Після чого проводиться розпізнавання і висновок розпізнаного документа. 49 4. ТЕСТУВАННЯ 4.1 Тестування приклад роботи програми та аналіз результатів 1. Запуск програми. При запуску програми з'являється її головне вікно яке представлене на рисунку 4.1. За допомогою його ведеться управління роботою програми. Рисунок 4.1 – Головне вікно програми 2. Вибір документа для розпізнавання і його завантаження. Рисунок 4.2 – Вибір документа для розпізнаванн 50 Для вибору документа, який потрібно розпізнати, необхідно натиснути меню«Файл - Завантажити ...», після чого з'явиться вікно вибору файлу як представлено на рисунку 4.2. 3. Конвертація документа в градації сірого, очищення від шумів. Після вибору документа, він завантажується в головну форму програми яку представлено на рисунку 4.3, після чого, можна приступати до процесу його обробки. Рисунок 4.3 – Головне вікно з завантаженим документом Для того, що б провести конвертацію документа в градації сірого кольору і очистити його від шумів, необхідно натиснути меню «Опції- Конвертувати в градації сірого», після чого з'явиться форма з назвою «Граничний рівень» яку представлено на рисунку 4.4. У цій формі, за допомогою повзунка, необхідно встановити необхідний рівень порогу. Після чого необхідно натиснути кнопку "Ок". 51 Рисунок 4.4 – Вікно вибору порогового рівня Після вибору рівня порогу, почнеться процес очищення зображення від шумів і конвертація його в чорно-біле зображення, яке представлено на рисунку 2.11. Рисунок 4.5 – Процес порогового відсікання зображення 4. Виділення зон розпізнавання (сегментація зображення). Після закінчення конвертації зображення в чорно-білий колір і очищення його від шумів, необхідно натиснути меню «Опції - Виділити зони розпізнавання». Процес виділення зон розпізнавання, який наведений на 52 рисунку 4.6, займає досить довгий час, тому внизу вікна є індикатор процесу виконання процедури. Рисунок 4.6 – Процес виділення сегментів для розпізнавання 5. Формування навчальної вибірки (еталонної бази). Після виділення зон розпізнавання, файли з сегментами за замовчуванням зберігаються в домашній каталог програми, в папку «recSrc». Для того, що б навчити нейромережу, необхідно сформувати еталонну базу для навчання, в якій елементи навчання (виділені сегменти), будуть відсортовані за своїми ознаками. Для формування бази еталонів, необхідно натиснути меню «Опції - Сформувати базу для навчання», після чого з'явиться форма «Підготовка бази еталонів», яка представлена на рисунку 4.7. Спочатку необхідно вибрати папку, в якій зберігаються необроблені сегменти. Для цього необхідно натиснути кнопку із заголовком «...», навпроти рядка «Виберіть адресу з необробленими картинками» Після цього необхідно вибрати папку, в якій буде сформована база. Для цього необхідно натиснути кнопку із заголовком «...», навпроти рядка «Виберіть адресу для збереження бази картинок» Що б зменшити розмір навченою вибірки, необхідно очистити її від дублікатів, тобто від однакових файлів. Для цього необхідно натиснути кнопку із заголовком «Видалити дублікати». Після цього, почнеться 53 процедура очищення сегментів від дублікатів. Хід даної процедури, будуть відображати дві смуги прогресу. Нижня, відповідає за загальний хід операції, верхня за перевірку поточного сегмента, на наявність дублікатів. Рисунок 4.7 – Форма підготовки еталонних зображень для навчання нейромережі Після видалення всіх дублікатів, можна приступати до формування еталонної бази (навчальній вибірці). Для цього необхідно натиснути кнопку «Старт» рисунок 4.8, після чого з'явиться вікно з заголовком «Введіть ім'я», а в нижній частині вікна в розділі «Підсумкове збереження», з'явиться зображення символу. У полі «Введіть ім'я символу», вікна «Введіть ім'я», необхідно ввести відображається символ. 54 Рисунок 4.8 – Процес формування бази еталонів 6. Навчання нейромережі. Після того, як буде навчена вся вибірка, можна приступати до навчання нейромережі. Для цього в головній формі необхідно натиснути меню «Опції - Навчання». Після чого з'явиться форма «Навчання», яка наведена на рисунку 4.9. Детальніше розглянемо форму навчання нейромережі. У ній міститься п'ять розділів для налаштування, навчання, тестування і відображення інформації про нейромережі. Розділ «Первинна настройка мережі та її нормалізація», необхідна для установки параметрів нейромережі. Розглянемо докладніше його пункти: - пункт «Вибрати папку з еталонними символами», служить для того, що б вибрати папку з раніше сформованої базою символів; 1 2 3 4 |