Ⅰ 如何通過人工神經網路實現圖像識別
人工神經網路(Artificial Neural Networks)(簡稱ANN)系統從20 世紀40 年代末誕生至今僅短短半個多世紀,但由於他具有信息的分布存儲、並行處理以及自學習能力等優點,已經在信息處理、模式識別、智能控制及系統建模等領域得到越來越廣泛的應用。尤其是基於誤差反向傳播(Error Back Propagation)演算法的多層前饋網路(Multiple-Layer Feedforward Network)(簡稱BP 網路),可以以任意精度逼近任意的連續函數,所以廣泛應用於非線性建模、函數逼近、模式分類等方面。
目標識別是模式識別領域的一項傳統的課題,這是因為目標識別不是一個孤立的問題,而是模式識別領域中大多數課題都會遇到的基本問題,並且在不同的課題中,由於具體的條件不同,解決的方法也不盡相同,因而目標識別的研究仍具有理論和實踐意義。這里討論的是將要識別的目標物體用成像頭(紅外或可見光等)攝入後形成的圖像信號序列送入計算機,用神經網路識別圖像的問題。
一、BP 神經網路
BP 網路是採用Widrow-Hoff 學習演算法和非線性可微轉移函數的多層網路。一鬧肢個典型的BP 網路採用的是梯度下降演算法,也就是Widrow-Hoff 演算法所規定的。backpropagation 就是指的為非線性多層網路計算梯度的方法。一個典型的BP 網路結構如圖所示。
我們將它用向量圖表示如下圖所示。
其中:對於第k 個模式對,輸出層單元的j 的加權輸入為
該單元的實際輸出為
而隱含層單元i 的加權輸入為
該單元的實際輸出為
函數f 為可微分遞減函數
其演算法描述如下:
(1)初始化網路及學習參數,如設置網路初始權矩陣、學習因子等。
(2)提供訓練模式,訓練網路,直到滿足學習要求。
(3)前向傳播過程:對給定訓練模式輸入,計算網路的輸出模式,並與期望模式比較,若有誤差,則執行(4);否則,返回(2)。
(4)後向傳播過程:a. 計算同一層單元的誤差;b. 修正權值和閾值;c. 返回(2)
二、 BP 網路隱層個數的選擇
對於含有一個隱層的三層BP 網路可以實現輸入到輸出的任何非線性映射。增加網路隱層數可以降低誤差,提高精度,但同時也使網路復雜化,增加網路的訓練時間。誤差精度的提高也可以通過增加隱層結點數來實現。一般情況下,應優先考慮增加隱含層的結點數。
三、隱含層神經元個數的選擇
當用神經網路實現網路映射時,隱含層神經元個數直接影響著神經網路的學習能力和歸納能力。隱含層神經元數目較少時,網路每次學習的時間較短,但有可能因為學習不足導致網路無法記住全部學習內容;隱含層神經元數目較大時,學習能力增強,網路每次學習的時間較長,網路的存儲容量隨之變大,導致網路對未知輸入的歸納能力下降,因為對隱含層神經元個數的選擇尚無理論上的指導,一般憑經驗確定。
四、神經網路圖像識別系統
人工神經網路方法實現模式識別,可處理一些環境信息十分復雜,背景知識不清楚,推理規則不明確的問題,允許樣品有較大的缺損、畸變,神經網路方法的缺點是其模型在不斷豐富完善中,目前能識別的模式類還不夠多,神經網路方法允許樣品有較大的缺損和畸變,其運行速度快,自適應性能好,具有較高的解析度。
神經網路的圖像識別系統是神經網路模式識別系統的一種,原理是一致的空改。一般神經網路圖像識別系統由預處理,特徵提取和神經網路分類器組成。預處理就是將原始數據中的無用信息刪除,平滑,二值化和進行幅度歸一化等。神經網路圖像識別系統中的特徵提取部分不一定存在,這樣就分為兩大類:① 有特徵提取部分的:這一類系統實際上是傳統方法與神經網路方法技術的結合,這種方法可以充分利用人的經驗來獲取模式特徵以及神經網路分類能力來識別目標圖像。特徵提取必須能反應整個圖像的特徵。但它的抗干擾能力不如第2類。② 無特徵提取部分的:省去特徵抽取,整副圖像直接作為神經網路的輸入,這種方式下,系統的神經網路結構的復雜度大大增加了,輸入模式維數的增加導致了網路規模的龐大。此外,神經網路結構需要完全自己消除模式變形的影響。但是網路的抗干擾性能好,識別率高。
當BP 網用於分類時,首先要選擇各類的樣斗彎判本進行訓練,每類樣本的個數要近似相等。其原因在於一方面防止訓練後網路對樣本多的類別響應過於敏感,而對樣本數少的類別不敏感。另一方面可以大幅度提高訓練速度,避免網路陷入局部最小點。
由於BP 網路不具有不變識別的能力,所以要使網路對模式的平移、旋轉、伸縮具有不變性,要盡可能選擇各種可能情況的樣本。例如要選擇不同姿態、不同方位、不同角度、不同背景等有代表性的樣本,這樣可以保證網路有較高的識別率。
構造神經網路分類器首先要選擇適當的網路結構:神經網路分類器的輸入就是圖像的特徵向量;神經網路分類器的輸出節點應該是類別數。隱層數要選好,每層神經元數要合適,目前有很多採用一層隱層的網路結構。然後要選擇適當的學習演算法,這樣才會有很好的識別效果。在學習階段應該用大量的樣本進行訓練學習,通過樣本的大量學習對神經網路的各層網路的連接權值進行修正,使其對樣本有正確的識別結果,這就像人記數字一樣,網路中的神經元就像是人腦細胞,權值的改變就像是人腦細胞的相互作用的改變,神經網路在樣本學習中就像人記數字一樣,學習樣本時的網路權值調整就相當於人記住各個數字的形象,網路權值就是網路記住的內容,網路學習階段就像人由不認識數字到認識數字反復學習過程是一樣的。神經網路是按整個特徵向量的整體來記憶圖像的,只要大多數特徵符合曾學習過的樣本就可識別為同一類別,所以當樣本存在較大雜訊時神經網路分類器仍可正確識別。在圖像識別階段,只要將圖像的點陣向量作為神經網路分類器的輸入,經過網路的計算,分類器的輸出就是識別結果。
五、模擬實驗
1、實驗對象
本實驗用MATLAB 完成了對神經網路的訓練和圖像識別模擬。從實驗資料庫中選擇0~9 這十個數字的BMP 格式的目標圖像。圖像大小為16×8 像素,每個目標圖像分別加10%、20%、30%、40%、50%大小的隨機雜訊,共產生60 個圖像樣本。將樣本分為兩個部分,一部分用於訓練,另一部分用於測試。實驗中用於訓練的樣本為40個,用於測試的樣本為20 個。隨機雜訊調用函數randn(m,n)產生。
2、網路結構
本試驗採用三層的BP 網路,輸入層神經元個數等於樣本圖像的象素個數16×8 個。隱含層選24 個神經元,這是在試驗中試出的較理想的隱層結點數。輸出層神經元個數就是要識別的模式數目,此例中有10 個模式,所以輸出層神經元選擇10 個,10 個神經元與10 個模式一一對應。
3、基於MATLAB 語言的網路訓練與模擬
建立並初始化網路
1
2
3
4
5
6
7
8
% ================
S1 = 24;% 隱層神經元數目S1 選為24
[R,Q] = size(numdata);
[S2,Q] = size(targets);
F = numdata;
P=double(F);
net = newff(minmax(P),[S1 S2],{'logsig'
'logsig'},'traingda','learngdm')
這里numdata 為訓練樣本矩陣,大小為128×40, targets 為對應的目標輸出矩陣,大小為10×40。
newff(PR,[S1 S2…SN],{TF1 TF2…TFN},BTF,BLF,PF)為MATLAB 函數庫中建立一個N 層
前向BP 網路的函數,函數的自變數PR 表示網路輸入矢量取值范圍的矩陣[Pmin max];S1~SN 為各層神經元的個數;TF1~TFN 用於指定各層神經元的傳遞函數;BTF 用於指定網路的訓練函數;BLF 用於指定權值和閥值的學習函數;PF 用於指定網路的性能函數,預設值為『mse』。
設置訓練參數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
net.performFcn = 'sse'; %平方和誤差
性能函數
net.trainParam.goal = 0.1; %平方和誤
差目標
net.trainParam.show = 20; %進程顯示
頻率
net.trainParam.epochs = 5000;%最大訓
練步數
net.trainParam.mc = 0.95; %動量常數
網路訓練
net=init(net);%初始化網路
[net,tr] = train(net,P,T);%網路訓練
對訓練好的網路進行模擬
D=sim(net,P);
A = sim(net,B);
B 為測試樣本向量集,128×20 的點陣。D 為網路對訓練樣本的識別結果,A 為測試樣本的網路識別結果。實驗結果表明:網路對訓練樣本和對測試樣本的識別率均為100%。如圖為64579五個數字添加50%隨機雜訊後網路的識別結果。
六、總結
從上述的試驗中已經可以看出,採用神經網路識別是切實可行的,給出的例子只是簡單的數字識別實驗,要想在網路模式下識別復雜的目標圖像則需要降低網路規模,增加識別能力,原理是一樣的。