葉 進, 邱文杰, 楊 娟, 易萬茂, 馬仲輝
(廣西大學a.計算機與電子信息學院;b.農學院,植物科學國家級實驗教學示范中心,南寧530000)
荔枝是廣西的主要經濟作物之一,目前廣西荔枝栽培面積240多萬畝,產量60多萬t,廣西荔枝生產規模僅次于廣東,位居全國第二。荔枝蟲害種類繁多,主要包括荔枝蝽、龍眼雞、蛀蒂蟲等。因此對荔枝蟲害的識別與防治工作至關重要。目前國內學者針對病蟲害圖像識別這一領域已經做了不少研究,例如,Cheng等[1]設計了一種利用深度殘差學習的害蟲識別方法,該方法在復雜農田背景下對于10類農作物害蟲圖像識別準確度達到98.67%。Rani等[2]使用基于聚類的圖像分割算法和SVM分類器,對蚜蟲等3種害蟲的識別準確度達到98.38%。Mishratffu[3]在大米的幾種常見害蟲上對幾種常見分類器做了對比,其中CNN的準確率最高,達到94.44%。Liu等[4]構建了一個基于BP神經網絡和K近鄰算法的多分類器,并用加權平均的方式融合成員分類器的輸出,達到了不錯的分類性能。現有的對蟲害識別的研究雖然已經達到了不錯的效果,但目前國內對與荔枝蟲害識別的研究還不夠深入,基于特征融合的荔枝蟲害識別技術還不成熟,針對復雜背景下的荔枝蟲害識別還存在特征選擇的隨機性和識別結果的不穩定性等問題。本文采用中值濾波對原圖像進行降噪處理,采用自適應閾值分割算法[5]進行病斑圖像的提取與分離,使樣本質量明顯提升。使用OpenCV提取病斑圖像的15個顏色特征值,2個輪廓特征值,使用灰度共生矩陣[6]提取經過數據清洗后的病斑圖像的15個紋理特征值。根據皮爾遜相關系數[7]挑選與識別結果線性關聯程度大的特征向量,剔除冗余特征,實現特征參數的優化組合。將重組后的特征向量輸入預先訓練好的神經網絡模型,經過多次迭代,實現了對荔枝蝽、卷葉蛾、龍眼雞3種荔枝主要蟲害的識別,并通過不斷模型超參數,進一步將識別精度提高到95%以上。
使用Canon單鏡頭高分辨率數碼相機(有效像素約2 230萬,使用佳能EF系列鏡頭)和網絡爬蟲進行圖片采集,拍攝圖片時間均勻覆蓋各個時段,同時保證在害蟲生長的不同時期連續拍攝。拍照時,蟲體體積在整張照片中所占體積比盡量不低于50%,拍攝角度采用俯拍,拍攝時間選擇在光線充足的白天。拍攝照片時,相機模式設置為手動對焦,并關閉閃光燈和白平衡。圖1展示了荔枝蝽不同生長發育期的形態。

圖1 荔枝蝽的各個生長發育期形態
在拍攝照片過程中由于相機自身或與外部噪聲干擾,往往會產生噪聲。為了將噪聲消除的同時保留蟲害圖像的細節、邊緣等特征,本文對比了4種常見濾波器,發現中值濾波器[8]對脈沖干擾的抑制效果最好,在抑制隨機噪聲的同時能有效保護邊緣少受模糊,同時過濾了蟲害圖像的大部分高斯噪聲、脈沖噪聲。4種濾波器的對比如圖2所示。
背景分割的目的是前景和背景互相分離[9]。目前圖像分割方法大體可分為4類,其中以基于聚類的方法最為常見。由于本試驗中的圖片大多拍攝自野外,背景具有相對復雜性,因此選用對微弱邊緣有良好反應的分水嶺算法[10]進行背景分割。圖3給出了圖像分割前后的對比圖。

圖3 圖像分割結果

圖24 種濾波器處理圖像的對比
特征選擇對模型性能的提升具有重要的作用,如何在提取到的32個顏色、紋理、輪廓特征值中選擇對分類結果影響最大的前n個特征值將直接影響到模型的預測性能。特征降維[11]不僅可以大幅降低神經網絡訓練所需時間,更能提高模型的泛化能力。在特征選擇之前,首先要對圖像進行特征提取。本文使用OpenCV提取了病害圖片的32個特征屬性,包括形態學特征、顏色特征和紋理特征[12],其中形態學特征包括面積、周長2個特征;顏色特征包括RGB平均值、峰值、標準差、方差和偏度等15個特征;紋理特征使用灰度共生矩陣提取,包括能量等15個特征。
采用Pearson積矩相關系數來衡量每一特征值對分類結果的影響程度大小[13]。系數越大代表對分類結果的影響程度越大;反之亦然,系數為0代表該特征值對于分類結果沒有影響。通過計算各個特征值的Pearson系數,按照相關性從高到低進行特征屬性的排序。公式(1)給出了任意2個特征值之間的積矩相關系數的計算方法:

實驗過程中,首先留出20%的樣本作為神經網絡的驗證集,作為神經網絡訓練過程中沒有遇到過的新樣本,測試模型的泛化能力[14]。另外,分別隨機抽取剩余數據集中80%的樣本作為訓練集和20%樣本作為測試集,測試集和訓練集用于模型的訓練過程。初次進行訓練時,根據輸入特征向量維度確定構建輸入層節點個數為26,隱藏層節點個數為10,輸出層節點個數為3的誤差反向傳播神經網絡。輸入層的26個神經元分別代表一種特征屬性。輸出層的3個神經元分別表示荔枝蝽、卷葉蛾、龍眼雞3種害蟲,選取輸出概率最高的神經元作為識別結果,并將輸出值作為判斷置信度。初始學習率設置為0.01,設置批處理大小為256,迭代次數500次。圖4給出了神經網絡結構圖。

圖4 神經網絡結構圖
圖中:Xi(i=1,2,…,i,i=26)代表26個顏色、紋理、顏色特征值中的某個特征屬性代表輸入層第i個節點和隱藏層第j個節點之間的權重,初始權重為(-1,1)區間上的隨機值表示隱藏層第j個節點和輸出層第k個節點之間的權重,初始權重同為(-1,1)區間上的隨機值;Oj,m(m=1,2,…,10)代表隱藏層第m個節點的輸出;Ok,n(n=1,2,3)代表輸出層第n個節點的輸出;f(Σ)表示將該節點的輸入求和后經過激活函數輸出。本文采用在(0,1)區間內平滑取值的非線性函數Sigmoid[15]作為激活函數,

表2 神經網絡學習率對比

輸出層使用Softmax[16]作為激活函數,

通過復合函數求導的鏈式法則[17],利用梯度下降原理得出輸出層和隱藏層誤差反向傳播算法的誤差梯度,根據誤差梯度即可找出誤差下降最快的方向。通過這種方式,使得不同神經元之間的權重快速、正確地更新。同理可以得出隱藏層和輸入層之間的誤差梯度,給出了如何根據誤差梯度進行下一步權值更新的計算:

為了探究全連接神經網絡層數和學習率對模型性能的影響,在其他超參數不變的情況下,依次調整神經網絡結構和學習率的大小,提升模型預測性能。
用來評估模型泛化能力的性能指標有很多種[18],由于本文為三分類問題,所以選擇查準率、查全率、準確率、錯誤率作為模型的性能度量。設神經網絡的分類結果中,真正例(true positive)的個數為TP,真反例(true negative)的個數為TN,假正例(false positive)的個數為FP,假反例(false negative)的個數為FN。
查準率(Precision):反映模型輸出結果中真實正例占全部正例的比例

查全率(Recall):反映模型輸出結果中有多少正樣本被準確預測

精確度(Accuracy):設樣本預測結果為yi,正確結果為y^,樣本數量為n

錯誤率(Error):分類錯誤的樣本占樣本總數的比例

表1 列出了BP神經網絡在測試集中的不同測試指標,并將不同網絡結構的神經網絡進行橫向對比。結果表明,擁有2個隱藏層,每個隱藏層20個節點的神經網絡準確度最高,達到92.74%。在確定神經網絡結構后,本文通過調整學習率的大小進一步優化神經網絡。

表1 神經網絡結構對比
實驗結果表明,神經網絡在不同學習率下的表現略有不同。由于本試驗在神經網絡的訓練過程中采用500次迭代,導致低學習率下的模型難以收斂。綜上所述,輸入神經元個數為26,隱藏層節點個數為10,層數為2,輸出層節點個數為3的神經網絡,在學習率為0.5下的表現最優,識別準確率達到95.35%。
本文針對自然條件下的荔枝蟲害識別問題,提出了一種多模態特征的識別方法。通過提取蟲害的形態學、紋理、顏色等32種特征信息,通過特征降維的方法,進一步提高分類的準確度。本方法的各項指標相較于傳統分類器均有了明顯提升,對荔枝蝽、卷葉蛾、龍眼雞3種常見蟲害的總體識別率為95.35%,基本達到了實用化水平。
同時,本方法具有拓展性,僅需稍作調整,即可推廣到其他作物的病害識別任務中。本方法填補了目前蟲害識別領域尚未形成一種統一的特征提取方法的空白,為荔枝的蟲害識別提供了新的思路。