1. 程式人生 > >MATLAB神經網路影象識別程式碼

MATLAB神經網路影象識別程式碼

I0=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\0 (1).png'));
I1=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\1 (1).png'));
I2=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\2 (1).png'));
I3=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\3 (1).png'));
I4=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\4 (1).png'));
I5=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\5 (1).png'));
I6=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\6 (1).png'));
I7=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\7 (1).png'));
I8=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\8 (1).png'));
I9=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\9 (1).png'));
%以上資料都是歸一化好的資料。

P=[I0',I1',I2',I3',I4',I5',I6',I7',I8',I9'];
T=eye(10,10);
%%bp神經網路引數設定
net=newff(minmax(P),[144,200,10],{'logsig','logsig','logsig'},'trainrp');
net.inputWeights{1,1}.initFcn ='randnr';
net.layerWeights{2,1}.initFcn ='randnr';
net.trainparam.epochs=5000;
net.trainparam.show=50;
net.trainparam.lr=0.001;
net.trainparam.goal=0.0000000000001;
net=init(net);
%%%訓練樣本%%%%
[net,tr]=train(net,P,T);

PIN0=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\4 (2).png'));
PIN1=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\3 (2).png'));
P0=[PIN0',PIN1'];
T0=  sim(net ,PIN1')
T1 = compet (T0) 
d =find(T1 == 1) - 1
 fprintf('預測數字是:%d\n',d);
%有較高的識別率 
識別率還是挺高的。但是最大的難點問題是影象的預處理,分割,我覺得智慧演算法的識別已經做得很好了。最重要的是影象預處理分割。