肖經(jīng)緯,田軍委,王 沁,程希希,王 佳
(西安工業(yè)大學 機電工程學院,西安 710021)
果實病害識別(以下簡稱果害識別)是果實自動采摘與分揀[1]的技術(shù)基礎(chǔ),對實現(xiàn)農(nóng)業(yè)自動化具有重要意義。精確的果害識別不僅能實現(xiàn)果園針對性采摘[2]及裝箱,而且還可以統(tǒng)計各種病害的出現(xiàn)次數(shù),在預測產(chǎn)量[3]及果害防治[4]方面提供數(shù)據(jù)指導。傳統(tǒng)的果害識別主要通過手工特征提取法與高光譜圖像法2種方式實現(xiàn)。例如文獻[5]利用圖像顏色、紋理與形狀特征來對蘋果果害進行分類,取得了較為滿意的效果,但是特征的提取過程較為耗時,且十分依賴專家經(jīng)驗。文獻[6]利用果害的光譜圖來識別蘋果病害,準確率達到95.25%,但存在高光譜圖像獲取成本過高的問題[7]。
文獻[8]提出的深度殘差網(wǎng)絡(Deep Residual Network,DRN)是包含多個殘差結(jié)構(gòu)的神經(jīng)網(wǎng)絡,可以用來識別果害[9-11]。DRN將整張圖像作為輸入,在網(wǎng)絡內(nèi)部通過多層卷積篩選,從而獲取出最優(yōu)特征,避免了人為因素的干擾[12],并且成本低廉,能夠大規(guī)模使用[13]。傳統(tǒng)的DRN參數(shù)量較多,在果害分類問題中存在冗余、訓練開銷大的問題。同時,由于不同病害在同一果實上的表現(xiàn)具有一定相似性[14],容易造成識別有誤。針對上述問題,本文對傳統(tǒng)的DRN結(jié)構(gòu)進行改進,并在傳統(tǒng)的損失函數(shù)中添加類間相似懲罰項來提高相似特征病害的識別率。實驗對蘋果中常見的斑點病、銹病和腐病3種病害[15]進行分類,并用該分類結(jié)果來驗證本文方法的準確性。
為獲得與蘋果相關(guān)的果害圖像,實驗對陜西省長武縣果樹病理研究場地的樣本進行收集,并分別在不同角度、不同距離以及不同時間段使用相機進行圖像采集,從而保證了樣本的多樣性。同時,對于相對較少的病害數(shù)據(jù),為避免不均衡樣本造成的模型穩(wěn)定性差的問題,實驗從網(wǎng)絡上收集與之對應的病害圖像對其樣本模型進行擴充。
考慮到果實果害的平移旋轉(zhuǎn)不變性及可縮放性,實驗對已有數(shù)據(jù)進行進一步擴充,包括水平鏡像、±25°角度旋轉(zhuǎn)、隨機縮放等方式,總共得到2 000張樣本集(正常蘋果、斑點病、銹病和腐病各500張),并按照7∶3的比例隨機劃分為訓練集與測試集。
殘差網(wǎng)絡(Residual Network,ResNet)模型引入了殘差結(jié)構(gòu),能夠解決深層次網(wǎng)絡下梯度消失以及網(wǎng)絡難以訓練的問題。殘差結(jié)構(gòu)如圖1所示。
圖1 殘差結(jié)構(gòu)Fig.1 Residual structure
殘差塊通過引入x的恒等映射連接,在網(wǎng)絡層數(shù)過深時,通過將Y=F(x)+x中F(x)擬合為0來實現(xiàn)網(wǎng)絡恒等映射,解決網(wǎng)絡退化問題。同時,由于x的引入使得反向傳播過程中導數(shù)值總大于1,有效防止梯度消失。但由于傳統(tǒng)的ResNet面向上千種分類,參數(shù)量大,存在冗余參數(shù),降低訓練與識別速度[16-17]??紤]到果樹實際生長環(huán)境中出現(xiàn)的病害種類不會超過兩位數(shù),本文設計出一種改進的殘差網(wǎng)絡(sResNet)模型,其結(jié)構(gòu)如圖2所示。
圖2 sResNet網(wǎng)絡結(jié)構(gòu)Fig.2 sResNet network structure
圖2(a)為殘差塊具體結(jié)構(gòu),由3個卷積層組成,每層間使用ReLu作為激活函數(shù),輸入經(jīng)過短路連接后通過最大值池化層輸出。圖2(b)為sResNet的主體,由3個包含128個卷積核、3個包含256個卷積核、5個包含512個卷積核、3個包含1 024個卷積核的殘差塊及2層全連接層組成,模型輸出維度為4,對應蘋果的4種狀態(tài)(3種病害狀態(tài)與1種健康狀態(tài))。
表1列出了sResNet與原始ResNet50網(wǎng)絡的卷積層主要結(jié)構(gòu)及其參數(shù)量。其中,C為卷積層(Convolution),sResNet的參數(shù)量約為傳統(tǒng)ResNet50的75%。
表1 2種網(wǎng)絡卷積組成對比Table 1 Comparison of the composition of twonetwork convolution
在sResNet模型中,以Sigmoid函數(shù)作為輸出前的激活函數(shù),并采用二元交叉熵(Binary Cross-Entropy,BCE)作為損失函數(shù)來計算預測值與真實值之間的差值。其中,Sigmoid函數(shù)和BCE的表達式為:
(1)
BCE(x)i=-ylln[fi(x)]-(1-y)ln[-fi(x)]
(2)
其中,x為輸入樣本,i為類別個數(shù)4,即每個類別都會有一個BCE值,yi為第i個類別的真實標簽,fi(x)為第i個類別的模型輸出值,對應式(1)的輸出。
為加速訓練過程,實驗采用了批量法,最終損失函數(shù)Loss的表達式為:
(3)
其中,N為批量大小,即最終損失函數(shù)為一個批量的損失函數(shù)相加和再求其平均值。
在式(3)的損失函數(shù)中,若樣本實際標簽為真,即yi值為1,則BCE中第2項為0,BCE可簡化為:
BCE(x)i=-ylln[fi(x)]
(4)
若預測值也為真,即式(1)輸出趨近于1,由對數(shù)函數(shù)性質(zhì)可知式(4)值接近0,產(chǎn)生的損失值幾乎可以忽略;若預測值為假,式(1)輸出趨近于0,此時式(4)的輸出呈單調(diào)增大的趨勢,產(chǎn)生的損失值也較大。同理可推知預測值為假時,損失值的變化情況相反。該損失函數(shù)僅可以判斷預測類別與實際類別是否相符,無法保證不同類別之間的空間差異。而果害往往存在相似特征,此時若繼續(xù)使用原始損失函數(shù),模型的預測效果會降低。為此,提出一種改進的損失函數(shù),它在原有損失函數(shù)基礎(chǔ)上,加入類間相似懲罰項,具體如下所示:
(5)
其中,λ為類間相似懲罰項在損失函數(shù)中占的比重,是一個超參數(shù),δ是較小的正實數(shù)(防止分母為0),C為類別數(shù),A為該類主要特征空間位置,計算方法如下:
(6)
其中,x為每個樣本經(jīng)過卷積層提取出的主要特征。對于同一類別的不同樣本,其主要特征具有相似性,則對應的x在空間中的分布位置可以看作是在一個集合中,模型在識別樣本所屬類別時是依靠計算樣本與該類主要特征之間的距離來判別[18]。若只關(guān)注同類樣本正負之間的距離差異,而忽略不同類樣本之間的距離大小,則對于一些具有相似特征的不同類樣本,它們在空間中的分布會接近兩集合的分界線,從而使得模型難以準確判斷其所屬類別,降低模型識別率[19]。
改進后的損失函數(shù)表示為:
Lossfinal=Loss+P
(7)
由式(6)可知,式(5)中的A值是通過對經(jīng)過卷積層后提取出的樣本特征進行求平均值得到的,可以看作該類樣本的主要特征在空間中的位置,而Am-An則為不同類主要特征的差值距離,通過增加Am-An的大小即可擴大不同類的主要特征在空間中的間距,從而減少模型在一些特征較為相似樣本上的錯誤識別,提升模型識別準確率[20]。
圖3對損失函數(shù)改進前后效果進行了可視化??梢钥闯?對于樣本C,雖然屬于B類別,但其具有A類別部分特征,若采用原始損失函數(shù),則它在空間中的位置會靠近兩類別分界線,從而難以分類;而在圖3(b)中,采用了改進后的損失函數(shù)后,擴大了A類與B類的間距,這使得樣本C雖具有A類部分特征,但由于與B類的距離未變化,從而遠離了A類,使模型更加容易區(qū)分。
圖3 改進前后的損失函數(shù)對比Fig.3 Comparison of loss functions before and after improvement
研究用的實驗圖片統(tǒng)一輸入尺寸為224×224,并在輸入過程中加入水平翻轉(zhuǎn)、小角度旋轉(zhuǎn)來擴充訓練集,模型使用Adam優(yōu)化器,初始學習率設定為0.001,學習率衰減值設定為0.000 01,批量大小設定為32,迭代次數(shù)為200次。
研究采取的硬件平臺為Intel I9-9900K、Nvidia RTX2080TI、32 GB內(nèi)存。軟件平臺為Windows 10 64 bit操作系統(tǒng)、Tensorflow-GPU 1.13.0、CUDA Toolkit 10、CUDNN 7.6。
P-R曲線(Precision-Recall Curve)反映了模型的查準性與查全性。精準率是指實際為真的樣本占預測為真的比例,召回率是指預測為真的樣本占所有真樣本的比例。通常來說,曲線越靠上代表模型性能越好,利用sResNet模型及改進損失函數(shù)繪制出的P-R曲線如圖4所示。
圖4 sResNet模型的P-R曲線Fig.4 P-R curve of the sResNet model
為體現(xiàn)模型及算法先進性,實驗設置了sResNet+改進Loss、sResNet+原Loss、ResNet50+改進Loss和ResNet50+原Loss 4組對比實驗,并采用精準率(Precision)、召回率(Recall)、F1值3個指標來評價模型的優(yōu)劣性。3種指標計算方法如下:
(8)
(9)
(10)
其中,TP代表真陽性樣本,FP代表假陽性樣本,FN代表假陰性樣本,精準率和召回率的值越接近于1則代表本文模型的性能越好。
由于精準率與召回率是一對相互矛盾的衡量,且都有各自的局限性,單一使用其中一個來評價模型的優(yōu)劣并不合理,綜合考慮兩者才能客觀的對模型進行評價,因此引入了F1值評價指標。從式(10)可以看出,F1值綜合考慮了精準率與召回率,同樣,該值越大則代表本文模型性能越好。
表2列出了4種不同模型的對比結(jié)果。由表2可以看出,使用原損失函數(shù)的sResNet與ResNet50模型的精準率與召回率相差不大,兩者的F1值也很接近,說明相比較ResNet50模型,sResNet模型在網(wǎng)絡更加輕量化的同時,并未損失精度。在采用了改進損失函數(shù)后,sResNet與ResNet50模型的網(wǎng)絡性能均有所提升。說明在使用了改進損失函數(shù)后,網(wǎng)絡在訓練時不僅會考慮正負樣本之間的差異,也會考慮不同樣本之間的差異,并在不斷的迭代中,通過原損失函數(shù)來減小類內(nèi)距離、通過加入的類間相似懲罰項來擴大類間距離,使得模型具有更好的精準率與召回率,從而提高模型性能。這也說明使用原損失函數(shù)訓練時,會導致一些具有相似特征的蘋果病害由于類間距離過小而被錯誤識別。
表2 4組對比實驗在蘋果病害上的性能對比 Table 2 Performance comparison of four groups ofcomparative experiments on apple diseases %
實驗采用文獻[3]中的4種方法與本文方法對蘋果斑點病和腐爛病進行分類,結(jié)果如表3所示。從表3可以看出,在蘋果斑點病識別上,相較于文獻[3]中的4種方法,本文方法對蘋果斑點病的分類準確率更高;在蘋果腐爛病識別上,雖然本文方法與文獻[3]中的4種方法對其分類準確率相接近,但手動提取特征對不同果害需要重新提取,不具有廣泛適用性。因此,說明了本文方法對蘋果病害分類更有優(yōu)勢。
表3 本文方法與其他方法的分類效果對比Table 3 Comparison of the classification effect between theproposed method and other methods %
表4列出了文獻[6]中的高光譜圖像法與本文方法對蘋果病害的分類效果。由此可知,相對于高光譜圖像法在蘋果病害上的分類效果,雖然本文方法沒有明顯優(yōu)勢,但是高光譜儀器成本昂貴,大規(guī)模推廣不現(xiàn)實,難以實際使用。
表4 本文方法與高光譜圖像法的分類效果對比Table 4 Comparison of classification effect between theproposed method and hyperspectral image method %
通過以上對比可以看出,本文方法能夠有效提升果害分類準確率,且相比手工特征提取及高光譜儀具有一定優(yōu)越性。
針對傳統(tǒng)殘差網(wǎng)絡和損失函數(shù)在果害分類問題上的不足,本文提出一種基于改進殘差網(wǎng)絡sResNet及損失函數(shù)的果害分類方法。該方法通過降低卷積層數(shù)與卷積核數(shù)來精簡網(wǎng)絡參數(shù),再利用類間相似懲罰項使得模型能在訓練中盡可能增大不同類之間距離。實驗結(jié)果表明,相比較ResNet50,sResNet在不損失精度的情況下減小了模型計算量,而改進損失函數(shù)能提高病害識別準確率,證明了該方法的有效性。但本文方法對樣本的數(shù)量以及質(zhì)量要求均較高,針對一些樣本數(shù)量較少的病害,如何提高識別效果是下一步的研究方向。