崔明光, 張秀梅, 韓維娜
(長春工業(yè)大學 電氣與電子工程學院, 吉林 長春 130012)
隨著木材加工業(yè)的深入發(fā)展,木材的質(zhì)量決定了其商品的使用價值[1]。近年來,很多針對木材缺陷的識別方法被提出,如基于分型理論、超聲波頻譜分析技術(shù)[2]等。然而,這些方法不僅需要較高的實驗器材,對實驗所處的環(huán)境要求也很嚴格。文獻[3]使用無監(jiān)督聚類方法來檢測和識別木材缺陷,但檢測結(jié)果易受到噪聲的影響。文獻[4]采用Neural Network對樹干表面和內(nèi)部缺陷進行辨別,模型雖然具有良好的學習能力,但它在數(shù)據(jù)表示方面還有所欠缺。
針對木材缺陷的檢測與分割問題,提出一種基于深度學習的木材缺陷檢測算法。深度學習本質(zhì)上是一種特殊的神經(jīng)網(wǎng)絡(luò)[5],主要包括受限玻爾茲曼機、深度信念網(wǎng)絡(luò)、自動編碼器、遞歸神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)[6]。其中,卷積神經(jīng)網(wǎng)絡(luò)提供一種端到端的學習模型,在訓練時,采用梯度下降法對模型參數(shù)進行優(yōu)化,實現(xiàn)對圖像特征學習和分類[7]。隨著深度學習算法的不斷發(fā)展,它在視覺領(lǐng)域有著突出的性能,使得傳統(tǒng)方法無法解決的問題得以解決。近年來,許多學者致力于深入學習的目標檢測[8]。2012年,Krizhevsjy等[9]提出Alex-Net結(jié)構(gòu),并在圖像網(wǎng)絡(luò)圖像分類大賽中獲得冠軍。文中采用卷積神經(jīng)網(wǎng)絡(luò)對木材缺陷進行識別。實驗表明,卷積神經(jīng)網(wǎng)絡(luò)具有較高的識別精度、較低的復雜度和魯棒性。He等[10]提出的深度殘差網(wǎng)絡(luò),在前饋卷積網(wǎng)絡(luò)上增加了一些跨層的連接,該結(jié)構(gòu)不僅在層數(shù)上刷新了記錄,而且在圖像網(wǎng)絡(luò)中取得了很好的效果,Sun等[11]提出的DeepId網(wǎng)絡(luò)中也有設(shè)計將最后的池化層和卷積層與全連接層相連。
卷積神經(jīng)網(wǎng)絡(luò)最初是由多倫多大學的Yann Lecun[12]教授提出的,因為其具有局部感知、權(quán)值共享和降采樣[13]三大特性,局部感知可以大大增強提取局部特征的能力,減少網(wǎng)絡(luò)的參數(shù);權(quán)值共享可以大大減少網(wǎng)絡(luò)的參數(shù),降低網(wǎng)絡(luò)的復雜程度;降采樣功能是對提取的特征進行采樣,消除圖像信息提取帶來的冗余度;正是因為CNN的這些特性,使其在人臉識別[14]、交通標志識別[15]、手寫字體識別[16]、目標識別[17]等方面有著良好的應用[18]。
常見的CNN基本結(jié)構(gòu)有三層:輸入層、隱含層和輸出層。輸入層主要是將原始圖片進行預處理,統(tǒng)一其尺寸大小再進行輸入;隱含層包括卷積層、池化層和全連接層,卷積層主要從圖像中提取特征,池化層的設(shè)計是為了減小圖像的大小并加快計算速度,全連接層是一種常見的隱含層,它通過全連接將網(wǎng)絡(luò)信息傳遞給分類器;最后,輸出層輸出結(jié)果。
在卷積神經(jīng)網(wǎng)絡(luò)中,存在著四種操作,分別為內(nèi)卷積、外卷積、下采樣和上采樣。
(1)
式中,1≤i≤M-m+1,1≤j≤N-n+1。
它們的外卷積定義為
(2)
(3)
(4)
式中,(i-1)×λ+1≤s≤i×λ,(j-1)×τ+1≤t≤j×τ。
(5)
用大小為λ×τ的對矩陣A的下采樣定義為
(6)
對矩陣A進行倍數(shù)為λ×τ的不重疊上采樣定義為
upλ×τ(A)=A?lλ×τ,
(7)
式中:lλ×τ----全為1的矩陣;
?----克羅內(nèi)克積。
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)不能有效地融合低層次特征和高層次特征來構(gòu)造更好的分類器,為了解決這一問題,引入跨層連接的思想,提出了一種跨層卷積神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)模型包含一個輸入層、兩個卷積層、兩個池化層、一個全連接層和一個輸出層,結(jié)構(gòu)如圖1所示。
網(wǎng)絡(luò)的輸入為一張圖片,然后使用兩個互相交錯的卷積層和池化層對圖片進行特征提取,從兩個池層中提取的特征直接傳輸?shù)饺B接層進行融合處理和分類,此時,全連接層的節(jié)點數(shù)是兩個池化層節(jié)點數(shù)之和。在訓練人工神經(jīng)網(wǎng)絡(luò)時,如果其網(wǎng)絡(luò)結(jié)構(gòu)比較復雜,而用于訓練的樣本數(shù)量較小,訓練出來的模型可以很好地擬合訓練樣本,但采用測試樣本對其進行測試時,網(wǎng)絡(luò)可能不會很好地擬合,即出現(xiàn)過擬合的情況。在這種情況下,Dropout技術(shù)可以用來減少過度擬合的可能性,提高模型的適應性。簡單地說,在每次訓練的時候,讓一半的神經(jīng)元工作,這樣可以提高網(wǎng)絡(luò)的泛化能力。
圖1 改進的網(wǎng)絡(luò)模型
在訓練階段加入Dropou技術(shù)后,由伯努利隨機分布函數(shù)確定上下層之間的聯(lián)系。每個連接的網(wǎng)絡(luò)節(jié)點不同,使得網(wǎng)絡(luò)稀疏連接多樣化。經(jīng)驗證,隱藏節(jié)點的概率等于0.5,原因是當取值0.5的時候,Dropout隨機生成的網(wǎng)絡(luò)結(jié)構(gòu)最多。文中采用Dropout技術(shù),通過隨機連接整個連接層中的神經(jīng)節(jié)點來合成不同的結(jié)構(gòu)網(wǎng)絡(luò),在一定程度上對過擬合有著一定的影響。
對于第l個樣本xl,跨連卷積神經(jīng)網(wǎng)絡(luò)的計算過程為:
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
式中:σ(·)----激活函數(shù),g(x)=x;
downλ×τ(·)----下采樣函數(shù);
W1,j,b1,j----分別為第一個隱含層的第j個卷積核和偏置;
W3,j,b3,j----分別為第三個隱含層的第j個卷積核和偏置;
W6,b6----分別表示輸出層的權(quán)值和偏置;
系統(tǒng)的輸入為
期望的輸出為
實際的輸出為
則優(yōu)化的目標函數(shù)為樣本的均方誤差,即
(16)
為了計算反向傳播,應首先計算各層的反饋誤差δ,針對全連接層,因為其采用了Dropout技術(shù),全連接層節(jié)點的輸出值以50%的概率被隨機清0,既然前向傳播時有些隱含節(jié)點值被清0了,那么在誤差方向傳播時也應該有相應的處理,同時還需要注意在第一個池化層的反饋誤差,因為其不僅與下一層的卷積層相連,還與全連接層相連,因此,該層的反饋誤差為兩部分之和。
(17)
(18)
δ5=(δ21,1,δ21,2,…,δ21,6,δ4,1,δ4,2,…,δ4,12),
(19)
(20)
(21)
δ2=(δ21,j+δ22,j),1≤j≤6,
(22)
(23)
式中: °----矩陣表對應元素相乘;
upλ×τ(·)----上采樣操作。
在獲得每一層傳遞誤差后,對網(wǎng)絡(luò)的各層參數(shù)求其偏導數(shù),如下:
(24)
(25)
(26)
最后,利用梯度下降法更新權(quán)值與偏導。
對于訓練集S={(xl,yl),1≤l≤N},算法如下:
1)隨機初始化所有的權(quán)值和偏置;
2)for epoch=1 to maxepoch do;
3)for l=1 to N do;
4)通過設(shè)計的網(wǎng)絡(luò)計算每個樣本的實際輸出;
5)計算網(wǎng)絡(luò)每一層的反饋傳遞誤差;
6)計算網(wǎng)絡(luò)中權(quán)值與偏置的導數(shù);
7)使用梯度下降法更新網(wǎng)絡(luò)的權(quán)值與偏置;
8)End for;
9)End for。
采用的木材缺陷來自文獻[19],選取其中幾種常見的木材缺陷,如圖2所示。
(a) dry_knot
(b) edge_knot
(c) leaf_knot
(d) sound_knot圖2 木材缺陷圖片
將樣本集中的圖片進行處理,使其尺寸達到一致,并采用相同的訓練集和測試集,分別對傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)沒加入Dropout技術(shù)的跨層連接和加入Dropout技術(shù)的跨層連接進行實驗,通過選擇相同的學習速率和訓練次數(shù),得到相應的網(wǎng)絡(luò)訓練誤差曲線和誤差識別率。誤差曲線分別如圖3~圖5所示。
圖3 傳統(tǒng)CNN的訓練誤差圖
圖4 沒加入Dropout技術(shù)的訓練誤差圖
圖5 加入Dropout技術(shù)的訓練誤差圖
由圖3和圖4可以看出,網(wǎng)絡(luò)在訓練集中進行訓練與傳統(tǒng)的CNN相比,采用跨層連接可以將網(wǎng)絡(luò)的高層次特征和低層次特征相結(jié)合,在網(wǎng)絡(luò)訓練中,為網(wǎng)絡(luò)更快收斂提供了更多的特征值,在相同的訓練時間內(nèi),將跨層連接方法與傳統(tǒng)方法進行了比較,它可以減小網(wǎng)絡(luò)的訓練誤差,使誤差穩(wěn)定得更快。
由圖4和圖5可以看出,當網(wǎng)絡(luò)達到穩(wěn)定或者最大迭代次數(shù)時,加入Dropout后網(wǎng)絡(luò)在訓練誤差精度上比沒有加入Dropout的要壞一些,其原因是網(wǎng)絡(luò)結(jié)構(gòu)采用Dropout技術(shù),可以增強網(wǎng)絡(luò)的泛化能力,使網(wǎng)絡(luò)結(jié)構(gòu)不會出現(xiàn)過擬合現(xiàn)象,所以網(wǎng)絡(luò)的訓練誤差要比沒有加入Dropout精度低一些。交叉驗證后,當丟棄概率值為0.5時,Dropout是最佳選擇,因為當概率值為0.5時,隨機生成的網(wǎng)絡(luò)結(jié)構(gòu)最多。
跨層思想能有效地提高網(wǎng)絡(luò)的識別精度,減少網(wǎng)絡(luò)的訓練誤差,算法比較見表1。
表1 算法比較
由表1可以看出,加入Dropout技術(shù)后,網(wǎng)絡(luò)的訓練誤差雖然要比沒有加入Dropout技術(shù)的低一些,但其識別率有所提高,這證明了加入Dropout技術(shù)是對網(wǎng)絡(luò)的一種正則化,防止網(wǎng)絡(luò)出現(xiàn)過擬合現(xiàn)象。
對訓練后的網(wǎng)絡(luò)進行測試,測試結(jié)果分別如圖6~圖8所示。
圖6 傳統(tǒng)CNN的測試結(jié)果
圖7 未加入Dropout的測試結(jié)果
圖8 加入Dropout的測試結(jié)果
圖6中,圓形是樣品的實際值,三角形是預測值和實際值之間的差異,由圖6和圖7對比可以看出,采用跨層連接的測試結(jié)果比傳統(tǒng)CNN的要好,采用跨層連接其識別的錯誤率僅為16.64%,而CNN的識別錯誤率為19.11%。這可能是因為文中可以直接使用兩個池化層提取到的特征去分類,而CNN直接使用一個池化層提取到的特征去分類,采用跨層連接的方法可以融合不同尺度的信息時能夠更加準確地反映圖像信息,從而獲得更好的分類性能。
由圖7和圖8可以看出,在加入了Dropout技術(shù)后,網(wǎng)絡(luò)的錯誤識別率有所降低,為15.17%。一般情況下,對于同一組訓練數(shù)據(jù),利用不同的神經(jīng)網(wǎng)絡(luò)訓練之后,求其輸出的平均值可以減少過擬合。Dropout就是利用這個原理,每次丟掉一半的一隱藏層神經(jīng)元,相當于在不同的神經(jīng)網(wǎng)絡(luò)上進行訓練,減少了神經(jīng)元之間的依賴性,所以,Dropout不僅減少過擬合,還能提高準確率。
在卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上提出了一個跨連卷積網(wǎng)絡(luò)模型,該模型能夠通過跨層連接融合兩個隱含層的圖像特征,從而更加準確地反映圖像信息,并針對網(wǎng)絡(luò)的過擬合現(xiàn)象,采用Dropout技術(shù)防止模型產(chǎn)生過擬合。實驗結(jié)果表明,針對木材缺陷的圖像識別,采用文中方法比傳統(tǒng)方法要好,因為文中方法將網(wǎng)絡(luò)的高層次特征和低層次特征相結(jié)合,并且可以有效地防止網(wǎng)絡(luò)因為訓練過度而產(chǎn)生的過擬合現(xiàn)象。