Помощь в написании студенческих работ
Антистрессовый сервис

Распознавание образов с помощью нейронных сетей в среде MatlabR2009b

РефератПомощь в написанииУзнать стоимостьмоей работы

Одной из актуальных задач является распознавание визуальных образов. Машины, способные распознавать росписи на бумагах, символы на банковских карточках или чеках, существенно облегчают человеческий труд и ускоряют рабочий процесс, при этом снижают риск ошибки за счет отсутствия человеческого фактора. Цель данной статьи показать шаблон, который позволит студенту приобрести необходимые знания для… Читать ещё >

Распознавание образов с помощью нейронных сетей в среде MatlabR2009b (реферат, курсовая, диплом, контрольная)

Цель данной статьи показать шаблон, который позволит студенту приобрести необходимые знания для создания, обучения, и стимуляции нейронной сети, научится работать с GUI-интерфейсом инструмента NNtool. Для реализации задачи используется система MatlabR2009b.

Ключевые слова: нейронная сеть, распознавание образов, NNtool.

Искусственные нейронные сети представляют собой математическую модель функционирования биологических нейронных сетей — сетей нервных клеток живого организма. Как и в биологической нейронной сети, основным элементом искусственной нейронной сети является нейрон. Соединенные между собой нейроны, образуют слои, количество которых может варьироваться в зависимости от сложности нейронной сети и решаемых ею задач. Теоретические основы программирования таких нейронных сетей, описываются во многих работах [7, 10, 11].

Одной из актуальных задач является распознавание визуальных образов. Машины, способные распознавать росписи на бумагах, символы на банковских карточках или чеках, существенно облегчают человеческий труд и ускоряют рабочий процесс, при этом снижают риск ошибки за счет отсутствия человеческого фактора [6].

Цель разрабатываемого шаблона, создать нейронную сеть, которая сможет распознавать визуальные образы букв русского алфавита. Программный код, который решает подобную задачу, присутствует в системе Matlab, как демонстрационная программа с названием appcr1. Подробно этот код разобран и пояснен в книге «Нейронные сети» В. С. Медведева, В. Г. Потемкина [6], а так же описан в работе И. С. Миронова, С. В. Скурлаева [7].

В системе Matlab также присутствует инструмент NNtool, имеющий графический интерфейс пользователя, который существенно облегчает задачу и может быть легко использован даже неопытным пользователем. Подробно этот инструмент описан в работах В. Иванников, А. Ланнэ [5] и П. А. Сахнюка [8] и др. [12]. В работе А. И. Шеремет, В. В. Перепелицы, А. М. Денисовой показан пример разработки нейронной сети для распознавания визуальных образов символов латинского алфавита с помощью NNtool [9]. Зарубежные ученые также применяю искусственные нейронные сети в своих исследованиях [13, 14].

Рассмотрим встроенную функцию Matlabprprob, которая представляет собой матрицу, содержащую набор признаков букв латинского языка. Каждая буква имеет размерность 7 на 5 пикселей.

Создадим подобную матрицу с буквами русского алфавита. Для этого создадим в графическом редакторе шаблон каждого символа такой же размерностью (рис. 1, 2).

Шаблон буквы А созданный в графическом редакторе.

Рис. 1. Шаблон буквы, А созданный в графическом редакторе

Шаблон буквы Б созданный в графическом редакторе.

Рис. 2. Шаблон буквы Б созданный в графическом редакторе

шаблон редактор нейронный сеть После того, как созданы шаблоны для каждой буквы, необходимо написать функцию, которая будет считывать необходимые признаки символов с графического файла в нужном нам формате.

Для этого выберем в командном меню: FileаNewаFunction M-file. Откроется графический редактор, в который необходимо вставить приведенный ниже код.

КодфункцииImgRead:

function y = Imgread (x).

%UNTITLED Summary of this function goes here.

% Detailed explanation goes here.

img=imread (x);

img1=img (, 1)';

img2=reshape (img1,[35, 1]);

fori=1:35.

if (img2(i, 1)==0).

img2(i, 1)=1;

end.

end.

fori=1:35.

if (img2(i, 1)==255).

img2(i, 1)=0;

end.

end.

y=img2;

end.

Использую данную функцию, создадим матрицу признаков русского алфавита, введя в окно команд следующий код:

images1=Imgread ('C:alphabetА.png');

images33=Imgread ('C:alphabetЯ.png');

RA=[images1,images2,images3,images4,images5,images6,images7,images8,…

images9,images10,images11,images12,images13,images14,images15,images16,…

images17,images18,images19,images20,images21,images22,images23,…

images24,images25,images26,images27,images28,images29,images30,images31,…

images32,images33];

Заметим, что для того, чтобы код работал, шаблоны должны располагаться в каталоге C: alphabet, в качестве имени сам символ, с разрешением png, или внести соответствующие изменения в код.

Теперь есть матрица RA, которая содержит в себе набор признаков русского алфавита, и будет использоваться в роли входных данных при создании нейронной сети.

В качестве матрицы целей создадим единичную матрицу размерностью 33 на 33.

Для этого введем код. Так же объявим переменные, содержащие в себе количество строк и столбцов.

%Создаем переменные для создания нейронной сети в NNtool.

P=double (RA);

T=eye (33);

[R, Q] = size (P);

[S2,Q] = size (T);

Для обучения сети нам понадобятся данные с шумом. Создадим эти данные, введя следующий код в окно команд:

%Создаем переменные для обучения на зашумленных данных нейронной сети в.

%NNtool.

P1=P;

T1=T;

fori=1:100.

P1=[P1,P+rand (R, Q)*0.1,P+rand (R, Q)*0.2];

T1=[T1,T, T];

end.

Для симуляции сети нам понадобится переменная, содержащая в себе набор признаков одной буквы, например, буквы И.

Введем соответствующую команду, заодно выведем на экран получившийся зашумленный образ (рис.3).

noisy10 = P (, 10) + randn (35,1)*0.2;

plotchar (noisy10); % Зашумленный символ И.

Зашумленный образ буквы И.

Рис. 3. Зашумленный образ буквы И

Теперь вызовем инструмент NNtool, где с помощью графического интерфейса создадим нейронную сеть. Сделать это можно с помощью соответствующей команды nntool (рис.4).

Окно менеджера данных нейронной сети.

Рис. 4. Окно менеджера данных нейронной сети

С помощью кнопки Import добавляем необходимые нам переменные (рис.5).

Окно импорта данных.

Рис. 5. Окно импорта данных

Переменные P, P1 и noisy10 добавить как inputdata.

Переменные T, T1 добавить как Targetdata.

После импорта всех переменных окно должно выглядеть как на рис. 6.

Окно менеджера данных нейронной сети после импорта переменных.

Рис. 6. Окно менеджера данных нейронной сети после импорта переменных

Нажав кнопку New, приступим к созданию нейронной сети. В окне параметров нейронной сети введем настройки (рис.7).

Окно создания нейронной сети.

Рис. 7. Окно создания нейронной сети

После выбранных параметров создаем сеть, нажав кнопку Create.

После этого сеть должна появиться в окне менеджера данных нейронной сети в разделе networks (рис.8).

Окно менеджера данных нейронной сети после создания нейронной сети .

Рис 8. Окно менеджера данных нейронной сети после создания нейронной сети

Нажав дважды на созданную сеть, откроем нейронную сеть. Появится окно с вкладками (рис.9), в которых можно посмотреть структуру нейронной сети, обучить ее, провести симуляцию, изменять веса входных данных.

Структура нейронной сети.

Рис. 9. Структура нейронной сети

Рассмотрим вкладку Train, где будет проводиться обучение нейронной сети. В начале проведем обучение на идеальных данных. Введем соответствующие параметры (рис.10).

Настройка данных, с помощью которых будет происходить обучение .

Рис. 10. Настройка данных, с помощью которых будет происходить обучение

Параметры обучения нейронной сети.

Рис. 11. Параметры обучения нейронной сети

После установки всех параметров запускаем обучение, нажав кнопку TrainNetwork (рис.11). В появившемся окне (рис.12) можем наблюдать процесс обучения нейронной сети.

Процесс обучения.

Рис. 12. Процесс обучения

С помощью кнопки Performance можно просмотреть процесс обучения с помощью графика (рис.13).

График обучения нейронной сети.

Рис. 13. График обучения нейронной сети

Теперь необходимо провести обучение на данных с шумом. Для этого изменим параметры во вкладке train (рис. 14, 15).

Параметры обучения на данных с шумом.

Рис. 14. Параметры обучения на данных с шумом

Параметра обучения на данных с шумом.

Рис. 15. Параметра обучения на данных с шумом

Окно процесса обучения будет выглядеть как рис. 16.

Процесс обучения сети на данных с шумом.

Рис. 16. Процесс обучения сети на данных с шумом

График обучения представлен на рис. 17.

График обучения нейронной сети на данных с шумом.

Рис. 17. График обучения нейронной сети на данных с шумом

В результате сеть обучена. Теперь необходимо проверить нейронную сеть. Для этого создана переменная noisy10, которая содержит в себе символ «И» с шумом.

