曹 歡,方 睿
(成都信息工程大學 計算機學院,四川 成都 610225)
芒果屬漆樹科熱帶常綠大喬木,早結豐產,種植效益高,經過多年培育發展,中國現已成為世界第二大芒果生產國,僅次于印度,年產量約為435.159 3萬噸,占世界芒果總產量的11.2%。芒果可直接食用,也可以入藥,隨著近年來芒果種植面積的不斷擴大,已在中國形成三大芒果主產區:海南昌江,廣西百色,攀枝花鹽邊。受當前溫室效應的影響,芒果培育期也隨溫度增高而延長,利于產量的增加。芒果大面積種植后,若有病蟲害發生,需要大量人力物力進行監管,還需通過人工進行識別,引入深度學習技術,可加快智慧農業的步伐,在發病早期監測到病害,可減少農藥的用量,定點施藥,將對芒果產量、質量的影響降到最低,還能減少對環境的污染。
該文以攀西地區芒果常見的12種病蟲害圖片建立數據集,在Pytorch框架下搭建MobileNetV2、MobileNetV3、ShuffleNetV2、MobileViT這4種不同規模的卷積神經網絡模型,并結合當前常用的訓練策略遷移學習,對比不同模型的參數量、精確率、召回率等,最終選擇了MobileViT為芒果病蟲害識別模型,該模型的精確率為96.31%,召回率為96.12%,F1為96.20%,表現均優于其他模型。
當前已有大量深度學習技術用于農業病蟲害識別的研究。陳偉文等[1]利用改進后的網絡AlexNet-Improved對番茄葉片病害圖片進行識別,原模型的過擬合問題得到改善,模型準確率為95.8%,比改進前高2%;蔣力順等[2]用AlexNet、VGG-16和ResNet50三種不同深度的網絡對黃瓜病害識別進行研究,最終選擇ResNet50進行病害識別,識別率為99.06%;王超等[3]用Resnet50對玉米葉片病害進行識別,分類準確率為92.82%,實驗結果明顯優于傳統機器學習方法。
上述文章采用的網絡,參數龐大,不利于實際應用,于是很多研究者引入輕量級模型進行識別。葉鳴煬等[4]利用MobileNetV2對玉米病害進行識別,相比于經典卷積神經網絡LeNet等,計算量少,準確率高;李好等[5]引入ECA模塊改進ShuffleNetV2模型識別農作物病害,平均準確率達到99.24%,還使用了H-Swish激活函數以使網絡參數更小;林建吾等[6]引入Focal Loss代替交叉熵函數在MobileNetV2模型上對番茄病害圖像進行識別,最終準確率為99.87%,模型大小僅8.74 M。上述研究引入輕量級模型,在保證識別準確率的同時,也能用于移動端,滿足了實際需求。
卷積神經網絡由一開始的AlexNet[7]、VGGNet[8],再到現在廣泛使用的ResNet[9]、Vision Transformer[10]等,這些模型隨著硬件的快速發展,參數量十分龐大,訓練模型也需耗費巨大的資源,不利于移植到移動端廣泛應用,因此出現了輕量級網絡模型,如ShuffleNet[11]、MobileNet[12]等。
MobileNet系列是由Google團隊于2017年提出的。MobileNetV1的一大創新是提出了深度可分離卷積,常規的卷積塊作用于圖像后,會同時改變特征圖的大小和個數,而深度可分離卷積就是將改變通道大小的操作(PW卷積)和改變特征圖大小的操作(DW卷積)分離開,極大地減少了計算量。如圖1所示,左邊為傳統卷積,右邊為深度可分離卷積。Mobile-NetV2[13]在此基礎上提出了倒殘差結構,模塊與ResNet類似,都由三個模塊組成,先是1×1卷積塊,再是3×3卷積塊,最后是1×1卷積塊。ResNet是利用這三個模塊先降維后升維,而MobileNetV2的作用結果正好相反,是先升維后降維,所以稱為倒殘差結構,這樣能使特征提取在高維進行,還使用了ReLU6激活函數。MobileNetV3[14]在前兩個版本的基礎上再進行了優化。

圖1 傳統卷積(左)與深度可分離卷積(右)
ShuffleNetV1于2018年提出,當時輕量級神經網絡模型研究已經趨于成熟,該作者主要用了分組DW卷積和Channel Shuffle技術,在保證模型精度的前提下,極大地減少了計算開銷。卷積中大量使用的1×1卷積塊,在實際計算過程中復雜度較高,消耗了大量計算資源,由此想到進行分組DW卷積,在分組卷積之后利用Channel Shuffle技術,獲取不同通道間的信息。ShuffleNetV2[15]在V1的基礎上進行了進一步的改進,提出了四個設計輕量化網絡的原則:當輸入和輸出通道相同時,內存訪問成本最小;分組數過大會導致內存訪問成本增加;碎片化程度高,不利于并行運算;元素操作如ReLU太多,會增加內存的消耗。
蘋果公司于2021年提出MobileViT[16],該模型是基于輕量級模型MobileNets,并加入當前的研究熱門ViT模型,以此結合CNN和ViT各自的優勢而提出的。CNN的卷積層可獲得圖片的局部信息,以及有歸納偏置特性。ViT適用于大尺度圖像識別,需要在較大的數據集上進行預訓練,才能達到CNN的識別精度,而且也沒有歸納偏置特性,但可以很好地獲取圖像的全局特征。MobileViT很好地結合了兩種模型的特性,通過深度可分離卷積和ViT分別學習圖像的局部信息和全局信息,該模型有更好的泛化性能和魯棒性。圖2為MobileViT的模型架構,其中的MV2模塊就是MobileNetV2中的倒殘差結構,↓2為兩倍下采樣。

