Лабораторная работа «Нейросетевое распознавание печатных символов»




Скачать 72.95 Kb.
Дата01.10.2016
Размер72.95 Kb.
Лабораторная работа

«Нейросетевое распознавание печатных символов»
Цель работы. 1. Построение нейронных сетей в среде MATLAB.

2. Исследование возможностей распознавания печатных символов

с помощью нейронных сетей.
Работа включает три этапа:


  1. Подготовка эталонных (обучающих) образов печатных символов в виде набора графических файлов.

  2. Создание и обучение нейронной сети (НС) в среде MATLAB.

  3. Распознавание печатных символов с помощью обученной НС.


1. Подготовка эталонных образов.
Набор эталонных образов задается преподавателем. Примером такого набора является последовательность из десяти цифр от 0 до 9. В этом примере число образов M=10. В случае, когда каждый класс образов характеризуется лишь своим эталоном, имеем число классов, также равное M.

Каждый образ формируется в виде графического файла в битовом формате. Тип файла (расширение) определяется используемыми в среде MATLAB типами графических файлов. Рекомендуется использовать расширение tif.

Для создания графических файлов образов удобно использовать среду Adobe Photoshop. В этом случае при создании каждого файла необходимо проделать следующую последовательность операций:


  1. создать новый файл, задав его параметры:

- имя : XXXX;

- ширина: N1 пикселей;

- высота: N2 пикселей;

- цветовой режим: битовый формат.


Значения N1, N2=8…20 задаются преподавателем.


  1. используя инструменты типа «Кисть», «Ластик» и др. создать требуемый образ символа.

  2. с помощью команды «Сохранить как» сохранить созданный образ в виде файла типа tif в заданной преподавателем папке.

На рис. 1 приведены примеры графических символов цифр при N1=10, N2=12 пикс.





Рис. 1. Примеры графических символов цифр.

2. Создание и обучение НС с среде MATLAB.
На данном этапе выполнение работы в среде MATLAB производится с помощью программы sr_newff , которая реализует следующие функции:

- формирование числовых массивов эталонных образов, используемых в качестве обучающих;

- подготовка данных, необходимых для создания НС;

- создание НС, задание параметров обучения НС и обучение НС.


Эталонный образ каждого символа представлен в виде вектора-столбца [N,1], число элементов N которого равно числу признаков (иначе говоря, N – размерность пространства признаков). Такой вектор-столбец формируется из двумерного массива-изображения [N1,N2], который, в свою очередь, формируется при считывании графического файла образа с помощью команд:
imread (FILENAME) - процедура чтения графического файла;

X = reshape (A,[N,1]) - процедура преобразования двумерного массива A[N1,N2] в

одномерный вектор-столбец X[N,1], где N=N1*N2.
Процедура умножения массива на 1 приводит к смене типа элементов массива с logical (для элементов битового формата) на double.

Для удовлетворительной работы НС недостаточно формирования лишь одного обучающего образа для каждого класса (типа символа) образов. Это связано с тем, что распознаваемые образы (на этапе работы НС в режиме распознавания) всегда отличаются от обучающих по ряду причин:

- различие шрифтов и стилей печатных символов;

- погрешности сканирования и неточности совмещения символа и окна сканирования;

- низкое качество печати, дефекты бумаги и т.д.
В силу указанных причин для надежного распознавания образов НС следует обучать на достаточно представительном множестве образов, входящих в один и тот же класс.

В программе sr_newff формирование дополнительных обучающих образов производится путем незначительного искажения эталонных образов, считываемых из графических файлов. Искажение образа-эталона каждого класса реализуется путем добавления к нему равномерного (по площади изображения) шума типа «Соль и перец», представляющего собой случайное искажение отдельных пикселей изображения. Степень искажения характеризуется числом p=[0;1], определяющим долю искаженных пикселей.

Такой подход при формировании образов позволяет, во-первых, быстро получать большое число обучающих образов, и, во-вторых, регулировать (путем изменения значения p) степень разброса множества образов в пределах одного класса.
Подготовка данных, необходимых для создания НС, включает в себя:


  1. формирование двумерного массива обучающих образов XR[N,K], каждый столбец которого представляет собой набор N признаков одного образа, а число столбцов K равно числу обучающих образов;

  2. формирование двумерного массива желаемых откликов YR[NY,K], где NY – число выходов НС (т.е., число нейронов выходного слоя); K – число обучающих образов. Отклик YR[:,k] (в общем случае – вектор-столбец) соответствует k-му обучающему образу – вектору XR[:,k];

  3. формирование двумерного массива R[N,2], определяющего минимальное R(n,1) и максимальное R(n,2) значение n-го признака, n=1,…,N.

Создание НС. В общем случае НС net создается с помощью команды:


