張冬妍,韓 睿,張 瑞,曹 軍
東北林業(yè)大學(xué) 機(jī)電工程學(xué)院,哈爾濱 150040
目前,世界上大約有6萬多種樹木,對樹木研究的基礎(chǔ)是對其進(jìn)行分類處理,所以對其分類的方法進(jìn)行研究具有很重要的意義.相對于樹干、樹形和樹木等生物信息,樹葉具有特定的外形輪廓和紋理等固有特征,易于區(qū)分和鑒定,常作為區(qū)分樹木種類的重要標(biāo)志[1].樹葉的分類與識別對于區(qū)分樹的種類、對樹木物種種群的跟蹤和保護(hù)、建立樹木種類數(shù)據(jù)庫、植物基礎(chǔ)醫(yī)學(xué)研究、樹木分布等具有十分重要的意義[2].
傳統(tǒng)的樹葉分類識別主要基于圖像處理技術(shù),對樹葉圖像進(jìn)行認(rèn)為選定的特征來進(jìn)行分類,識別效率較低且泛化能力弱.近年人工智能快速發(fā)展,基于深度學(xué)習(xí)的算法在圖像分類識別方面表現(xiàn)出巨大的優(yōu)勢,可以快速而有效地提取和分析圖像中復(fù)雜深層次的特征,對于圖像分類識別具有很好的效果[3].
文獻(xiàn)[4-6]研究了卷積神經(jīng)網(wǎng)絡(luò)在圖像和語音中的應(yīng)用,Krizhevsky[7]2012年在ILSVRC圖像識別比賽中使用AlexNet模型獲得冠軍,首次實現(xiàn)了15.40%的錯誤率,引起了深度學(xué)習(xí)和卷積神經(jīng)網(wǎng)絡(luò)研究的興起和爆炸性增長.在后續(xù)的ZFnet,VGG,GoogleNet,Resnet等深度學(xué)習(xí)網(wǎng)絡(luò)模型中[8-11],圖像識別的錯誤率逐漸下降到2.25%,展現(xiàn)出深度學(xué)習(xí)在圖像分類識別中的優(yōu)勢.Grinblat等[12]利用靜脈形態(tài)學(xué)的模式識別方法對植物品種進(jìn)行識別,能夠準(zhǔn)確識別3種豆科植物.2016年,Sladojevic等[13]利用深層神經(jīng)網(wǎng)絡(luò)識別了13種植物病蟲害,平均準(zhǔn)確率為96.30%.同年,張帥等[14]設(shè)計了一個8層卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)系統(tǒng),并用softmax和SVM兩種分類器進(jìn)行樹葉分類,對單一背景下的樹葉分類準(zhǔn)確率高達(dá)91.11%和90.90%.2017年,Cruz等[15]研究了一種基于遷移學(xué)習(xí)和深度學(xué)習(xí)的可視化植物病害檢測系統(tǒng),采用卷積神經(jīng)網(wǎng)絡(luò)結(jié)合遷移學(xué)習(xí)的方式,對少量圖像樣本進(jìn)行訓(xùn)練和驗證,可以自動、定量地檢測早期植物病害,降低了診斷時間和成本.2019年,Barbedo等[16]采用CNN和GoogleNet結(jié)構(gòu)進(jìn)行深度學(xué)習(xí),建立了有效的病蟲害檢測與識別模型,并與原始圖像進(jìn)行了病蟲害和斑點的特征提取,而原始圖像在不使用手工去除背景的情況下,整體準(zhǔn)確率提高到94%.
為了提高樹葉分類的準(zhǔn)確性,本文使用CapsNet神經(jīng)網(wǎng)絡(luò)模型對樹葉進(jìn)行分類識別.首先,建立了樹葉圖像的數(shù)據(jù)集;其次,對數(shù)據(jù)集中的樹葉圖像進(jìn)行預(yù)處理和數(shù)據(jù)增強;最后,對CapsNet網(wǎng)絡(luò)進(jìn)行優(yōu)化改進(jìn),對處理后的圖像進(jìn)行訓(xùn)練和預(yù)測.實驗結(jié)果表明,改進(jìn)后的CapsNet在樹葉分類上的效果明顯優(yōu)于原CapsNet,有助于實現(xiàn)樹葉種類的快速識別,為建立樹種數(shù)據(jù)庫、樹木種群的跟蹤和保護(hù)提供了重要的技術(shù)儲備.
在深度學(xué)習(xí)中,卷積神經(jīng)網(wǎng)絡(luò)(CNN)在圖像分類識別方面效果非常好,但CNN的內(nèi)部數(shù)據(jù)表示沒有考慮特征之間的重要空間層級關(guān)系.雖然CNN可以通過最大池化或者添加后續(xù)卷積層來減少通過網(wǎng)絡(luò)的數(shù)據(jù)空間的大小,從而增加上層神經(jīng)元的“視野”,即獲得輸入圖像較大區(qū)域的高階特征,在一定程度上提高了模型對圖像的識別能力,但是,最大池化會損失有價值的特征信息,使用傳統(tǒng)卷積網(wǎng)絡(luò)也無法解決低級特征和高級特征空間位置關(guān)系的根本問題.Sabour等[17]在2017年提出了基于膠囊系統(tǒng)和動態(tài)路由機(jī)制的CapsNet神經(jīng)網(wǎng)絡(luò),在MINST數(shù)據(jù)集上實現(xiàn)了極高的分類準(zhǔn)確率.膠囊用于對圖像中特征的屬性和空間關(guān)系進(jìn)行封裝編碼,例如位置、大小、方向、變形、速度、反射率、顏色和紋理等[18].在多層膠囊系統(tǒng)中,低層膠囊將其輸出發(fā)送給對該輸出結(jié)果表示“認(rèn)同”的高一層膠囊,這一步是通過囊間動態(tài)路由算法實現(xiàn)的[19].
圖1 膠囊之間的傳播過程
(1)
(2)
式中,cij是由迭代動態(tài)路由過程確定的耦合系數(shù),而且膠囊網(wǎng)絡(luò)模型中不存在偏置項.
CapsNet中使用非線性激活函數(shù)Squashing將矢量的大小縮放到0~1之間.得到sj后,再通過這個Squashing函數(shù)將矢量sj轉(zhuǎn)化成矢量vj如式(3)所示:
(3)
由于這個函數(shù)是非線性的,輸出的vj保持了sj的維度,不改變矢量的方向,只改變了矢量的大小,其輸出矢量的長度代表著膠囊檢測的給定特征的概率,因此,每個膠囊的概率在0~1之間.
以下過程會被迭代r次:首先使用softmax計算所有權(quán)重cij的值,如式(4)所示:
(4)
softmax可以確保所有權(quán)重cij均為非負(fù)數(shù),且使其總和等于1.
(5)
在更新權(quán)重之后,算法將返回并重新開始計算cij的值,重新開始這一過程,并重復(fù)r次.動態(tài)路由算法很容易收斂,但也存在著過擬合問題,雖然增加迭代次數(shù)可以提高準(zhǔn)確率,但是會增加泛化誤差,所以不宜過多迭代.
對于圖像中出現(xiàn)的每個類別k,膠囊使用單獨的利潤損失Lk如式(6)所示:
Lk=Tkmax(0,m+-‖vk‖)2+λ(1-Tk)max(0,‖vk‖-m-)2
(6)
如果存在k類圖片,則設(shè)置Tk=1,并且m+=0.9,m-=0.1,將λ取值為0.5來降低某些類別沒有出現(xiàn)時的損失,這樣可以保證表示該類別的數(shù)字膠囊的向量模值盡可能大,其他類別的向量模值盡可能小,以實現(xiàn)準(zhǔn)確分類.總損失就是所有數(shù)字膠囊損失的總和.
使用的樹葉是實驗室自行拍攝采集即建立的深度學(xué)習(xí)數(shù)據(jù)集,數(shù)據(jù)集中采集了桉樹、龍眼、木荷、珊瑚樹、水翁樹、香樟、柚樹、桃花心木、荷花木蘭、深山含笑共10種樹木的樹葉(圖2),共計3 193張圖片,每一種樹葉圖片約300張左右.
圖2 樹葉圖片
在使用含3 193張圖像的數(shù)據(jù)集訓(xùn)練網(wǎng)絡(luò)模型之前,本文將圖像像素大小從原始的1 536×1 536調(diào)整為147×147.由于深度學(xué)習(xí)對數(shù)據(jù)集的數(shù)據(jù)量有一定的要求,研究中每種樹葉的圖片數(shù)量在300張左右,這無法滿足算法在實踐過程中的泛化能力,會導(dǎo)致模型過擬合.雖然可以通過現(xiàn)有的其他數(shù)據(jù)集和網(wǎng)絡(luò)途徑獲取更多的圖片數(shù)據(jù),但獲取的圖片質(zhì)量參差不齊,無法使數(shù)據(jù)集數(shù)量有效增多.為了減少樹葉圖像在訓(xùn)練時的過擬合,增強模型的泛化能力,本文嘗試用數(shù)據(jù)增強來解決,數(shù)據(jù)增強主要通過對樹葉圖像進(jìn)行圖像變換處理,例如旋轉(zhuǎn)、縮放、平移、尺度變換等,本文使用的圖像增強方法如下:
1)將原始圖像向隨機(jī)方向平移10到20像素;
2)隨機(jī)選擇角度對圖像進(jìn)行旋轉(zhuǎn);
3)對圖像進(jìn)行輕微模糊處理;
4)向圖像添加隨機(jī)噪聲.
經(jīng)過圖像增強處理后,10種樹葉圖像增強至15 965張,分別是桉樹1 485張,深山含笑2 215張,龍眼1 530張,木荷1 310張,荷花木蘭1 090張,珊瑚樹2 810張,水翁樹1 335張,桃花心木1 535張,香樟1 295張,柚樹1 360張,用于訓(xùn)練的數(shù)據(jù)集數(shù)量如表1所示.其中,桉樹樹葉的增強示例圖像如圖3所示.
圖3 數(shù)據(jù)增強示例
表1 數(shù)據(jù)集數(shù)量
在擴(kuò)充后的數(shù)據(jù)集中隨機(jī)抽取12 772張圖片(占數(shù)據(jù)集的80%)作為訓(xùn)練集,1 597張(約占數(shù)據(jù)集的10%)作為驗證集,剩余1 596張(約占數(shù)據(jù)集的10%)作為測試集.訓(xùn)練集用于訓(xùn)練CapsNet的模型參數(shù),驗證集在每一個epoch完成后測試當(dāng)前模型的準(zhǔn)確率,根據(jù)準(zhǔn)確率對模型的超參數(shù)(學(xué)習(xí)率,迭代次數(shù)等參數(shù))進(jìn)行調(diào)整,從而得到一個更好的模型,測試集不參與模型的訓(xùn)練過程,用于測試已訓(xùn)練好的模型的性能.
采用兩種方法對動態(tài)路由環(huán)節(jié)進(jìn)行優(yōu)化改進(jìn).一種是引入Adam函數(shù),另一種是改進(jìn)壓縮函數(shù).
陳立潮等[20]在動態(tài)路由環(huán)節(jié)加入了Adam算法,可以使模型收斂更加平穩(wěn).算法對膠囊間參數(shù)的誤差進(jìn)行移動指數(shù)平均,動態(tài)調(diào)整路由算法的Leaning Rate,對權(quán)重bij進(jìn)行調(diào)整.
本文在其基礎(chǔ)上優(yōu)化了Adam算法的部分環(huán)節(jié),對動態(tài)路由環(huán)節(jié)進(jìn)行改進(jìn),迭代時用平移后的Sigmoid乘以sj/‖sj‖代替Squashing函數(shù),在最后輸出的時候使用Squashing函數(shù),改進(jìn)后的算法如下:
算法1:改進(jìn)動態(tài)路由
初始化:bij←0,一階矩mt=0,二階矩nt=0,一階矩指數(shù)衰減率α=0.9,二階矩指數(shù)衰減率β=0.999,穩(wěn)定數(shù)值常數(shù)ε=10-8,時間步t=0.
2:for all capsuleiin layerland capsulejin layer(l+1):bij←0,mt←0,nt←0,α←0.9,β←0.999,ε←10-8,t=0,η←0.001.
3:forriterations do
4:ci←softmax(bi)
6:vj←Sigmoid(‖sj‖-5)·sj/‖sj‖
7:mt←αmt-1+(1-α)uj|ivj
8:nt←βnt-1+(1-β)(uj|ivj)2
12:return squash(vj)
其中softmax函數(shù)的定義由公式(4)給出,Squashing函數(shù)定義由公式(3)給出,Sigmoid函數(shù)如下:
Sigmoid(‖sj‖)=1/(1+e-‖sj‖)
(7)
由于CapsNet網(wǎng)絡(luò)最后是用向量的模的大小衡量某個結(jié)果的概率,模的大小和概率大小直接相關(guān),模值越大,相應(yīng)概率也越大.Sigmoid函數(shù)比Squashing函數(shù)收斂速度更快,因此采用平移后的Sigmoid函數(shù)乘以sj/‖sj‖在迭代環(huán)節(jié)替代Squashing函數(shù)能在結(jié)果接近0或1時起到放大作用,從而可以提高對某些特定種類圖片的識別準(zhǔn)確率,同時可以提高模型運行效率.
由于原CapsNet僅支持28×28大小的圖片輸入,為了適應(yīng)數(shù)據(jù)集的圖片尺寸,提升模型性能,將CNN網(wǎng)絡(luò)與改進(jìn)的CapsNet相結(jié)合,得到一種新的強化膠囊網(wǎng)絡(luò)(Enhanced-CapsNet)模型,如圖4所示.
圖4 膠囊網(wǎng)絡(luò)模型
模型開始部分有一層卷積核大小為7×7,步長為2的卷積層,具有ReLU非線性激活函數(shù).第二層也是卷積層,卷積核大小為6×6,步長為1.之后連接一個池化層,池化核大小為2×2,步長為1,采用最大池化.池化層后再連接一個6×6步長為1的卷積層,將數(shù)據(jù)重塑之后再輸入PrimaryCaps層.這樣可以盡可能地獲得圖片的主要特征信息,由于數(shù)據(jù)量較大,所以引入了池化層進(jìn)行數(shù)據(jù)降維,提高模型性能和運行效率.
PrimaryCaps層:PrimaryCaps中使用9×9大小的卷積核在28×28的空間中移動,步長為2,通道數(shù)為32,設(shè)置為無填充.這一層的作用類似常規(guī)的卷積層,但最重要的作用是將每8個10×10×1×32的輸出封裝在一起,形成一個長度為8的矢量,為改進(jìn)的Routing算法做準(zhǔn)備.在PrimaryCaps層最后得到的輸出形狀為10×10×8×32,這一層共輸出3 200(10×10×32)個矢量,也就是3 200個膠囊單元.
DigitCaps層:在DigitCaps中將長度為8的膠囊轉(zhuǎn)換為長度16的膠囊.由于使用的樹葉數(shù)據(jù)集包含有10個類別,因此DigitCaps中包含有10個長度為16的矢量,這10個矢量分別代表不同的分類.本層中使用了Routing算法并經(jīng)過計算獲得最終輸出值向量vj,根據(jù)vj獲得圖像被識別為特定類別的概率.
整個模型參數(shù)設(shè)置如表2所示.
表2 E-CapsNet參數(shù)設(shè)置
使實驗設(shè)定批尺寸為100,epoch設(shè)為50,同時使用原始的CapsNet網(wǎng)絡(luò)和經(jīng)典網(wǎng)絡(luò)AlexNet以及Inception V3深度學(xué)習(xí)模型進(jìn)行對比.
實驗使用的計算機(jī)內(nèi)存為16GB,搭載Inter(R)Core(TM)i7-7700HQ CPU處理器,使用NVIDIA Geforce GTX 1070 8G顯卡,軟件環(huán)境為Ubuntu18.04操作系統(tǒng),終端軟件為Pycharm,Python版本為3.6,使用Tensorflow+Keras框,Cuda版本為10.0.130.
由于實驗是一個多分類任務(wù)(共10種類別),所以采用準(zhǔn)確率(Accuracy)評價10類圖像的分類效果,準(zhǔn)確率用ηAccuracy表示,計算公式如下:
ηAccuracy=(TP+TN)/(P+N)
(8)
其中TP為正類預(yù)測且結(jié)果為正類的個數(shù),TN為負(fù)類預(yù)測且結(jié)果為負(fù)類的個數(shù),P為所有正類預(yù)測個數(shù),N為所有負(fù)類預(yù)測個數(shù).
使用E-CapsNet網(wǎng)絡(luò)訓(xùn)練和分類樹葉數(shù)據(jù)集的15 965張圖像,我們最終獲得的結(jié)果如表3所示:經(jīng)過50次epoch的訓(xùn)練,模型訓(xùn)練集準(zhǔn)確率最高達(dá)到99.15%,損失率最低為0.015 89,驗證集的準(zhǔn)確率為98.51%,損失率為0.020 49,測試集準(zhǔn)確率為98.63%,損失率和準(zhǔn)確率分別由公式(6)和公式(8)得出.
表3 E-CapsNet模型的分類訓(xùn)練結(jié)果
圖5為模型訓(xùn)練圖,模型從epoch12左右開始趨近收斂,收斂速度較快,訓(xùn)練準(zhǔn)確率和驗證準(zhǔn)確率曲線接近,訓(xùn)練損失率和驗證損失率都較為平滑,模型擬合效果較好.
圖5 模型訓(xùn)練曲線
本文在AlexNet和Inception V3模型上使用相同的樹葉數(shù)據(jù)集進(jìn)行測試,采用與原CapsNet同樣的學(xué)習(xí)率和迭代次數(shù),E-CapsNet模型的分類精度比AlexNet要高11.63%,比Inception V3模型高7.63%,比原CapsNet網(wǎng)絡(luò)高2.51%.對比實驗結(jié)果如表4所示.
表4 測試集準(zhǔn)確率對比
為了測試動態(tài)路由算法的改進(jìn)對模型精度的影響,本文分別在保證其他參數(shù)相同的情況下,使用E-CapsNet模型,將原Rounting算法、使用Adam算法但不改動壓縮函數(shù)和本文方法進(jìn)行對比.測試結(jié)果如表5所示.
表5 在動態(tài)路由環(huán)節(jié)使用不同優(yōu)化方法的準(zhǔn)確率對比
由表5可見,原動態(tài)路由算法訓(xùn)練集準(zhǔn)確率為96.32%,測試集準(zhǔn)確率為95.86%.僅使用Adam算法進(jìn)行優(yōu)化時,訓(xùn)練集準(zhǔn)確率為98.65%,測試集準(zhǔn)確率為97.47%.使用Adam進(jìn)行優(yōu)化,并且改進(jìn)壓縮函數(shù)部分后,訓(xùn)練集準(zhǔn)確率為99.15%,測試集準(zhǔn)確率為98.63%.由圖6可見,使用了Adam優(yōu)化算法后,訓(xùn)練準(zhǔn)確率曲線收斂相對平滑,擬合度更好,收斂速度也略微增加;同時,在優(yōu)化了動態(tài)路由環(huán)節(jié)的壓縮函數(shù)后,訓(xùn)練準(zhǔn)確率和驗證準(zhǔn)確率更高.可以看出,本文的優(yōu)化可以取得更好的分類效果.
圖6 不同優(yōu)化方法的訓(xùn)練準(zhǔn)確率曲線
在本文中,我們采用改進(jìn)的CapsNet神經(jīng)網(wǎng)絡(luò)對樹葉進(jìn)行分類實驗,將CNN結(jié)構(gòu)與CapsNet網(wǎng)絡(luò)結(jié)合,更好地適應(yīng)了數(shù)據(jù)集圖像尺寸,同時提高了模型性能,克服了傳統(tǒng)人工卷積神經(jīng)網(wǎng)絡(luò)分類器的某些局限性,并使用數(shù)據(jù)增強來減少模型的過擬合,提高了模型的泛化能力.在優(yōu)化了Rounting算法和Squashing函數(shù)環(huán)節(jié)后,模型收斂更加平滑,收斂速度更快,分類識別準(zhǔn)確率也有提升,實現(xiàn)了比原結(jié)構(gòu)更好的性能.同時,我們還設(shè)計了對比實驗,實驗結(jié)果表明,本文訓(xùn)練出的用于樹葉分類的E-CapsNet網(wǎng)絡(luò)模型的測試準(zhǔn)確率達(dá)到98.63%,明顯高于AlexNet和InceptionV3模型和原CapsNet.
CapsNet目前仍處在起步階段,在以后的研究工作中,把重點放在優(yōu)化內(nèi)部結(jié)構(gòu)或者與已有的成熟網(wǎng)絡(luò)模型相結(jié)合上,可能會在優(yōu)化模型性能上更有發(fā)展.