萬家樂,李俊麗
(昆明理工大學(xué) 信息與自動化學(xué)院,云南 昆明 650206)
目前,我國在玫瑰花種植、產(chǎn)品加工等方面已經(jīng)積累了非常成熟的技術(shù)。但在玫瑰培育過程中,由于受到生態(tài)環(huán)境及其他一些因素的影響,玫瑰作物容易出現(xiàn)各類病害,其中以黑星病、白粉病、銹病為主。在國內(nèi),玫瑰花病蟲害的鑒別方式與途徑基本依靠花卉養(yǎng)殖專家和農(nóng)業(yè)部門的判別。近年來,隨著病蟲害專家知識庫的不斷完善,種植戶可以上網(wǎng)搜尋相關(guān)資料,得到一些防治建議。
文獻[1]利用支持向量機方法對葡萄葉片病害進行檢測和分類,首先利用K-means聚類分割找到病變區(qū)域,其次提取顏色和紋理特征,最后利用分類技術(shù)檢測葉病的類型,準確率達88.89%。文獻[2]建立一種鑒定茶樹病害的方法,分析圖像提取有效特征,利用支持向量機(Support Vector Machine,SVM)進行識別,尋找到最適合疾病的匹配特征,識別出疾病,準確率達到90%。文獻[3]以番茄葉片為實驗對象,采用深度學(xué)習(xí)提取葉片表面病害特征,選擇以ResNet50模型作為主干網(wǎng)絡(luò),將網(wǎng)絡(luò)的激活函數(shù)(ReLu)替換為Leaky-ReLu激活函數(shù)來實現(xiàn)對葉片病害的識別,訓(xùn)練準確率達到98.3%。余小東等人[4]提出一種基于殘差網(wǎng)絡(luò)(ResNet)的CDCNNv2算法,保留ResNet50模型的卷積層權(quán)重,實現(xiàn)農(nóng)作物病蟲害嚴重程度等級的劃分,訓(xùn)練時間長,且魯棒性較差。
通過對以上方法的研究和分析,本文提出一種改進破壞與重建學(xué)習(xí)方法的葉部病蟲害檢測器,將有效通道注意力機制(Effective Channel Attention,ECA)模塊嵌入到RepVGG[5]輕量型網(wǎng)絡(luò)中,并將改進后的RepVGG網(wǎng)絡(luò)作為模型的主干網(wǎng)絡(luò),得到一個新的玫瑰葉部病蟲害圖像分類模型ER-DCL,在加快網(wǎng)絡(luò)收斂速度的同時,提升模型的分類準確率。模型的算法流程如圖1所示。
圖1 ER-DCL算法流程圖
傳統(tǒng)的細粒度分類方法通常依賴大量的人工標(biāo)記信息來實現(xiàn)細粒度圖像分類。解決上述問題的一種思路是,在細粒度圖像中同時利用局部信息和全局信息。現(xiàn)有的細粒度圖像分類方法可以根據(jù)細粒度圖像所使用的局部信息分為3類:
(1)基于強監(jiān)督的細粒度圖像分類模型,依賴于手動注釋信息,如邊界框方法[6];
(2)基于弱監(jiān)督的細粒度圖像分類模型,依賴類別標(biāo)簽(Labels)[7];
(3)多屬性細粒度圖像分類,即使用多屬性文本信息又使用類別標(biāo)簽來實現(xiàn),其復(fù)雜性介于方法(1)和(2)[8-9]??紤]到病蟲害數(shù)據(jù)集的問題,基于弱監(jiān)督的細粒度分類是發(fā)展趨勢。當(dāng)涉及到葉片病蟲害的多個屬性識別時,多屬性細粒度圖像分類要比其他兩種方式更加準確和有效,能夠極大地減少人力的浪費。
在細粒度圖像分類過程中,圖像的局部信息比全局信息更重要。這是因為,在一般情況下,不同細粒度類別可以具有相同的全局結(jié)構(gòu),并且只在特定的局部細節(jié)上有所不同?!捌茐膶W(xué)習(xí)”是將輸入的原始圖像數(shù)據(jù)分割為較多的小區(qū)域,然后通過區(qū)域混淆機制(Region Confusion Mechanism,RCM)將其隨機洗牌,目的是使模型更容易找到判別區(qū)域和學(xué)習(xí)判別特征。通過引入對抗性損失來抑制破壞學(xué)習(xí)產(chǎn)生的噪聲,避免對網(wǎng)絡(luò)學(xué)習(xí)產(chǎn)生影響。
假設(shè)初始圖象為I,破壞圖像為φ(I),其對應(yīng)的多個標(biāo)簽為 ?(細粒度類別)。這3個部分被組合成(I,φ(I), ?)來訓(xùn)練模型。所以,分類網(wǎng)絡(luò)將輸入圖像映射到概率分布向量為C(I,φcls),其中φcls表示分類網(wǎng)絡(luò)中的所有可學(xué)習(xí)參數(shù)。因此,分類網(wǎng)絡(luò)的損失函數(shù)為:
式中:τ是圖像訓(xùn)練集的集合。由于全局結(jié)構(gòu)被破壞,為了識別這些隨機打亂的圖像,分類網(wǎng)絡(luò)必須尋找有區(qū)別的區(qū)域,然后學(xué)習(xí)類之間的細微差異。
1.1.1 RepVGG分類網(wǎng)絡(luò)
考慮到本文對病蟲害的識別需要在速度與精度之間達到較好的平衡,因此使用RepVGG作為模型的主干網(wǎng)絡(luò)。RepVGG網(wǎng)絡(luò)架構(gòu)如圖2所示。
圖2中,A表示原始的ResNet網(wǎng)絡(luò),該網(wǎng)絡(luò)包含Conv1*1的殘差結(jié)構(gòu)和Identity的殘差結(jié)構(gòu),這些殘差結(jié)構(gòu)解決了深度網(wǎng)絡(luò)中的梯度消失問題,使得網(wǎng)絡(luò)更加利于收斂。
圖2 RepVGG網(wǎng)絡(luò)架構(gòu)
B表示RepVGG網(wǎng)絡(luò)的訓(xùn)練階段。RepVGG和ResNet兩個網(wǎng)絡(luò)在訓(xùn)練階段主要有以下差異。
(1)RepVGG網(wǎng)絡(luò)在訓(xùn)練時,網(wǎng)絡(luò)中的殘差塊并沒有跨層。
(2)整個網(wǎng)絡(luò)包含2種殘差結(jié)構(gòu),一種為殘差結(jié)構(gòu)僅包含Conv1*1殘差分支,另一種不僅包含Conv1*1殘差結(jié)構(gòu),而且包含Identity殘差結(jié)構(gòu)。這樣的網(wǎng)絡(luò)結(jié)構(gòu)中的殘差結(jié)構(gòu)具有多個分支,給網(wǎng)絡(luò)增加了多條梯度流動的路徑。因此,訓(xùn)練一個這樣的網(wǎng)絡(luò),類似于訓(xùn)練了多個網(wǎng)絡(luò),并將多個網(wǎng)絡(luò)融合在一個網(wǎng)絡(luò)中。
(3)模型的初始階段使用了簡單的殘差結(jié)構(gòu),隨著模型的加深,使用了復(fù)雜的殘差結(jié)構(gòu),這樣不僅能夠在網(wǎng)絡(luò)的深層獲得更魯棒的特征表示,而且可以更好地處理網(wǎng)絡(luò)深層的梯度消失問題。
C表示的是推理階段的RepVGG網(wǎng)絡(luò),采用結(jié)構(gòu)重參數(shù)化方式,將1×1卷積和Identity分支轉(zhuǎn)變?yōu)楹唵蔚?×3卷積和ReLU激活函數(shù)堆疊的方式,易于模型的推理和加速。
采用RepVGG作為模型的主干網(wǎng)絡(luò)的主要優(yōu)勢包括:
(1)Conv3×3卷積結(jié)構(gòu)在GPU中運行速度快;
(2)推理階段將模型轉(zhuǎn)為單分支結(jié)構(gòu),能更好地提升內(nèi)存利用率,從而提升模型的推理速度。
1.1.2 有效通道注意力機制(ECA)
有學(xué)者提出了SE-ResNet[10]網(wǎng)絡(luò),其核心思想是使深度學(xué)習(xí)網(wǎng)絡(luò)能夠?qū)W習(xí)通道間的依賴關(guān)系,并且該網(wǎng)絡(luò)證明了將注意力機制與殘差神經(jīng)網(wǎng)絡(luò)相結(jié)合,可以在分類上取得很好的效果。但是通過對SE-Net結(jié)構(gòu)的分析發(fā)現(xiàn),采用先激發(fā)部分兩層數(shù)量不相同的全連接層,先降維再升維,最后經(jīng)過Sigmoid激活后得到每個通道的權(quán)值,與原始特征圖相乘后作為下一層網(wǎng)絡(luò)的輸入的方法有一定的局限性。通過全連接層降維來降低模型的復(fù)雜性,破壞了權(quán)值和通道之間的直接聯(lián)系,這樣就導(dǎo)致了網(wǎng)絡(luò)在特定數(shù)據(jù)下的效果很好,但通用性較差,并且額外增加了大量的參數(shù),影響模型的速度。王[11]等人經(jīng)過對殘差網(wǎng)絡(luò)的研究認為,避免降維對于學(xué)習(xí)通道注意力很重要,適當(dāng)?shù)目缤ǖ澜换ゲ粌H可以保持性能,還能顯著降低模型的復(fù)雜度。
因此,本文將一種沒有降維的局部跨通道交互策略的ECA模塊嵌入RepVGG輕型網(wǎng)絡(luò)結(jié)構(gòu)中,如圖3所示。
圖3 引入ECA模塊的RepVGG
通過內(nèi)核大小為k的快速一維卷積來捕獲跨通道交互信息,并且生成權(quán)重通道,通過這種方式避免降維后帶來的預(yù)測精度的降低。k是由輸入特征圖通道維數(shù)自適應(yīng)選得,具體公式為:
式中:C為輸入特征圖通道數(shù),|t|Odd表示最鄰近t的奇數(shù),b和γ為經(jīng)驗參數(shù),在本文中,經(jīng)過多次試驗,設(shè)定b=2,γ=1。顯然,通過映射函數(shù)ψ,高維通道具有更大范圍的相互作用,而低維通道使用非線性映射進行更短范圍的相互作用。通道內(nèi)的輸入ECA模塊的輸出可以表示為:
式中:GAP為全局平均池化,σ為sigmoid激活函數(shù)。
試驗表明,使用RCM機制破壞后的圖像,不能總是為細粒度分類帶來有用信息。混淆局部區(qū)域時,RCM會造成一種獨特的噪聲視覺模式。在這種模式下,學(xué)習(xí)特征對分類任務(wù)有負面影響。為解決這一問題,破壞與重建學(xué)習(xí)從生成性對抗網(wǎng)絡(luò)的思想出發(fā),提出了對抗性損失Ladv來防止過擬合RCM引起的噪聲模式進入特征空間。
式中:I為原始圖像,φ(I)為破壞后的圖像,給每張圖片貼上標(biāo)簽向量d∈{0,1}2,表示圖像是否被破壞過。如果Ladv達到最小,就達到了去除特征域中噪聲視覺模式的目的。Lcls和Ladv共同促進破壞學(xué)習(xí),增強了具有判別性的局部細節(jié),并且過濾掉不相關(guān)的特征。
考慮到病蟲害識別與鳥類圖像識別[12]具有相似的局部相關(guān)性,選擇使用相同的區(qū)域構(gòu)建損失和區(qū)域?qū)R網(wǎng)絡(luò),測量圖像中不同區(qū)域的位置精度,并通過端到端的訓(xùn)練引導(dǎo)分類網(wǎng)絡(luò)對區(qū)域間的語義關(guān)聯(lián)進行建模。如式(5)所示,Mσ(i,j)[φ(I)]在I中預(yù)測區(qū)域為Rσ(i,j),Mi,j(I,i,j)在I中預(yù)測區(qū)域為R(i,j)。而這兩個預(yù)測Mσ(i,j)[φ(I)]和Mi,j(I,i,j)的真實結(jié)果都是(i,j)。所以,計算出的區(qū)域?qū)R損失Lloc表達式為:
在改進的DCL框架中,分類損失、對抗性損失及區(qū)域?qū)R損失以端到端的方式進行訓(xùn)練,網(wǎng)絡(luò)可以利用精細的局部細節(jié)和良好的建模對象相關(guān)性進行細粒度識別。破壞學(xué)習(xí)主要有助于區(qū)分有效性區(qū)域的學(xué)習(xí),重建學(xué)習(xí)有助于根據(jù)區(qū)域之間的語義相關(guān)性重新排列學(xué)習(xí)的局部細節(jié)。因此,ER-DCL能夠基于從區(qū)分區(qū)域提取的結(jié)構(gòu)中良好的細節(jié)特征生成多樣而復(fù)雜的視覺表示。改進后的ER-DCL模型的損失函數(shù)L由三部分組成。
經(jīng)過多次試驗,本文設(shè)置α=β=1,對于非剛性物體識別任務(wù),不同區(qū)域之間的相關(guān)性對于目標(biāo)的深入理解非常重要,因此設(shè)置γ=1。
2.1.1 試驗數(shù)據(jù)集
本文試驗采用由“AI Challenger 2018”提供的農(nóng)作物病蟲害公開數(shù)據(jù)集中3種病蟲害類別共5 383幅圖像,并且將從云南省昆明市斗南花卉交易市場采集的1 086張玫瑰葉部病蟲害圖像作為獨立的測試數(shù)據(jù)集。
2.1.2 圖像預(yù)處理
細粒度病蟲害的識別與拍攝環(huán)境有很大的關(guān)系,如光照、角度等,圖像的質(zhì)量對識別精度的影響非常大。為了使模型具有更好的泛化能力,采用Open CV視覺庫,對圖像進行隨機旋轉(zhuǎn)(30°、60°)、鏡面翻轉(zhuǎn)、隨機亮度增減等操作來實現(xiàn)對數(shù)據(jù)集的擴增,預(yù)處理方式為輸入圖像后進行隨機5種方式的數(shù)據(jù)增強,最后將圖像統(tǒng)一到512×512像素。
試驗平臺使用的操作系統(tǒng)為Ubuntu1804,處理器為Intel Xeon Gold 6248R @3.00 GHz,運行內(nèi)存64 GB,配備NVIDIA Tesla V100 32GB GPU。使用Python3.7與Pytorch1.6.0,圖像預(yù)處理采用OpenCV 3.2.0視覺庫,同時使用cuda10.2與cudnn8.6.5深度神經(jīng)網(wǎng)絡(luò)加速庫和Tensorboard可視化工具。
本試驗在PyCharm IDE上利用Python語言編寫??偱蝒poch為200輪,每一輪訓(xùn)練選取的樣本數(shù)量為32,初始學(xué)習(xí)率為0.001,使用Adam優(yōu)化器,初始學(xué)習(xí)率為0.001,動量因子為0.9,學(xué)習(xí)率調(diào)整策略為每經(jīng)過60個epoch學(xué)習(xí)率減少為之前的0.1倍,學(xué)習(xí)率最低為0.000 001,經(jīng)多次測試得出,在迭代所有批次的前提下,將batch_size設(shè)置為32可以達到最高精度。
試驗結(jié)果如表1所示,提出的ER-DCL方法比其他細粒度圖像分類方法更適合于病蟲害識別。在相同參數(shù)設(shè)置下,采用改進后的RepVGG網(wǎng)絡(luò)進行特征提取時,本模型在獨立測試集的準確率高 達96.74%。
從表1可以看出,在相同的試驗條件下,本文以ECA-RepVGG作為特征提取網(wǎng)絡(luò)時,在測試集上的分類準確率達到96.74%,相較于RepVGG,準確率提高了近4.64%,這說明本文模型的特征提取能力優(yōu)于試驗中的其他網(wǎng)絡(luò)。盡管本文模型的收斂時間不是最優(yōu)的,但是在提升準確率的同時,收斂時間并沒有增加很多。
表1 病蟲害圖像分類對比試驗結(jié)果
為了測試所提出的改進后的RepVGG分類網(wǎng)絡(luò)的確切效果,在選取的公開數(shù)據(jù)集上進行了分類網(wǎng)絡(luò)測試試驗,分類網(wǎng)絡(luò)對比試驗結(jié)果如表2所示。
表2 分類網(wǎng)絡(luò)對比試驗結(jié)果
從表2可以看出,在相同的試驗條件下,本文以ECA-RepVGG作為分類網(wǎng)絡(luò)時,引入ECA模塊后的RepVGG網(wǎng)絡(luò)能夠更好地適用于破壞與重建方法。
本文提出了一種將ECA模塊嵌入RepVGG輕量型網(wǎng)絡(luò)并作為破壞與重建的主干網(wǎng)絡(luò)的細粒度分類方法,應(yīng)用于病蟲害圖像識別。ECA機制通過局部跨通道交互可以對不同通道的特征圖根據(jù)其分類特征的重要程度賦予一定的權(quán)重,使網(wǎng)絡(luò)能夠更進一步提取到類別可區(qū)分性更明顯的特征。DCL中的破壞學(xué)習(xí)提高了識別的難度,引導(dǎo)網(wǎng)絡(luò)學(xué)習(xí)病蟲害專家知識進行細粒度識別,而重構(gòu)學(xué)習(xí)可以建立對象各部分之間的語義關(guān)聯(lián),并且不需要任何的監(jiān)督方式,可以在一個階段內(nèi)進行端到端的訓(xùn)練。試驗結(jié)果表明,該方法在自建數(shù)據(jù)集的效果高于其他細粒度分類方法,并且本方法具有較低的計算成本。因此,本文提出的ER-DCL是一種有效的細粒度分類方法,在實際應(yīng)用和科學(xué)研究中都具有進一步的研究價值,能夠在病蟲害識別方面成為一個能夠完成部署預(yù)警和預(yù)防的工具。