冀常鵬,陳浩楠,代 巍
(遼寧工程技術大學a.電子與信息工程學院,b.研究生院,遼寧 葫蘆島125105)
傳統(tǒng)的農(nóng)作物病害識別主要依賴于農(nóng)民長期積累的經(jīng)驗,由于病害癥狀復雜多變,往往對于農(nóng)業(yè)生產(chǎn)者的專業(yè)知識有很高要求[1]。通過人工觀察來判斷病害類別,主觀性較強,耗時耗力。因此,使用現(xiàn)代信息化技術,高效準確的識別農(nóng)作物病害具有重要意義,也是農(nóng)業(yè)現(xiàn)代化的重要標志[2]。基于傳統(tǒng)的圖像處理方法需要對農(nóng)作物的病害特征進行手工的病斑分割、特征提取,并自行構(gòu)建分類器分類,需要消耗大量的時間進行數(shù)據(jù)預處理,且受客觀條件影響較大,特征提取困難[3]。近些年,隨著深度學習的飛速發(fā)展,卷積神經(jīng)網(wǎng)絡憑借其強大的特征提取能力,在圖像識別[4]、目標檢測[5]等領域取得諸多成功的應用,諸如人臉表情識別[6]、病理圖像分類[7]、缺陷檢測[8],并有學者成功將其應用到農(nóng)業(yè)領域,YANG等[9]成功使用卷積神經(jīng)網(wǎng)絡對水稻病害進行識別,所提出的模型準確率達到95.48%;王美華等[10]通過對注意力機制CBAM模塊進行改進,針對空間注意力與通道注意力之間的串行干擾問題,提出了一種并行連接的新型混合注意力模塊,在病蟲害識別方面取得較好效果,且在不同模型間具有良好的泛化性;宋余慶等[11]提出了多層次增強高效空間金字塔模型,解決網(wǎng)絡輸入圖像尺寸不相同的問題,但模型結(jié)構(gòu)復雜,需要構(gòu)建多層融合EESP網(wǎng)絡模型提取圖像的特征信息;王春山等[12]在殘差網(wǎng)絡的基礎上進行改進,提出了一種Multi-scale ResNet病害識別模型,結(jié)合多尺度特征提取模塊和改變殘差連接方式,并采用分解卷積核和群卷積操作,進行一定程度的模型輕量化,但實際應用中,采用多支路結(jié)構(gòu)會明顯增大計算資源消耗,增加網(wǎng)絡的訓練時間,降低推理效率。綜上,本研究以番茄的葉面病害為例,針對深度卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)復雜,計算資源消耗大、且對輸入圖像尺寸限制性強、自適應性弱等問題,提出了一種改進的GSNet輕量化網(wǎng)絡模型,能夠有效實現(xiàn)番茄的葉面病害識別。
深度卷積神經(jīng)網(wǎng)絡通常是由大量的卷積操作組成,這導致了大量的計算成本。在實際過程中,當輸入數(shù)據(jù)X∈R(c,h,w),其中c為輸入數(shù)據(jù)的通道數(shù),h和w分別為輸入數(shù)據(jù)的高和寬,任意卷積層生成n個特征圖在數(shù)學上可表示為:
式中:*為卷積運算;b為偏置項;Y∈R(h’,w’,n)為卷積運算后輸出的的n通道特征圖;f∈R(c,k,k,n)為當前卷積層的卷積過濾器,卷積操作如圖1。h’和w’分別為生成特征圖的高和寬,卷積過濾器f內(nèi)核尺寸為k×k。
圖1 標準卷積Figure 1 Standard convolution
常規(guī)卷積層的輸出特征圖會包含很多的冗余,Ghost網(wǎng)絡結(jié)構(gòu)中指出,沒有必要使用大量的運算資源來生成這些冗余的特征圖。
Ghost模塊首先采用常規(guī)卷積運算生成少量的本征特征圖,即:
式中:f’∈(c,k,k,m)為常規(guī)卷積運算使用的濾波器,輸出通道數(shù)m<n,然后在生成的本征特征圖Y’上,利用cheap operation(廉價線性運算)運算生成本征特征圖的“重影”,擴充特征信息和增加通道數(shù),即:
式中:yi’為Y’中的第i個本征特征圖;Φ為廉價線性運算;Yi,j為由yi’生成的第j個重影特征,卷積操作如圖2。
圖2 Ghost結(jié)構(gòu)圖Figure 2 Ghost structure
利用Ghost模塊可以有效減少浮點運算次數(shù)FLOPs和參數(shù)量,降低模型復雜度,假設生成n通道特征圖,Ghost模型縮放比例radio為s,卷積核尺寸相同為k×k,理論加速比為:
參數(shù)壓縮比計算為:
由式(4)與式(5)可知,采用Ghost替換常規(guī)卷積操作,可以將網(wǎng)絡的浮點運算次數(shù)和參數(shù)量,壓縮為原本的1/s,有效降低網(wǎng)絡模型復雜度。
空間金字塔(spatial pyramid pooling,SPP)結(jié)構(gòu)采用多尺度池化操作,針對卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)需要固定輸入圖像尺寸的問題,通過使用多個不同大小的池化框,可以將任意圖像的卷積特征轉(zhuǎn)化為固定大小的特征向量,避免因圖像裁剪、縮放而導致的位置信息扭曲,導致識別精度的降低,使卷積神經(jīng)網(wǎng)絡適應不同比例、不同尺寸的圖像輸入,并且可以更有效的提取病害的多尺度特征信息,提高網(wǎng)絡自適應性和識別準確率。
圖3 為空間金字塔池化示意圖,在輸入圖像經(jīng)過卷積運算轉(zhuǎn)為高維卷積特征圖后,通過設定好的不同大小池化框?qū)μ卣鲌D進行池化操作,并將輸出特征展平為特征向量,依次拼接,最終提取的特征向量固定為特定值,傳入全連接層進行訓練分類。且采用空間金字塔池化可以提取特征圖的多尺度信息,提高網(wǎng)絡性能。
圖3 空間金字塔池化示意圖Figure 3 Schematic diagram of spatial pyramid pooling
在神經(jīng)網(wǎng)絡中,批歸一化(BN層)可以有效解決梯度消失和爆炸問題,加快網(wǎng)絡收斂,提高網(wǎng)絡性能[17]。但同樣會占用更多的運算資源。本研究結(jié)合結(jié)構(gòu)重參數(shù)化思想,分割網(wǎng)絡的訓練過程與推理過程,在推理網(wǎng)絡中將卷積運算與BN層相融合,可以進一步提高網(wǎng)絡的推理效率,降低圖像識別時間。
BN層計算為:
式中:γ為尺度因子;β為偏移因子;ε為微小正數(shù)(防止分母為0);μ為樣本均值;σ2為方差。
將BN層運算帶入式(1),與卷積運算進行合并:
為了適應番茄葉面病害的識別要求,本研究搭建了一種高效的網(wǎng)絡結(jié)構(gòu)GSNet(圖4)。網(wǎng)絡結(jié)構(gòu)模型包含Conv1-Conv4共4個卷積模塊及2層全連接層。為了輕量化網(wǎng)絡結(jié)構(gòu),將3×3的常規(guī)卷積層用Ghost模塊[14]進行
圖4 GSNet網(wǎng)絡結(jié)構(gòu)圖Figure 4 GSNet network structure
將合并后的替代,減少卷積操作中生成的冗余特征圖數(shù)量和浮點運算次數(shù),在Conv1模塊中,輸入病害圖像經(jīng)過Ghost模塊后,采用1×1卷積核進行二次特征提取,整合網(wǎng)絡特征圖,隨后送入最大池化層(池化框大小為2×2,步長為2)進行下采樣操作,并依次經(jīng)過Conv2-Conv4模塊,將輸入圖像轉(zhuǎn)變?yōu)楦呔S卷積特征圖,且在Conv4模塊中,Ghost步長設為2,并采用空間金字塔池化替換最大池化,在提取特征圖多尺度信息的同時,固定特征向量數(shù)量(本研究中空間金字塔池化框大小分別設置為4×4,2×2和1×1,特征向量固定為21),提高網(wǎng)絡的自適應性,解決網(wǎng)絡對于輸入圖像尺寸的嚴格限制,降低網(wǎng)絡參數(shù)量。最后將提取的特征向量進行展平拼接,輸入到全連接層與Softmax層進行訓練分類??紤]實際需要,在網(wǎng)絡訓練結(jié)束后,結(jié)合結(jié)構(gòu)重參數(shù)化[16],分割網(wǎng)絡的訓練階段和推理階段,在推理網(wǎng)絡中合并Ghost模塊中的卷積操作和BN層,進一步節(jié)省推理過程的運算資源,提高推理效率。
PlantVillage網(wǎng)站提供了一個可供免費訪問的開放式數(shù)據(jù)庫,該數(shù)據(jù)庫收集了14種植物健康和病害的可見光葉片圖像[13],并成功應用AlexNet和GoogleNet進行植物葉面病害識別。本研究以番茄的葉面病害為研究對象,從中提取10種番茄葉面圖片(圖5),作為本試驗所需的番茄葉面病害圖片數(shù)據(jù)集。
圖5 番茄病害葉片示例Figure 5 Example of tomato leaf disease
由于PlantVillage工程中的番茄葉面病害圖片數(shù)據(jù)集存在樣本不均衡問題,如其中數(shù)據(jù)樣本最多的黃化曲葉病包含有5357張分辨率為256*256的彩色圖片,而數(shù)據(jù)樣本最小的花葉病僅包含373張病害圖片,具體數(shù)據(jù)分布如圖6。
圖6 番茄病害數(shù)據(jù)分布圖Figure 6 Data distribution of tomato diseases
因此,為了平衡各類別樣本間的分布,增強數(shù)據(jù)的可靠性,本研究對樣本數(shù)據(jù)進行預處理,通過水平翻轉(zhuǎn)、鏡面翻轉(zhuǎn)等操作對樣本數(shù)量過少的病害類別進行樣本擴充,對于樣本數(shù)量過多的病害類別,則隨機剔除部分樣本。經(jīng)過預處理后,將各個類別的樣本數(shù)量維持在1500張,作為最終的番茄葉面病害識別的樣本數(shù)據(jù)集。
本研究基于Pytorch平臺,硬件環(huán)境為Intel i7-10700F處理器,16G內(nèi)存,NVIDIA GeForce RTX3060 12G獨立顯卡。模型訓練中選擇Adam作為網(wǎng)絡訓練優(yōu)化器,初始學習率為0.0001,每次訓練同時輸入的訓練樣本數(shù)Batch Size設為30,網(wǎng)絡的迭代次數(shù)Epoch設為50,采用交叉熵損失函數(shù)進行試驗。同時按照7∶2∶1比例將數(shù)據(jù)集劃分為訓練集、驗證集和測試集,訓練樣本數(shù)為10500。
為了驗證Ghost和空間金字塔池化對于網(wǎng)絡性能的影響,在基礎網(wǎng)絡結(jié)構(gòu)(Unall)上分別引入Ghost模塊(Ghost),空間金字塔池化(SPP)以及兩者結(jié)合(GSNet)進行試驗,GSNet網(wǎng)絡對輸入端圖像無固定尺寸要求,故可以直接輸入未經(jīng)裁剪的原始病害圖像(分辨率256*256)。試驗結(jié)果如圖7,圖7a為準確率曲線(Accuracy),圖7b為損失函數(shù)曲線(Loss)。可以看出,采用Ghost模塊和空間金字塔池化操作可以有效提高網(wǎng)絡模型的準確率,并取得更低的損失,同時組合模型的效果最好。
圖7 組合試驗變化曲線Figure 7 Variation curve of combined test
由表1組合試驗的測試集試驗結(jié)果可知,Ghost模塊和空間金字塔池化可以有效減少網(wǎng)絡的浮點運算次數(shù)FLOPs和參數(shù)量Params,且與基礎網(wǎng)絡結(jié)構(gòu)相比,分別嵌入SPP、Ghost和組合模塊,準確率提升5.58%、5.49%和8.36%,可以提高網(wǎng)絡對于番茄葉面病害的識別效果,驗證了本研究方法的有效性。表中Time為測試集整體圖像識別時間(1500張圖像,單次輸入圖像數(shù)量為1),相比于基礎網(wǎng)絡,改進網(wǎng)絡的圖像識別時間均有所上升。
表1 組合試驗對比Table 1 Comparison of combined tests
圖8 為本研究所提網(wǎng)絡結(jié)構(gòu)重參數(shù)化前后,測試集識別結(jié)果的混淆矩陣,可以發(fā)現(xiàn)兩者結(jié)果相同,病害識別準確率均為98.53%。且通過試驗結(jié)果分析,在合并卷積運算和BN層前,測試集數(shù)據(jù)的識別時間為16.28s,合并卷積運算和BN層后,測試集數(shù)據(jù)的識別時間為15.15s,識別時間降低6.94%。表明采用結(jié)構(gòu)重參數(shù)化后,并不會影響原有網(wǎng)絡性能,降低識別準確率,而且通過分割訓練和推理過程,可以有效提高網(wǎng)絡推理效率,減少圖像識別時間。
圖8 結(jié)構(gòu)重參數(shù)化混淆矩陣Figure 8 Structural reparameterized confusion matrix
為了進一步驗證本研究方法的有效性,在相同條件下同傳統(tǒng)網(wǎng)絡VGG16、ResNet50、InceptionV3以及輕量化網(wǎng)絡EfficientNet[18]、MobileNet[19]和ShuffleNet[20]進行對比,番茄病害測試集圖像識別試驗的結(jié)果如表2。本研究設計的網(wǎng)絡模型識別準確率達到98.53%,與InceptionV3相同,但InceptionV3在卷積過程中采用多尺度結(jié)構(gòu)進行特征提取,降低網(wǎng)絡推理效率,提高圖像的識別時間,GSNet在保持高識別準確率的同時,識別時間更短,且相比于VGG16、ResNet50以及3種輕量化網(wǎng)絡EfficientNet、MobileNetV3和ShuffleNet,獲得最高的識別準確率和最短的識別時間,進一步驗證了本研究方法的有效性。
表2 不同模型試驗對比Table 2 Comparison of different model tests
應用先進的現(xiàn)代信息處理技術進行農(nóng)作物病害的識別預防,是農(nóng)業(yè)的重要研究領域,也是農(nóng)業(yè)現(xiàn)代化的重要標志。在農(nóng)作物病害識別過程中,相比于傳統(tǒng)圖像識別技術[21],深度學習與卷積神經(jīng)網(wǎng)絡憑借其強大的特征提取能力,有效降低了圖像識別技術上的操作難度,避免了人工提取過程中,對圖像信息的過度預處理。同時考慮到深度學習網(wǎng)絡所需的巨大計算資源,在本研究中設計了一種輕量化網(wǎng)絡結(jié)構(gòu):GSNet,采用Ghost模塊替換常規(guī)卷積層,并引入空間金字塔池化以解決網(wǎng)絡對輸入圖像尺寸的限制,提高了網(wǎng)絡的自適應性。本研究中并未如文獻[10]與文獻[11]等,通過在網(wǎng)絡中疊加注意力機制與多尺度結(jié)構(gòu)來提高病害識別準確率,避免了模型結(jié)構(gòu)復雜化以及多支路結(jié)構(gòu)帶來的顯存負擔[16]。
本研究結(jié)果表明,GSNet網(wǎng)絡取得了令人滿意的結(jié)果,病害識別準確率達到98.53%,與InceptionV3網(wǎng)絡相同,相比于VGG16、ResNet50以及3種輕量化網(wǎng)絡,識別準確率分別提高14.53%、1.78%、2.77%、1.29%和4.33%,并取得最短的識別時間。同時通過分割網(wǎng)絡訓練階段和推理階段,在推理網(wǎng)絡中合并卷積操作與BN層,能夠有效減少病害圖像識別時間,測試數(shù)據(jù)的識別時間由16.28s下降為15.15s,推理效率提高6.94%,能夠有效進行作物的葉面病害識別工作,滿足農(nóng)業(yè)生產(chǎn)的實際需求。