Распознавание образов с помощью нейронных сетей в среде MatlabR2009b
Создание шаблона, который позволит студенту приобрести необходимые знания для создания, обучения и стимуляции нейронной сети. Проектирование приложения по визуализации образов букв русского алфавита. Шаблоны букв, созданные в графическом редакторе.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 19.12.2017 |
Размер файла | 2,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru//
Размещено на http://www.allbest.ru//
Приамурский государственный университет им. Шолом-Алейхема
Распознавание образов с помощью нейронных сетей в среде MatlabR2009b
Николаев Сергей Валерьевич
студент 3 курса факультета математики, информационных технологий и техники
Аннотация
Цель данной статьи показать шаблон, который позволит студенту приобрести необходимые знания для создания, обучения, и стимуляции нейронной сети, научится работать с 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).
Рис. 18. Вкладка Simulate
Выберем в качестве входных данных переменную noisy10, а в качестве выходных данных напишем переменную Ans (рис.19).
Рис. 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
Означающая, что поступивший символ - это символ под номером 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/200108/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.
Размещено на Allbest.ru
...Подобные документы
Принципы и система распознавание образов. Программное средство и пользовательский интерфейс. Теория нейронных сетей. Тривиальный алгоритм распознавания. Нейронные сети высокого порядка. Подготовка и нормализация данных. Самоорганизующиеся сети Кохонена.
курсовая работа [2,6 M], добавлен 29.04.2009Создание программного средства, осуществляющего распознавание зрительных образов на базе искусственных нейронных сетей. Методы, использующиеся для распознавания образов. Пандемониум Селфриджа. Персептрон Розенблатта. Правило формирования цепного кода.
дипломная работа [554,8 K], добавлен 06.04.2014Эффективность применения объектного подхода для программных систем. Детальное проектирование и реализация системы, реализующей процессы создания и взаимодействия объектов. Распознавание компьютером печатных букв с помощью многослойной нейронной сети.
курсовая работа [38,0 K], добавлен 09.03.2009Описание структурной схемы искусственного нейрона. Характеристика искусственной нейронной сети как математической модели и устройств параллельных вычислений на основе микропроцессоров. Применение нейронной сети для распознавания образов и сжатия данных.
презентация [387,5 K], добавлен 11.12.2015Понятие искусственного нейрона и искусственных нейронных сетей. Сущность процесса обучения нейронной сети и аппроксимации функции. Смысл алгоритма обучения с учителем. Построение и обучение нейронной сети для аппроксимации функции в среде Matlab.
лабораторная работа [1,1 M], добавлен 05.10.2010Выбор типа и структуры нейронной сети. Подбор метода распознавания, структурная схема сети Хопфилда. Обучение системы распознавания образов. Особенности работы с программой, ее достоинства и недостатки. Описание интерфейса пользователя и экранных форм.
курсовая работа [3,0 M], добавлен 14.11.2013Базовые архитектуры компьютеров: последовательная обработка символов по заданной программе и параллельное распознавание образов по обучающим примерам. Искусственные нейронные сети. Прототип для создания нейрона. Поведение искусственной нейронной сети.
контрольная работа [229,5 K], добавлен 28.05.2010Выявление закономерностей и свойств, применимых в искусственной нейронной сети. Построение графиков и диаграмм, определяющих степень удаленности между объектами. Моделирование, тестирование и отладка программной модели, использующей клеточный автомат.
дипломная работа [4,1 M], добавлен 25.02.2015Обзор задач, возникающих при разработке систем распознавания образов. Обучаемые классификаторы образов. Алгоритм персептрона и его модификации. Создание программы, предназначенной для классификации образов методом наименьшей среднеквадратической ошибки.
курсовая работа [645,2 K], добавлен 05.04.2015История развития, применение искусственных нейронных сетей. Распознавание образов в сети. Сжатие данных и ассоциативная память. Проектирование экспертной системы, позволяющей диагностировать заболевания органов пищеварения. Программная реализация системы.
курсовая работа [744,0 K], добавлен 05.02.2016Распознавание образов как раздел кибернетики, развивающий теоретические основы и методы классификации и идентификации предметов. Знакомство с принципом действия сканирующих устройств. Анализ особенностей преобразования документа в электронный вид.
презентация [160,1 K], добавлен 06.01.2014Общие сведения о принципах построения нейронных сетей. Искусственные нейронные системы. Математическая модель нейрона. Классификация нейронных сетей. Правила обучения Хэбба, Розенблатта и Видроу-Хоффа. Алгоритм обратного распространения ошибки.
дипломная работа [814,6 K], добавлен 29.09.2014Изучение архитектуры искусственных нейронных сетей, способов их графического изображения в виде функциональных и структурных схем и программного представления в виде объектов специального класса network. Неокогнитрон и инвариантное распознавание образов.
курсовая работа [602,6 K], добавлен 12.05.2015Система P-CAD 2001 как интегрированный пакет программ, предназначенный для проектирования многослойных печатных радиоэлектронных средств. Создание базы электронных компонентов в редакторе Library Executive. Создание пакета в графическом редакторе.
контрольная работа [2,4 M], добавлен 15.10.2014Прогнозирование на фондовом рынке с помощью нейронных сетей. Описание типа нейронной сети. Определение входных данных и их обработка. Архитектура нейронной сети. Точность результата. Моделирование торговли. Нейронная сеть прямого распространения сигнала.
дипломная работа [2,7 M], добавлен 18.02.2017Проект программы, позволяющей переводить текст из русских букв в текст, который состоит из латинского алфавита с возможностью изменять исходный словарь для перевода. Определение структуры, содержащей в себе массивы для алфавита. Инструкция пользователя.
курсовая работа [46,7 K], добавлен 20.12.2012Рассмотрение программных продуктов, обеспечивающих решение задач по распознаванию образов. Видеопотоки от камер видеонаблюдения. Изменение размера и формата представления кадра. Отслеживание движения объекта в кадре. Распознавание номеров автотранспорта.
лабораторная работа [1,4 M], добавлен 28.11.2021Обзор и анализ распространенных искусственных нейронных сетей. Функциональное назначение слоев сети, алгоритмы обучения. Описание функциональных возможностей разработанной программной системы. Анализ исследовательской эксплуатации и возможных применений.
дипломная работа [1,3 M], добавлен 19.05.2011Составление программы для зашифровки текста (не более 255 символов), с использованием одного перемешанного алфавита, полученного случайной перестановкой всех букв исходного алфавита. Создание меню-интерфейса для навигации пользователя по программе.
курсовая работа [496,2 K], добавлен 17.05.2015Теоретический анализ современных методик создания программных средств по распознаванию образов, их преимущества и недостатки. Описание предметной области, обоснование выбора технологии и разработка проекта программного средства по распознаванию образов.
дипломная работа [2,3 M], добавлен 20.05.2013