李 天, 唐 璐
(西華師范大學計算機學院, 四川南充 637000)
中國是葡萄生產大國,產量居世界首位。 近年來,中國的葡萄產業(yè)正處于關鍵時期,葡萄種植農戶不斷調整和優(yōu)化品種結構以及栽培模式,種植面積和產量穩(wěn)步增長,向現代化、高質量的產業(yè)轉型。 然而,葡萄生長過程中經常受到黑腐病、輪斑病、褐斑病、葉枯病等多種病害的干擾,嚴重妨礙了葡萄的正常生長,危害產量和質量,為果農的經濟帶來了損失。
隨著人工智能技術的發(fā)展,計算機視覺、圖像處理等技術已經廣泛應用于農業(yè)領域,如水稻病害識別、果蔬品質檢測等,這些技術的應用使得農業(yè)生產朝著更加智能化和高效化的方向發(fā)展。 近年來,在農作物病害識別領域,CNN 展現出了優(yōu)越的性能表現[1-3]。 尤其是以單階段和雙階段目標檢測算法為代表的深度學習技術,更是在農業(yè)病蟲害檢測上大展身手,獲得了廣泛的應用。 雙階段目標檢測算法首先以候選框的方式確定目標位置,然后再對這些候選框進行分類和回歸,其代表模型有Faster-Rcnn。 雖然雙階段目標檢測算法具備較高準確率,但是在推理速度和部署能力上有所欠缺[4]。 單階段目標檢測算法是直接從圖像中提取物體的位置和類別信息,不需要進行物體候選框的生成。 其中比較著名的算法有YOLO[5-6]和SSD 等。 YOLO 使用卷積神經網絡來提取目標特征,最終將提取到的信息轉化為回歸問題,SSD 也采用類似的思路。
綜上,本文采用YOLOv7 目標檢測算法為基礎模型,在此基礎上,通過重新設計錨框以適應葡萄葉病斑數據集。 并且在模型頸部添加GAM 注意力機制來獲取更豐富的跨通道信息,提高模型的特征提取能力。 針對密集且具有粘連性質的葡萄葉病斑,將原始YOLOv7 中的NMS 極大值抑制策略更換為對密集目標更敏感的柔性極大值抑制策略Soft-NMS[7]。 在公開數據集PlantVillage 上對3 種常見葡萄葉病斑進行識別,以驗證模型效果。
YOLOv7 網絡模型主要包含了輸入(Input)、骨干網絡(Backbone)、頸部(Neck)、頭部(Head)等4部分,其結構圖如圖1 所示。
圖1 YOLOv7 網絡結構Fig. 1 YOLOv7 network structure
骨干網絡模塊由多個卷積層組成,包括BConv卷積層、E-ELAN 卷積層和MPConv 卷積層。 其中BConv 卷積層由卷積層、BatchNormalization (BN)層和LeakyReLU 激活函數構成,用于提取不同尺度的圖像特征;E-ELAN 卷積層采用原始的ELAN[8]設計架構,引導不同特征組的計算塊學習更多樣化的特征,提高網絡的學習能力,而不破壞原有梯度路徑;MPConv 卷積層在BConv 層的基礎上,通過添加Maxpool 層, 形成上下兩個分支, 上分支通過Maxpool 將圖像長寬減半,通過BConv 層將圖像通道減半。 下分支則通過第一個BConv 層將圖像通道減半。 兩個分支提取到的特征經過Cat 操作融合,旨在進一步優(yōu)化卷積層的效果,提高了網絡的特征提取能力。
頭部模塊采用路徑聚合特征金字塔網絡[9](Path Aggregation Feature Pyramid Network,PAFPN)結構,引入自底向上的路徑,使得底層信息更容易傳遞到高層,從而實現了不同層次特征的高效融合。Prediction 模塊通過REP(RepVGG Block)結構對PAFPN 輸出的P3 、P4 和P5 等3 個不同尺度的特征進行圖像通道數調整,最后經過1×1 卷積用于置信度、類別和錨框的預測。 雖然YOLOv7 算法在常見任務場景(如行人、車輛檢測)中表現出色,但將其直接應用于葡萄葉病斑檢測仍然存在許多問題,如:
(1)受生長時間影響,葡萄葉病斑存在出現位置隨機、病斑尺寸不一等問題;有的病斑像素很小,容易產生漏檢情況。
(2)不同種類的病斑存在一定相似度。 以黑腐病和黑麻疹為例,葉枯病病斑初期癥狀與黑腐病類似,系統(tǒng)很容易把像素相對較低的黑腐病誤識為葉枯病。
(3)個別種類的病斑還存在粘連性,容易在視覺上造成一種不屬于任何一類病斑的效果。 針對這3 種問題,本文從檢測錨框、注意力機制、極大值抑制3 方面對YOLOV7 進行改進。
全局注意力機制(Global Attention Mechanism,GAM)[10],可以起到減少網絡信息縮減并放大全局維度交互特征的作用。 該機制在CBAM 中的順序通道-空間注意機制的基礎上,對其子模塊進行了優(yōu)化設計,整體模塊如圖2 所示。
圖2 Gam 注意力機制Fig. 2 GAM attention mechanism
其中,輸入特征由F1表示,將圖2 中的一系列中間操作定義為中間狀態(tài)F2,輸出狀態(tài)定義為F3,則三者之間的關系如公式(1) 所示:
2.1.1 通道注意力子模塊
如圖3 所示,原始輸入特征F1維度為C×W×H,通道注意力子模塊首先對其進行三維通道置換,將信息保存為W×H×C的形式;利用一個兩層的MLP,第一層進行編碼操作將通道數C縮減至C/R,第二層進行解碼操作以獲取與輸入特征具有相同通道數的結果。 最終,通過對結果進行Sigmoid激活函數處理,得到權重系數Mc,可以有效地擴大跨維通道空間的依賴性。
圖3 通道注意力Fig. 3 Channel attention
2.1.2 空間注意力子模塊:
如圖4 所示,輸入特征F2采用了雙重卷積,每個卷積層都使用了7?7 的卷積核,以達到空間信息融合的效果。 通道注意力子模塊根據特征的重要性進行縮減并得到縮放后的新特征。 最后,對于這個特征的權重系數MS,采用Sigmoid激活函數進行處理,以獲得更加準確的權重值。
圖4 空間注意力Fig. 4 Spatial attention
在使用YOLO 模型進行檢測時,一張圖片可能會產生多個候選框,每個候選框代表著可能存在的目標區(qū)域。 然而,由于算法本身的不確定性,會導致同一個目標在不同的候選框中多次出現。 非極大值抑制(Non-Maximum Suppression,NMS)是目標檢測領域用于消除重疊的邊界框或者其他類型區(qū)域的一種策略。 其基于一定的規(guī)則,通過篩選出最優(yōu)的檢測結果來消除冗余的候選框。
NMS 的主要思想,是對于所有候選框計算其得分(例如置信度分數),并選擇得分最高的框作為輸出。 然后,將與該框高度重疊的所有候選框從集合中刪除。 通過不斷重復這個過程,直到集合中不存在重疊的候選框。 具體見公式(2)。
式中:M代表當前置信度最高的邊界框,bi代表鄰域內的相鄰邊界框,Si是當前邊界框得分值,IoU代表兩個邊界框的閾值,Nt代表該邊界框的閾值。
NMS 在對相鄰邊界框進行處理時,會判斷M和bi的IoU閾值是否小于Nt,如果小于,則保持Si不變,否則就設置為0。 這種處理方式對于稀疏目標的識別效果很好。 然而,個別種類病斑(如黑麻疹)存在密集粘連情況,此時NMS 方法會讓兩個檢測框之間產生抑制效果,從而導致置信度較低的目標漏檢。
為解決上述問題,本文使用一種將得分和重合度全部納入考慮的非極大值抑制方法Soft -NMS[11]。 該方法不會直接剔除置信度較低檢測框,而是以權重衰減的方式決定置信度較低的檢測框的去留,特別適用于密集目標檢測。 具體操作如式(3)所示。 當重疊度小于給定閾值時,分類置信度分數保持不變;而當重疊度大于等于給定閾值時,分類置信度分數按線性規(guī)則進行衰減。
YOLOv7 模型的每個檢測頭都可以產生3 個初始錨框,這些錨框是通過對COCO 數據集進行kmeans 聚類生成的,適用于該數據集中常見類別的查找。 然而,在葡萄葉病斑數據集小目標以及密集病斑較多時,原始錨框并不適用于該數據集。 因此本文采用K-means 聚類算法,對葡萄葉病斑數據集重新進行錨框設計。
如圖5 所示,K 均值(K-means)算法是一種無監(jiān)督學習算法,用于將數據集劃分為K個不同的組或簇,其基本思想是通過最小化數據點與其所屬簇中心點之間的距離,來確定數據點所屬的簇。 K 均值算法的基本實現步驟如下:
圖5 K-means 聚類Fig. 5 K-means clustering
(1)初始化簇中心點:隨機選擇K個數據點作為初始簇中心點。
(2)分配數據點到最近的簇:對于每個數據點,計算其與每個簇中心點之間的距離,并將其分配給距離最近的簇。
(3)重新計算簇中心點:對于每個簇,計算其所有數據點的平均值,并將平均值作為新的簇中心點。
(4)重復步驟(2)、步驟(3),直到簇中心點不再改變或達到最大迭代次數。
(5)輸出結果:輸出聚類結果,即每個數據點所屬的簇。
本節(jié)所用數據集分為兩部分,一部分來源于網絡爬取,另一部分來自于大型公開植物病害數據集PlantVillage,PlantVillage 數據集由植物病理學家對葉片病害進行確診后得到的,具有權威性。 實驗選取的3 種常見葡萄葉片病害分別為黑腐病、葉枯病和黑麻疹,具體病斑特征如圖6 所示。
圖6 不同病斑圖像Fig. 6 Images of different diseases
上述數據集共包含葡萄葉病斑圖像2 400 張,其中黑麻疹、黑腐病、葉枯病各為800 張。 本文使用Labellmg 標注軟件進行葡萄葉病斑的標注工作,將圖像中不同類型病斑目標的位置進行標注后,將數據集按照訓練集∶驗證集=8 ∶2 的比例隨機劃分,并構建VOC 格式的數據集。
精確率(Precision,P) 是指在所有檢測出的目標中檢測正確的概率,故其又稱查準率;召回率(Recall,R) 是度量分類模型性能的一種指標,用來衡量模型在所有正類樣本中,正確識別出的樣本數量與所有正類樣本數量的比例;平均精度(Average Precision,AP) 是衡量模型在檢測目標時準確性的一種指標,其是在不同置信度閾值下計算的精度得分的平均值;mAP是從類別的維度對AP進行平均,因此可以評價多分類器的性能。 各評價指標的計算公式如下:
本文采用PyTorch 作為深度學習框架,操作系統(tǒng)選用Ubuntu18.04,顯卡為NVIDIA GeForce RTX 2060 6 G,CUDA 版本11.1.0。 批次大小設置為16,采用SGD 作為優(yōu)化器,初始學習率為0.01,動量參數為0.9,經過200 輪次迭代后模型趨于收斂。
YOLOv7 算法改進前后的mAP對比曲線如圖7所示。 由此可見,原始YOLOv7 算法在3 種葡萄葉病斑上的檢測mAP為0.841,改進后達到了0.872,mAP提高3.1 個百分點。
圖7 改進前后mAP 曲線Fig. 7 Improved front and rear mAP curves of YOLOv7
為驗證改進模型在葡萄葉片病斑檢測上的優(yōu)勢,在同一數據集上分別選用了主流目標檢測模型與改進YOLOv7 模型進行對比。 圖8 展示了目標檢測模型Faster-rcnn、RetinaNet、SSD 與改進YOLOv7 在同一數據集上的檢測效果,不同模型檢測數據詳見表1。
表1 不同檢測模型對比Tab. 1 Different Model comparison
圖8 不同模型檢測效果對比Fig. 8 Comparison of detection effects of different models
可以看出,對于葉枯病這一種類病斑4 種模型都表現出了較高的定位準確度和置信度水平。 該類病斑雖然尺寸各異,但是特征差異化小,模型擬合度高。
SSD 在3 個類別上的mAP為0.819,表現出了較低的置信度水平。 不僅如此,對于紅圈圈出的小目標黑腐病病斑,以及具有粘連性質的黑麻疹病斑,SSD 均出現了漏檢情況。 原因在于SSD 在特征圖上的默認anchor 較大,對于小目標病斑,其定位精度較低。 對于密集病斑的漏檢,SSD 使用的候選框抑制策略與YOLO 一樣,均為NMS 策略,導致密集且相鄰候選框出現了抑制效果,其中一個被剔除。
雙階段目標檢測算法Faster-Rcnn 在定位精度和置信度上均表現出了良好的效果,其在3 個類別上的mAP表現為0.853,比原始YOLOv7 模型高出1.2 個百分點。 RetinaNet 在小目標病斑上的檢測效果良好,但是對于密集病斑依然存在漏檢情況。
為了詳細驗證改進后的YOLOv7 性能,將實驗分成5 組,在同一數據集上通過對原始的YOLOv7模型、逐步加入各個模塊的YOLOv7 模型,以及合并所有改進后的YOLOv7 模型進行對比。 令原始模型為A,B 在A 基礎上重新設計檢測錨框,C 在A 基礎上加入Soft-NMS,D 在A 基礎上加入注意力機制,E將3 處改進全部作用于A,實驗結果見表2。
表2 消融實驗Tab. 2 Ablation experiments
為了及時、準確解決常見葡萄葉片病害檢測方面的問題,本文在原始YOLOv7 模型之上進行了改進。 通過重新設計檢測錨框引入了全局注意力機制GAM 并將原始NMS 變更為Soft-NMS 3 種策略,有效解決了小目標病斑識別精度不高以及密集病斑漏檢問題。
通過大量實驗驗證,本文提出的改進模型其平均精度(mAP@0.5) 達到了0. 872, 相比原始YOLOv7 模型提高3.1 個百分點,能夠有效識別出3種葡萄葉病斑。
經檢測,該模型依然存在不足之處,雖然提高了檢測精度,但也增加了參數量,推理速度也相對變慢。 未來將從模型輕量化角度入手,探索出一種在不降低檢測精度的情況下復雜度更低的模型,從而使其更易部署到移動端。