圖2 MobileViT模型
圖像根據何平等[17]總結出的四川攀西地區芒果主要病蟲害,選取了其中的白粉病、瘡痂病、橫線尾夜蛾、薊馬、蚧殼蟲、橘小實蠅、流膠病、切葉象甲、炭疽病、細菌性黑斑病、蚜蟲、葉癭蚊12種病蟲害,以此選取圖片建立數據集。
數據集一部分圖片來自網絡公開的MangoLeafBD數據集[18],該數據集包含8個類別,選取其中的白粉病、切葉象甲、炭疽病、細菌性黑斑病4種病蟲害圖片。還有一部分通過爬蟲技術,在百度搜索引擎獲取圖片。網絡獲取的圖片質量參差不齊,先通過人工篩選為芒果病蟲害相關圖片,再對圖片進行數據增強,改變圖像亮度或進行圖片翻轉,如圖3所示,以此擴充數據集,增加數據的魯棒性。

圖3 數據增強
最后共獲取6 769張圖片,具體數量見表1,其中4 879張圖片為訓練集,1 220張圖片為驗證集,670張圖片為測試集。

表1 芒果病蟲害圖片數量
實驗軟件環境為Windows10操作系統,以Pytorch為框架,使用python3.10版本的編程語言,CUDA11.6編程平臺。實驗硬件環境為16 GB內存,NVIDIA GeForce RTX3050 Ti顯卡,4 GB顯存,搭載AMD Ryzen 7 5800H處理器。訓練參數epoch為100,batchsize為16,學習率為0.001,優化器為AdamW,激活函數為ReLU6。
先使模型在大型數據集ImageNet-1k上進行預訓練,將訓練后得到的模型分類器有1 000個類別,修改為與數據集相對應的12個類別,以此用于芒果病蟲害識別。再將數據集6 769張圖片分為三部分,其中訓練集有4 879張圖片,驗證集有1 220張圖片,測試集有670張圖片。將圖片以3×224×224的大小,分別輸入到MobileNetV2、MobileNetV3、ShuffleNetV2、MobileViT等4個模型中,其中MobileViT_0為MobileViT未使用遷移學習時的模型。實驗運用了現在深度學習的常用方法遷移學習,可以使模型具有較好的泛化性能,減少了模型因為數據集較小而產生的過擬合現象。圖4為部分模型的訓練損失曲線。

圖4 部分模型的訓練損失曲線
說明評價指標前需要先了解四個基本概念。真陽性(True Positive,TP)指預測結果為正,實際結果也為正;假陽性(False Positive,FP)指預測結果為正,實際結果為負;假陰性(False Negative,FN)指預測結果為負,實際結果為正。精確率、召回率、F1分數三個指標就是在這三個參數的基礎上進行計算,如下式。精確率是針對預測結果而言,計算預測出來的某類樣本中有多少是被正確預測的。召回率是針對測試集而言,有多少樣本被正確地預測出來。而F1分數同時考慮了精確率和召回率,是精確率和召回率的一種加權平均。

(1)

(2)

(3)
對各個分類類別計算精確率、召回率、F1分數后,使用宏平均(表示所有類別對應指標的平均值)求取各模型對應的精確率、召回率、F1分數三個指標。
從圖4可知,隨著迭代次數的不斷增加,準確率在開始的前30個epoch增長較快,后面的70個epoch增長較慢,逐漸趨于穩定,而損失值在前20個epoch下降較快,后面80個epoch下降較慢,逐漸趨于穩定。表2為各個模型的參數量、FLOPs、精確率、召回率、F1分數。

表2 各個模型的性能對比
MobileViT_0相較于使用了遷移學習的MobileViT模型,精確率相差6.37百分點,召回率相差6.46百分點,F1分數相差6.65百分點,證明遷移學習對于模型的準確率增長有明顯的作用,可極大地提升模型的泛化能力,當數據量較少的時候,可以通過遷移學習提高模型的準確率,增加模型的識別效果。
表2為各個模型的性能實驗結果。同種模型之間進行比較,如MobileNetV3_small和MobileNetV3_large,同種模型參數量越大,模型精確度越高,可見模型大小也會影響到模型的識別效果。當模型較小時,學習能力就會受限制,影響模型的泛化性能,準確率也會受影響。但是模型相差不大的ShuffleNetV2和MobileViT,FLOPs卻相差很多,得益于ShuffleNet的channel shuffle技術,減少了1×1模塊的數量,極大地減少了計算量。
表3為MobileViT模型對各個病蟲害圖片實驗后的數據。實驗結果較優的為橫線尾夜蛾和切葉象甲兩個類別,因為這兩個類別的圖片數量相對較少,可能實驗數據相較其它類別會更單一。蚧殼蟲類別的精確率和召回率相差6.73百分點,召回率在各個類別中最低為87.50%,證明此類最容易誤判為其它類別,可能與其他類別存在相似性。

表3 MobileViT實驗數據
MobileViT模型的精確率為96.31%,召回率為96.27%,F1分數為96.27%,均優于其他模型,參數量為5.58 M,FLOPs為848.43 M,通過更大的模型和更多的時間,換取更高的識別精度。綜上所述,選擇MobileViT模型進行芒果病蟲害識別,模型具有較好的識別性能和魯棒性。
基于遷移學習,從參數量、FLOPs、精確率、召回率、F1分數五個方面,比較了MobileNetV2、MobileNetV3、ShuffleNetV2、MobileViT這4種不同規模的輕量級深度學習網絡模型,最終選擇了MobileViT為芒果病蟲害識別模型,該模型的精確率為96.31%,召回率為96.12%,F1分數為96.20%,表現均優于其他模型。并且MobileViT模型的參數量為5.58 M,有助于解決農業實際部署時,計算資源有限和實時快速準確識別的問題。