НЕЙРОННЫЕ СЕТИ ДЛЯ РАСПОЗНАВАНИЯ ОБРАЗОВ Драганчук И.Н., научный

advertisement
НЕЙРОННЫЕ СЕТИ ДЛЯ РАСПОЗНАВАНИЯ ОБРАЗОВ
Драганчук И.Н., научный руководитель − Самсонова С.А.
Филиал ФГАОУ ВПО «Северный (Арктический) федеральный университет имени
М.В. Ломоносова» в г. Коряжме Архангельской области
Коряжма, Россия
NEURAL NETWORKS FOR PATTERN RECOGNITION
Draganchuk I.N., research advisor − Samsonova S.A.
Koryazhma Branch of Northern (Arctic) Federal University named after M.V. Lomonosov,
Аrkhangelsk region
Koryazhma, Russia
В основе кибернетики лежит множество областей знаний: математика, логика,
биология, синергетика. В настоящее время одним из самых важных вопросов
искусственного интеллекта является вопрос распознавания образов с помощью
принципиально новых методов и алгоритмов, с помощью искусственных нейронных
сетей. Нейронные сети
можно использовать
в самых
различных задачах, от
восстановления пропусков в данных до нахождения закономерностей.
Наиболее
востребованным
направлением
в
решении
многих
проблем
искусственного интеллекта является создание нейронных сетей. Исследования в данной
области находят широкое применение в автоматизации распознавания образов и речи,
машинном переводе текстов, прогнозировании финансовых показателей и бирже,
создании самообучающихся нейронных систем и пр.
Основной целью нашей работы являлась разработка, а затем тестирование и
проектирование искусственной нейронной сети для распознавания образов.
Для достижения поставленной цели необходимо решить ряд задач:
• изучение основных вопросов теории нейронных сетей;
• изучение имеющихся программных решений по вопросам исследования;
• разработка алгоритма программ, использующих разные нейронные сети;
• анализ и выбор для разработки подходящей среды программирования;
• разработка программ в средах Microsoft Visual Studio 2008 и Delphi;
• тестирование разработанных программных продуктов.
Теория
распознавания
образов
–
это
раздел
кибернетики,
развивающий
теоретические основы и методы классификации и идентификации предметов, явлений,
процессов, сигналов, ситуаций и т.п. объектов, которые характеризуются конечным
набором некоторых свойств и признаков. Искусственная нейронная сеть, используемая
для распознавания образов, является математической моделью параллельных вычислений,
включающей в себя взаимодействующие между собой простые процессорные элементы.
Искусственная нейронная сеть - это сеть, которая состоит из искусственных
нейронов. Она является предметом исследования нейроинформатики и является одной из
веток изучения искусственного интеллекта. Одним из главных преимуществ нейронных
сетей является возможность их обучения. Большинство методов обучения вытекает из
общих положений и имеет много идентичных характеристик. Обучение напоминает
процесс интеллектуального развития человеческой личности.
Процесс обучения искусственной нейронной сети представляет собой класс задач,
включающий следующие стадии:
1. Формулировка задачи, при этом выделяется набор ключевых параметров,
характеризующих предметную область.
2. Выбор парадигмы нейронной сети (модель, которая включает в себя форму входа
данных, структуры сети и обучения), наиболее подходящей для решения этого класса
задач.
3. Подготовка более широкого набора обучающих примеров, организованных в
виде наборы входных данных, связанных с известными выходными значениями. Входные
значения для обучения могут быть неполными и частично противоречивы.
4. Ввод данных по очереди, в результате выходное значение сравнивается с
эталоном. Затем корректировка весовых коэффициентов нейронных соединений для того,
чтобы минимизировать ошибку между фактическим и желаемым выходом сети.
5. Обучение повторяется до тех пор,
пока суммарная погрешность во всем
множестве входных значений не достигнет приемлемого уровня, или искусственная
нейронная сеть не придет в стационарное состояние. Такой метод обучения носит
название "Обратное распространение ошибки» и относится к числу классических
алгоритмов нейроматематики.
Настроенная и обученная нейросеть может быть использована на реальных
входных данных, предлагая пользователю не только правильное решение, но и оценки
степени ее надежность.
Для создания программы, с помощью которой можно перевести символы из
изображения в текст, на наш взгляд, оптимально использовать язык Delphi − язык
высокого уровня. Для реализации программы использовалась система программирования
Delphi 6 фирмы Enterprise (Borland), поскольку она дает широкий набор возможностей при
программировании приложений ОС Windows. В основе Delphi используется язык Object
Pascal − расширение объектно-ориентированного языка Pascal. В состав Delphi еще входят
локальный SQL-сервер, библиотека визуальных компонентов, генераторы отчетов и др.
Delphi создает маленькие по размеру высокоэффективные модули (такие как .dll .exe), это
значит, что требования к рабочим местам клиентов значительно снижаются.
Преимущества Delphi:
- хорошая проработка иерархии объектов;
- поддержка всех требований, которые предъявляются к объектно-ориентированному
языку программирования;
- быстрое создание интерфейса;
- удобная IDE;
- высокая производительность разработанного приложения;
- хорошие средства отладки;
- компоненты доступа к данным: BDE, ODBC, ADO уже встроены;
- поддержка многозвенной технологии (multi-tiered) доступа к данным;
- возможность создания новых компонентов и инструментов средствами Delphi;
- доступ к визуальным компонентам freeware, shareware и коммерческих фирм;
- низкие требования к ресурсам компьютера.
Интерфейс программы представлен на рисунке 1.
Рисунок 1 - Интерфейс программы
В окне отображается загруженное изображение. Кнопка "Распознать" - загружаем
изображение для распознавания.
Кнопка "Обучение" −
загружаем изображение, которому хотим обучить сеть
(изображение или число). После загрузки сеть спрашивает, верно ли она распознала образ
(пример на рис. 2). Если да, то ничего не нужно делать, если не верно, то указываем,
каким должен быть результат распознавания (см. рис. 3 и 4)
Рисунок 2 - Верное распознавание примера для обучения
Рисунок 3 - Неверное распознавание примера для обучения
Рисунок 4 - Обучение
Кнопка "База" − Выбор базы, по которой проводится обучение и распознавание.
Для простоты взята база шрифтов, так как в основном проводится распознавание текста.
Также имеется два маленьких окна, в первом показан распознанный образ из базы, а во
втором − распознанный образ с изображения.
В последнем окне выводится результат распознавания программы − изображенный
текст.
С помощью функции function TForm1.PreParse1(Pic:TPicture):string;
находим все символы на изображении.
Для начала переведем изображение в черно-белый цвет с помощью процедуры
procedure TForm1.Mono(Bmp:TBitmap). Каждый найденный символ обводим красной
рамкой.
Распознавание
происходит
с
помощью
функции
function
TForm1.Compare(b1,b2:TBitmap):integer.
Далее составляем базу с изображениями символов и цифр.
Пример распознавания изображения уже обученной сетью представлен на рис. 5.
Рисунок 5 - Распознавание
Следует отметить у программы недостатки, такие как:
- неспособность распознавать большие тексты и предложения;
- некорректное распознавание при поворотах и шумах.
Данная программа хорошо подходит для распознавания простых капчей.
Справедливости ради заметим, она не может конкурировать в распознавании текстов с
FineReader, но со своей задачей справляется вполне.
Теперь рассмотрим применение нейросетей для восстановления изображений, т.е.
необходима программа, которая в испорченном изображении распознает эталонный образ.
Для данной задачи лучше использовать нейронную сеть Хопфилда, которая состоит из
одного слоя нейронов (где их число − это и количество входов и выходов сети). Все
нейроны связаны друг с другом синапсисами. Имеется и единственный входной синапсис,
с помощью которого вводится сигнал. Выходные сигналы же образуются на аксонах. Для
работы сети необходимо поступление на вход набора двоичных сигналов, которые будут
считаться
образцовыми.
Сеть
должна
выделить
соответствующий
образец
из
произвольного неидеального сигнала, который подается на вход, или найти самый
похожий образ.
Для нейронной сети нужна бинарная последовательность из -1 и +1. "-1" - пиксель
черного цвета, "-1" - пиксель белого цвета. Теперь мы можем представить изображение
как последовательность. Чтобы восстановление не занимало много времени и было
довольно точным, воспользуемся следующей схемой: возьмем изображение 100х100
пикселей, для каждого пикселя имеется свой нейрон, получаем сеть из 10000 нейронов.
При разработке приложения использовалась программа Microsoft Visual Studio −
линейка продуктов компании Майкрософт, который включает в себя интегрированную
среду разработки программного обеспечения, а также многие другие инструментальные
средства. Эти продукты помогают разрабатывать консольные приложения, приложения с
использованием графического интерфейса, веб-сайты, веб-приложения,
При запуске программы появляется окно, которое представлено на рисунке 6.
Рисунок 6 - Основное окно
Имеется окно, в котором показано загруженное изображение.
Нажатие на кнопку "Обучение" − изображение заносится в базу.
Кнопка "Восстановить" − восстанавливается загруженное изображение, поиск
наиболее похожего образца и замена его вместо искаженного изображения.
Кнопка "Сохранить" − сохраняется изображение, загруженное в программу, на
компьютер.
Кнопка "Загрузить образец" − загружается изображение для восстановления или
обучения сети.
Кнопка "Очистить" − очищается база.
Обучим программу двум изображениям, показанным на рис. 7.
Рисунок 7 - Исходные изображения
Загружаем в программу искаженное изображение (рис. 8), нажимаем кнопку
"Восстановить" и получаем тот рисунок, на который искаженное изображение больше
похоже (рис.9)
Рисунок 8 - Загруженное изображение для восстановления
Рисунок 9 - Восстановленное изображение
Данная программа успешно восстанавливает испорченные изображения, но иногда
может неверно распознать и вывести несуществующие изображение. Это связано с
ограниченностью возможностей сети. Одной из причин может быть схожесть исходных
изображений, что будет вызывать у сети перекрестные ассоциации. Программа может
также использоваться для распознавания капчей, но для этого сеть нужно успешно
обучить. Также можно ее использовать для устранения ошибок в словах и пр.
Недостатком программы является то, что она работает только с изображениями размером
100х100 пикселей.
На основе проведенных исследований был разработан программный продукт для
обработки изображений, способный с помощью искусственных нейронных сетей
распознавать эти изображения. Созданы две искусственных нейронных сетей с учителем,
которые обрабатывают и модифицируют эталонную базу образов. Разработаны алгоритмы
обучения, блок-схемы. Программы декодируют предоставленные изображения из
представленного формата BMP в матричный код для последующей работы с ним.
Производится анализ незнакомого образа, который пропускается через искусственную
нейронную сеть, сравнивается с каждым эталонным образом, в результате выявляется его
принадлежность к определенному классу. Компьютерная программа распознавания
образов с помощью искусственной нейронной сети протестирована и отлажена.
Список литературы
1.
Барский А. Б. Нейронные сети: распознавание, управление, принятие решений. – М.:
Финансы и статистика, 2004. – 176 с
2.
Большакова Е.И. и др. Автоматическая обработка текстов на естественном языке и
компьютерная лингвистика : учеб. пособие — М.: МИЭМ, 2011. – 272 с.
Галушкин А.И. Нейронные сети: основы теории // Издательство «Горячая линия –
Телеком», М., 2010. – 480 с.
3.
Круг П.Г. Нейронные сети и нейрокомпьютеры: Учебное пособие по курсу
"Микропроцессоры" по направлению "Информатика и вычислительная техника"
/ П. Г. Круг, Моск. энерг. ин-т (МЭИ ТУ) . – М. : Изд-во МЭИ, 2002 . – 176 с.
4.
Оганезов А.Л. Применение нейронных сетей в задачах распознавания образов : дис.
на соискание ученой степени канд. физ.-мат. наук. Тбилиси. 2006. – 149 с.
5.
Саймон Хайкин. Нейронные сети: полный курс. 2-e изд. Пер. с англ. – М.:
Издательский дом "Вильямс", 2006. – 1104 с.
6.
Фролов А., Фролов Г., Синтез и распознавание речи. Современные решения
[Электронный ресурс] / Александр Фролов, Григорий Фролов. – Электрон. журн. –
2003. URL: http://www.frolov-lib.ru (дата обращения 20.03.2011)
Download