Нейросетевая система распознавания зрительных образов

Лабораторная работа №3

Цель лабораторной работы: Получить навыки организации искусственных нейронных сетей для выполнения задачи распознавания зрительных образов.

Задание:

1. С помощью графического редактора создать изображения букв от «А» до «Е» размером 10х10 пикселов. При этом рисунки необходимо сохранить с расширением ‘.bmp’ как монохромный рисунок. Зафиксировать полученные изображения;

2. Изучить справку по функции imread(). Зафиксировать назначение данной функции, привести основные способы вызова, и описание её параметров;

3. С помощью функции imread() считать созданные изображения, присвоив полученные значения отдельным переменным. Зафиксировать полученные результаты;

4. Представить полученные значения в векторной форме, применив для этого следующую форму записи:

А=А(:),

Здесь А – имя переменной содержащей результат выполнения функции imread().

5. Организовать в среде Matlab однослойную нейронную сеть со ступенчатой функцией активации для распознавания пяти зрительных образов. Привести изображение созданной сети, а также изображение окна параметров одного из блоков «weights»;

6. Сформировать обучающую выборку, создав матрицу, содержащую полученные вектора. Создать целевой вектор. Зафиксировать команду для создания обучающей выборки и представление целевого вектора;

7. Обучить сеть работе с идеальными образами и промоделировать ее работу. Зафиксировать результаты моделирования;

8. С помощью графического редактора создать изображения со смещенными буквами от «А» до «Е» размером 10х10 пикселов. При этом рисунки необходимо сохранить с расширением ‘.bmp’ как монохромный рисунок. Зафиксировать полученные изображения;

9. Получить векторное представление данных изображений и промоделировать работу сети с данными векторами. Зафиксировать результаты моделирования;

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

11. Промоделировать работу сети с данными изображениями до и после её обучения работе с данными изображениями;

12. Оценить количество правильных ответов при наличии шума и искажений в изображении. Представив результаты оценки в виде таблицы.

13. Изучить справку по функции newff(). Зафиксировать назначение данной функции, привести основные способы вызова, и описание её параметров.

14. С помощью функции newff() создать двухслойную нейронную сеть прямого распространения для распознавания ранее созданных зрительных образов. При этом первый слой должен быть образован 50 нейронами. Количество выходов второго слоя нейронной сети должно совпадать с количеством распознаваемых образов. Для каждого из слоев установить функцию активации 'logsig'. Входные образы и целевой вектор использовать те же, что и для однослойной сети.

Для создания сети использовать следующую команду:

newff([zeros(100, 1) ones(100,1)],[50 5],{'logsig' 'logsig'})

Кроме того, для создания сети можно также воспользоваться инструментом: nprtool. В случае использования данного инструмента функции активации слоев задавать не требуется, так как они заданы по умолчанию (используется функция ‘tansig’) и непосредственно из окна данного инструмента не могут быть изменены.

15. Обучить сеть и промоделировать её работу. Зафиксировать полученные результаты.

16. С помощью функции newff() создать двухслойную нейронную сеть, которая будет формировать зрительный образ. Для этого у нее количество входов должно совпадать с количеством выходов. Остальные параметры создаваемой сети установить такими же, как и в п.14.

17. Задать целевой вектор. Он должен совпадать с вектором входных значений. Обучить сеть. Количество итераций обучения установить ≥ 100.

18. Промоделировать работу созданной сети с идеальными образами.

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

a. преобразовывать вектор-столбец (размер 100х1) в квадратную матрицу (размер 10х10);

b. сохранять полученную матрицу в виде графического файла с помощью функции imwrite(). Имя файла должно быть одним из параметров, передаваемых в функцию.

Пример вызова функции imwrite():

imwrite(A,'file.bmp'),

где А – матрица, «описывающая» изображение,

'file.bmp' – имя файла, который будет содержать изображение.

Зафиксировать полученные изображения.

19. Промоделировать работу созданной сети с зашумленными или искаженными (смещенными) образами. Визуализировать и зафиксировать в отчете результаты работы сети.

Наши рекомендации