Отчет 3 ИнтСИТ

Порядок выполнения лабораторной работы

В пакете Matlab построить нейронную сеть для распознавания символов на изображениях. Изображения следует выбрать самостоятельно. Количество распознаваемых изображений – не менее 10. Размер изображений – не менее 30*30 пикселей. Первоначально построить двухслойную сеть – количество нейронов во входном слое есть произведение ширины изображения на высоту, в выходном слое – количество распознаваемых изображений. Обучить сеть. Проверить работу сети на зашумленных и незашумленных символах. Сделать выводы.

Размер образов: 21х11пикс

>> oven=reshape(double(oven’),231,1);

>> telec=reshape(double(telec’),231,1);

>> blizneci=reshape(double(blizneci’),231,1);

>> rak=reshape(double(rak’),231,1);

>> lev=reshape(double(lev’),231,1);

>> deva=reshape(double(deva’),231,1);

>> vesy=reshape(double(vesy’),231,1);

>> skorpion=reshape(double(skorpion’),231,1);

>> strelec=reshape(double(strelec’),231,1);

>> kozerog=reshape(double(kozerog’),231,1);

>> vodoley=reshape(double(vodoley’),231,1);

>> ribi=reshape(double(ribi’),231,1);

>> znaki=[oven telec blizneci rak lev deva vesy skorpion strelec kozerog vodoley ribi];

>> target=eye(12);

>> net=newff(minmax(znaki),[231 12], {‘logsig’ ‘purelin’},’traingdx’);

>> net=train(net,znaki,target);

Файл myplotchar.m



function myplotchar(c)

x1 = [-0.5 -0.5 +0.5 +0.5 -0.5];

y1 = [-0.5 +0.5 +0.5 -0.5 -0.5];

x2 = [x1 +0.5 +0.5 -0.5];

y2 = [y1 +0.5 -0.5 +0.5];

newplot;

plot(x1*11.6+2.5,y1*21.6+10.5,’m');

axis([-1.5 11.5 -0.5 21.5]);

axis(‘equal’)

axis off

hold on

for i=1:length(c)

x = rem(i-1,11)-2.5;

y = 6-floor((i-1)/11)+14.5;

plot(x2*(1-c(i))+x,y2*(1-c(i))+y);

end

hold off

Пример работы на не зашумленных образах:

На зашумленных образах:

Образ, зашумленный на 5%:

Образ, зашумленный на 10%:

Образ, зашумленный на 20%:

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

>> net=newff(minmax(znaki),[100 12], {‘logsig’ ‘purelin’},’traingdx’);

>> net.LW{2,1}=net.LW{2,1}*0.01;

>> net.b{2}=net.b{2}*0.01;

>> net=train(net,znaki,target);

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




Предыдущий:

Следующий: