萬家樂,李俊麗
(昆明理工大學 信息與自動化學院,云南 昆明 650206)
目前,我國在玫瑰花種植、產品加工等方面已經積累了非常成熟的技術。但在玫瑰培育過程中,由于受到生態環境及其他一些因素的影響,玫瑰作物容易出現各類病害,其中以黑星病、白粉病、銹病為主。在國內,玫瑰花病蟲害的鑒別方式與途徑基本依靠花卉養殖專家和農業部門的判別。近年來,隨著病蟲害專家知識庫的不斷完善,種植戶可以上網搜尋相關資料,得到一些防治建議。
文獻[1]利用支持向量機方法對葡萄葉片病害進行檢測和分類,首先利用K-means聚類分割找到病變區域,其次提取顏色和紋理特征,最后利用分類技術檢測葉病的類型,準確率達88.89%。文獻[2]建立一種鑒定茶樹病害的方法,分析圖像提取有效特征,利用支持向量機(Support Vector Machine,SVM)進行識別,尋找到最適合疾病的匹配特征,識別出疾病,準確率達到90%。文獻[3]以番茄葉片為實驗對象,采用深度學習提取葉片表面病害特征,選擇以ResNet50模型作為主干網絡,將網絡的激活函數(ReLu)替換為Leaky-ReLu激活函數來實現對葉片病害的識別,訓練準確率達到98.3%。余小東等人[4]提出一種基于殘差網絡(ResNet)的CDCNNv2算法,保留ResNet50模型的卷積層權重,實現農作物病蟲害嚴重程度等級的劃分,訓練時間長,且魯棒性較差。
通過對以上方法的研究和分析,本文提出一種改進破壞與重建學習方法的葉部病蟲害檢測器,將有效通道注意力機制(Effective Channel Attention,ECA)模塊嵌入到RepVGG[5]輕量型網絡中,并將改進后的RepVGG網絡作為模型的主干網絡,得到一個新的玫瑰葉部病蟲害圖像分類模型ER-DCL,在加快網絡收斂速度的同時,提升模型的分類準確率。模型的算法流程如圖1所示。

圖1 ER-DCL算法流程圖
傳統的細粒度分類方法通常依賴大量的人工標記信息來實現細粒度圖像分類。解決上述問題的一種思路是,在細粒度圖像中同時利用局部信息和全局信息。現有的細粒度圖像分類方法可以根據細粒度圖像所使用的局部信息分為3類:
(1)基于強監督的細粒度圖像分類模型,依賴于手動注釋信息,如邊界框方法[6];
(2)基于弱監督的細粒度圖像分類模型,依賴類別標簽(Labels)[7];
(3)多屬性細粒度圖像分類,即使用多屬性文本信息又使用類別標簽來實現,其復雜性介于方法(1)和(2)[8-9]。考慮到病蟲害數據集的問題,基于弱監督的細粒度分類是發展趨勢。當涉及到葉片病蟲害的多個屬性識別時,多屬性細粒度圖像分類要比其他兩種方式更加準確和有效,能夠極大地減少人力的浪費。
在細粒度圖像分類過程中,圖像的局部信息比全局信息更重要。這是因為,在一般情況下,不同細粒度類別可以具有相同的全局結構,并且只在特定的局部細節上有所不同。“破壞學習”是將輸入的原始圖像數據分割為較多的小區域,然后通過區域混淆機制(Region Confusion Mechanism,RCM)將其隨機洗牌,目的是使模型更容易找到判別區域和學習判別特征。通過引入對抗性損失來抑制破壞學習產生的噪聲,避免對網絡學習產生影響。
假設初始圖象為I,破壞圖像為φ(I),其對應的多個標簽為 ?(細粒度類別)。這3個部分被組合成(I,φ(I), ?)來訓練模型。所以,分類網絡將輸入圖像映射到概率分布向量為C(I,φcls),其中φcls表示分類網絡中的所有可學習參數。因此,分類網絡的損失函數為:

式中:τ是圖像訓練集的集合。由于全局結構被破壞,為了識別這些隨機打亂的圖像,分類網絡必須尋找有區別的區域,然后學習類之間的細微差異。
1.1.1 RepVGG分類網絡
考慮到本文對病蟲害的識別需要在速度與精度之間達到較好的平衡,因此使用RepVGG作為模型的主干網絡。RepVGG網絡架構如圖2所示。
圖2中,A表示原始的ResNet網絡,該網絡包含Conv1*1的殘差結構和Identity的殘差結構,這些殘差結構解決了深度網絡中的梯度消失問題,使得網絡更加利于收斂。

圖2 RepVGG網絡架構
B表示RepVGG網絡的訓練階段。RepVGG和ResNet兩個網絡在訓練階段主要有以下差異。
(1)RepVGG網絡在訓練時,網絡中的殘差塊并沒有跨層。
(2)整個網絡包含2種殘差結構,一種為殘差結構僅包含Conv1*1殘差分支,另一種不僅包含Conv1*1殘差結構,而且包含Identity殘差結構。這樣的網絡結構中的殘差結構具有多個分支,給網絡增加了多條梯度流動的路徑。因此,訓練一個這樣的網絡,類似于訓練了多個網絡,并將多個網絡融合在一個網絡中。
(3)模型的初始階段使用了簡單的殘差結構,隨著模型的加深,使用了復雜的殘差結構,這樣不僅能夠在網絡的深層獲得更魯棒的特征表示,而且可以更好地處理網絡深層的梯度消失問題。
C表示的是推理階段的RepVGG網絡,采用結構重參數化方式,將1×1卷積和Identity分支轉變為簡單的3×3卷積和ReLU激活函數堆疊的方式,易于模型的推理和加速。
采用RepVGG作為模型的主干網絡的主要優勢包括:
(1)Conv3×3卷積結構在GPU中運行速度快;
(2)推理階段將模型轉為單分支結構,能更好地提升內存利用率,從而提升模型的推理速度。
1.1.2 有效通道注意力機制(ECA)
有學者提出了SE-ResNet[10]網絡,其核心思想是使深度學習網絡能夠學習通道間的依賴關系,并且該網絡證明了將注意力機制與殘差神經網絡相結合,可以在分類上取得很好的效果。但是通過對SE-Net結構的分析發現,采用先激發部分兩層數量不相同的全連接層,先降維再升維,最后經過Sigmoid激活后得到每個通道的權值,與原始特征圖相乘后作為下一層網絡的輸入的方法有一定的局限性。通過全連接層降維來降低模型的復雜性,破壞了權值和通道之間的直接聯系,這樣就導致了網絡在特定數據下的效果很好,但通用性較差,并且額外增加了大量的參數,影響模型的速度。王[11]等人經過對殘差網絡的研究認為,避免降維對于學習通道注意力很重要,適當的跨通道交互不僅可以保持性能,還能顯著降低模型的復雜度。
因此,本文將一種沒有降維的局部跨通道交互策略的ECA模塊嵌入RepVGG輕型網絡結構中,如圖3所示。

圖3 引入ECA模塊的RepVGG
通過內核大小為k的快速一維卷積來捕獲跨通道交互信息,并且生成權重通道,通過這種方式避免降維后帶來的預測精度的降低。k是由輸入特征圖通道維數自適應選得,具體公式為:

式中:C為輸入特征圖通道數,|t|Odd表示最鄰近t的奇數,b和γ為經驗參數,在本文中,經過多次試驗,設定b=2,γ=1。顯然,通過映射函數ψ,高維通道具有更大范圍的相互作用,而低維通道使用非線性映射進行更短范圍的相互作用。通道內的輸入ECA模塊的輸出可以表示為:

式中:GAP為全局平均池化,σ為sigmoid激活函數。
試驗表明,使用RCM機制破壞后的圖像,不能總是為細粒度分類帶來有用信息。混淆局部區域時,RCM會造成一種獨特的噪聲視覺模式。在這種模式下,學習特征對分類任務有負面影響。為解決這一問題,破壞與重建學習從生成性對抗網絡的思想出發,提出了對抗性損失Ladv來防止過擬合RCM引起的噪聲模式進入特征空間。

式中:I為原始圖像,φ(I)為破壞后的圖像,給每張圖片貼上標簽向量d∈{0,1}2,表示圖像是否被破壞過。如果Ladv達到最小,就達到了去除特征域中噪聲視覺模式的目的。Lcls和Ladv共同促進破壞學習,增強了具有判別性的局部細節,并且過濾掉不相關的特征。
考慮到病蟲害識別與鳥類圖像識別[12]具有相似的局部相關性,選擇使用相同的區域構建損失和區域對齊網絡,測量圖像中不同區域的位置精度,并通過端到端的訓練引導分類網絡對區域間的語義關聯進行建模。如式(5)所示,Mσ(i,j)[φ(I)]在I中預測區域為Rσ(i,j),Mi,j(I,i,j)在I中預測區域為R(i,j)。而這兩個預測Mσ(i,j)[φ(I)]和Mi,j(I,i,j)的真實結果都是(i,j)。所以,計算出的區域對齊損失Lloc表達式為:

在改進的DCL框架中,分類損失、對抗性損失及區域對齊損失以端到端的方式進行訓練,網絡可以利用精細的局部細節和良好的建模對象相關性進行細粒度識別。破壞學習主要有助于區分有效性區域的學習,重建學習有助于根據區域之間的語義相關性重新排列學習的局部細節。因此,ER-DCL能夠基于從區分區域提取的結構中良好的細節特征生成多樣而復雜的視覺表示。改進后的ER-DCL模型的損失函數L由三部分組成。

經過多次試驗,本文設置α=β=1,對于非剛性物體識別任務,不同區域之間的相關性對于目標的深入理解非常重要,因此設置γ=1。
2.1.1 試驗數據集
本文試驗采用由“AI Challenger 2018”提供的農作物病蟲害公開數據集中3種病蟲害類別共5 383幅圖像,并且將從云南省昆明市斗南花卉交易市場采集的1 086張玫瑰葉部病蟲害圖像作為獨立的測試數據集。
2.1.2 圖像預處理
細粒度病蟲害的識別與拍攝環境有很大的關系,如光照、角度等,圖像的質量對識別精度的影響非常大。為了使模型具有更好的泛化能力,采用Open CV視覺庫,對圖像進行隨機旋轉(30°、60°)、鏡面翻轉、隨機亮度增減等操作來實現對數據集的擴增,預處理方式為輸入圖像后進行隨機5種方式的數據增強,最后將圖像統一到512×512像素。
試驗平臺使用的操作系統為Ubuntu1804,處理器為Intel Xeon Gold 6248R @3.00 GHz,運行內存64 GB,配備NVIDIA Tesla V100 32GB GPU。使用Python3.7與Pytorch1.6.0,圖像預處理采用OpenCV 3.2.0視覺庫,同時使用cuda10.2與cudnn8.6.5深度神經網絡加速庫和Tensorboard可視化工具。
本試驗在PyCharm IDE上利用Python語言編寫。總批次epoch為200輪,每一輪訓練選取的樣本數量為32,初始學習率為0.001,使用Adam優化器,初始學習率為0.001,動量因子為0.9,學習率調整策略為每經過60個epoch學習率減少為之前的0.1倍,學習率最低為0.000 001,經多次測試得出,在迭代所有批次的前提下,將batch_size設置為32可以達到最高精度。
試驗結果如表1所示,提出的ER-DCL方法比其他細粒度圖像分類方法更適合于病蟲害識別。在相同參數設置下,采用改進后的RepVGG網絡進行特征提取時,本模型在獨立測試集的準確率高 達96.74%。
從表1可以看出,在相同的試驗條件下,本文以ECA-RepVGG作為特征提取網絡時,在測試集上的分類準確率達到96.74%,相較于RepVGG,準確率提高了近4.64%,這說明本文模型的特征提取能力優于試驗中的其他網絡。盡管本文模型的收斂時間不是最優的,但是在提升準確率的同時,收斂時間并沒有增加很多。

表1 病蟲害圖像分類對比試驗結果
為了測試所提出的改進后的RepVGG分類網絡的確切效果,在選取的公開數據集上進行了分類網絡測試試驗,分類網絡對比試驗結果如表2所示。

表2 分類網絡對比試驗結果
從表2可以看出,在相同的試驗條件下,本文以ECA-RepVGG作為分類網絡時,引入ECA模塊后的RepVGG網絡能夠更好地適用于破壞與重建方法。
本文提出了一種將ECA模塊嵌入RepVGG輕量型網絡并作為破壞與重建的主干網絡的細粒度分類方法,應用于病蟲害圖像識別。ECA機制通過局部跨通道交互可以對不同通道的特征圖根據其分類特征的重要程度賦予一定的權重,使網絡能夠更進一步提取到類別可區分性更明顯的特征。DCL中的破壞學習提高了識別的難度,引導網絡學習病蟲害專家知識進行細粒度識別,而重構學習可以建立對象各部分之間的語義關聯,并且不需要任何的監督方式,可以在一個階段內進行端到端的訓練。試驗結果表明,該方法在自建數據集的效果高于其他細粒度分類方法,并且本方法具有較低的計算成本。因此,本文提出的ER-DCL是一種有效的細粒度分類方法,在實際應用和科學研究中都具有進一步的研究價值,能夠在病蟲害識別方面成為一個能夠完成部署預警和預防的工具。