Перейдем на вкладку Simulate, в окне созданной сети (рис.18).

Вкладка Simulate.

Рис. 18. Вкладка Simulate

Выберем в качестве входных данных переменную noisy10, а в качестве выходных данных напишем переменную Ans (рис.19).

Вкладка Simulate с выбранными параметрами.

Рис. 19. Вкладка Simulate с выбранными параметрами

Для начала процесса симуляции необходимо нажать кнопку SimulateNetwork.

После этого в окне менеджера данных нейронной сети появится переменная Ans (рис.20).

Окно менеджера данных нейронной сети после проведенной симуляции .

Рис. 20. Окно менеджера данных нейронной сети после проведенной симуляции

Экспортируем нейронную сеть и переменную Ans. Для этого необходимо нажать кнопку Export и в появившемся окне выбрать необходимые нам переменные и еще раз нажать кнопку Export (рис.21).

Экспорт переменных.

Рис 21. Экспорт переменных

После экспорта в окно команд Matlab вводим следующий фрагмент кода:

%Проверяем результат распознания.

Ans = compet (Ans);

answer = find (compet (Ans) == 1).

plotchar (P (, answer)); % РаспознанныйсимволИ Перед нами появится окно (рис.22), отображающее распознанный символ.

Распознанный символ И.

Рис. 22. Распознанный символ И

А в окне команд появится строчка:

answer =.

Означающая, что поступивший символ — это символ под номером 10 в нашем алфавите.

Таким образом, созданная нейронная сеть выполняет поставленную задачу.

Данная работа знакомит с GUI-интерфейсом NNtoot и может в дальнейшем использоваться студентами для создания более сложных, по своей структуре и задаче, нейронных сетей в различных курсах [1−4].

  • 1. Баженов Р. И. Интеллектуальные информационные технологии. Биробиджан: ПГУ им. Шолом-Алейхема, 2011. 176 с.
  • 2. Баженов Р. И. Информационная безопасность и защита информации: практикум. Биробиджан: Изд-во ГОУВПО «ДВГСГА», 2011. 140 с.
  • 3. Баженов Р. И. Проектирование методики обучения дисциплины «Информационные технологии в менеджменте» // Современная педагогика. 2014. № 8 (21). С. 24−31.
  • 4. Баженов Р. И. Об организации научно-исследовательской практики магистрантов направления «Информационные системы и технологии» // Современные научные исследования и инновации. 2014. № 9−2 (41). С. 62−69.
  • 5. Иванников В., Ланнэ А. Matlab для DSP. Нейронные сети: графический интерфейс пользователя [Электронный ресурс]. URL: http://www.chipinfo.ru/literature/chipnews/200 108/1.html#lanne8
  • 6. Медведев В. С., Потемкин В. Г. Нейронные сети. MATLAB 6. М.: ДИАЛОГ-МИФИ, 2001. 630 с.
  • 7. Миронов И. С., Скурлаев С. В. Распознавание образов при помощи нейронной сети [Электронный ресурс]. URL: http://confonline.susu.ru/index.php?option=com_content&view=article&id=57:2011;05−06−04−36−21&catid=16:-2——&Itemid=18
  • 8. Сахнюк П. А. Интеллектуальные информационные системы. Лабораторные работы [Электронный ресурс]. URL: http://www.stgau.ru/company/personal/user/7684/files/lib/202.pdf
  • 9. Шеремет А. И., Перепелица В. В., Денисова А. М. Проектирование нейронной сети для распознавания символов в программной среде MATLAB [Электронный ресурс]. URL: http://nauka.zinet.info/13/sheremet.php
  • 10. Principe J.C., Euliano N.R., Lefebvre W.C. Neural and Adaptive Systems. Fundamentals Through Simulations. New York. John Wiley & Sons Inc. 2000.
  • 11. Luo F-L., Unbehauen R. Applied Neural Networks for Signal Processing. Cambridge University Press. 1998.
  • 12. Demuth H., Beale M. Neural Network Toolbox. For Use with MATLAB. The MathWorks Inc. 1992;2000.
  • 13. Awadalla M. H. A., Ismaeil I. I., Sadek M. A. Spiking neural network-based control chart pattern recognition //Journal of Engineering and Technology Research. 2011. Т. 3. №. 1. С. 5−15.
  • 14. Dede G., Sazlэ M. H. Speech recognition with artificial neural networks //Digital Signal Processing. 2010. Т. 20. №. 3. С. 763−768.
Показать весь текст
Заполнить форму текущей работой