net = nnnnn (P1,P2,…PL), где
nnnnn – тип НС;

P1,…,PL – параметры НС.


В настоящей работе используется НС типа многослойного персептрона newff, которая задается командой:
net = newff (R, [A1 A2 … AL], {F1 F2 … FL}, BTF, PF), где
R - массив минимальных и максимальных значений входных нейронов (признаков);

Ai - число нейронов i-го слоя, начиная с первого скрытого слоя, i=1,…,L;

Fi - функция активации нейронов i-го слоя, по умолчанию ‘tansig’;

BTF - функция обучения сети, по умолчанию ‘trainlm’;

PF - критерий остановки, по умолчанию ‘mse’ (минимум ско).
Дополнительные параметры, используемые при создании сети:
net.performFcn=’msereg’ - обучение НС производится с помощью метода регуляризации;

net.performParam.ratio=0.1 - значение параметра регуляризации;

net.trainParam.show=5 - число эпох, через которое производится вывод параметров

процедуры обучения;

net.trainParam.epochs=500 - максимальное число эпох при обучении НС;

net.trainParam.goal=0.02 - значение целевой функции, по достижении которого

процесс обучения НС прекращается.
Процесс обучения НС запускается командой:
net = train (net, XR, YR) .
Для решения задач распознавания печатных символов рекомендуется использовать трехслойную НС (один скрытый слой) с числом нейронов:

N=120 - во входном слое;

A1=20 - в скрытом (промежуточном) слое;

A2=1 - в выходном слое.


При использовании большего числа нейронов процедура обучения НС может занять слишком много времени. Для рекомендованных значений параметров НС (в том числе и дополнительных) и общем числе обучающих образов (для всех заданных классов) K=100…200 время обучения НС составляет 5…20 мин.

3. Распознавание печатных символов с помощью обученной НС.
Работа НС, т.е. формирование отклика Y при входном воздействии в виде вектора-столбца X[N,1] производится командой:
Y = sim (net, X).
В случае, когда желаемый отклик принимает целочисленные значения, рекомендуется использовать округление до ближайшего целого, т.е.
Y = round (sim (net, X)).
Тестирование работы НС при распознавании печатных символов с различной степенью искажения производится с помощью программы sr_work , исходными данными для которой являются:
SX.tif - имя графического файла образа-эталона;

N - число пикселей изображения образа;

NT - число тестируемых образов, полученных путем искажения эталона;

P - доля искаженных пикселей [0; 1].


На рис. 2 представлены некоторые примеры распознавания символов, изображенных на рис. 1, с помощью обученной НС. Обучение проводилось при числе обучающих образов M=10 для каждого вида символа и параметре искажения символов p=0,1.

Результат распознавания: «2» «3» «5»

Рис. 2.а. Неверные распознавания символа «0», искаженного 20% шума «Соль и Перец».





Результаты распознавания: «0» «0» «0» «0»

Рис.2.б. Правильные распознавания символа «0», искаженного 20% шума «Соль и Перец».




Результат распознавания: «3» «5» «6»

Рис. 2.в. Неверные распознавания символа «4», искаженного 20% шума «Соль и Перец».




Результаты распознавания: «4» «4» «4» «4» «4»

Рис.2.г. Правильные распознавания символа «4», искаженного 20% шума «Соль и Перец».




Результаты распознавания: «8» «8» «6»

Рис.2.д. Результаты распознавания символа «8», искаженного 10% шума «Соль и Перец».

Результаты распознавания символов, представленные на рис. 2 а-г, демонстрируют хорошее распознавание с помощью НС даже при сильном искажении (параметр p>0,1). Для объективной оценки качества работы НС необходимо вычисление вероятностных характеристик распознавания. При правильном выборе параметров обучения сети и использовании не менее 100 обучающих образов можно получить вероятность правильного распознавания символов порядка 0,6…0,9 (в зависимости от вида распознаваемого символа) при параметре искажения p=0,1…0,2.
Порядок выполнения работы.


  1. Подготовить графические файлы эталонных образов для символов, заданных преподавателем.

  2. В среде MATLAB создать и обучить НС, предназначенную для распознавания печатных символов.

  3. Исследовать зависимость качества работы НС от:

- степени искажения символов (параметр p);

- числа нейронов в скрытом слое.



Качество работы НС характеризуется вероятностями правильной классификации образа i-го класса, i=1,…,M. Оценка вероятностей производится по формуле:
,

где - число правильных распознаваний образа i-го класса; - общее число распознаваний образов i-го класса. Число определяется экспериментально при запуске программы sr_work при значениях =10…100.


База данных защищена авторским правом ©infoeto.ru 2016
обратиться к администрации
Как написать курсовую работу | Как написать хороший реферат
    Главная страница