














doi:10.15889/j.issn.1002-1302.2024.20.011
摘要:為解決實際生產中草莓因缺素而導致經濟損失的問題,提出一種基于YOLO v5算法的草莓葉片無損缺素檢測方法,可針對4種常見的缺素(缺氮、缺磷、缺鉀、缺鈣)草莓葉片及正常草莓葉片進行識別。由于草莓的種植環境較為復雜,因此對YOLO v5算法進行改進,包括在骨干網絡中添加CBAM注意力機制、使用Focal-EIoU損失函數替換默認的CIoU損失函數,以及引入Soft-NMS非極大值抑制算法并加入P2檢測頭,這些改進著重增加了算法在復雜背景下針對重疊目標及小目標的檢測能力。經過改進所建立的YOLO v5-CFPS模型的準確率(P)、召回率(R)、平均精度均值(mAP值)分別為97.05%、95.71%、97.03%,相較于原始YOLO v5模型分別提升了6.47、6.01、7.73百分點,并通過NCNN框架將模型移植至安卓平臺,驗證了其實際應用的可行性。說明YOLO v5-CFPS模型對于草莓葉片缺素檢測具有檢測精度高、速度快、可靠性強等優點,為草莓缺素檢測提供了一種更優的解決方案,有助于實現及時施肥追肥,并減少因不科學用肥所導致的經濟損失和資源浪費。
關鍵詞:缺素診斷;草莓葉片;機器視覺;改進YOLO v5算法;注意力機制
中圖分類號:S126;TP391.41" 文獻標志碼:A
文章編號:1002-1302(2024)20-0083-09
收稿日期:2023-10-07
基金項目:山東省農機裝備研發創新計劃(編號:2015YF103);山東省自然科學基金(編號:ZR2018MF025);山東省重點研發計劃(編號:2017GNC12103)。
作者簡介:王克林(1998—),男,江蘇徐州人,碩士研究生,主要從事農機裝備智能化研究。E-mail:897364122@qq.com。
通信作者:丁筱玲,教授,主要從事模式識別與智能控制、自動化儀器儀表與裝置、自動控制等教學科研工作。E-mail:xld@sdau.edu.cn。
中國是世界上最大的草莓生產國之一,草莓種植在中國廣泛分布并且有著悠久的歷史[1]。目前,草莓施肥決策主要依靠人工經驗,存在浪費人力、效率低下且過于依賴主觀判斷等缺點。而化學測定法、光譜分析法等雖然能夠較為準確地對缺素問題進行診斷,但存在成本過高、速度較慢且不利于大規模推廣的問題。因此,利用機器視覺技術進行即時、科學、無損的缺素診斷對實現果園智能化管理、及時追肥、降低果農損失具有重大意義。目前,將機器視覺技術應用于作物缺素檢測已經取得了一些研究成果,科研人員結合農業專家經驗,總結出基于形色特征的缺素判斷方法,并通過機器視覺對植物進行缺素診斷[2]。陳利蘇利用MATLAB與Fisher對水稻的氮磷鉀營養脅迫水平進行判別分析,并取得90%以上的識別精度[3];王熠利用支持向量機(LDA-SVM)模型建立蘋果葉片缺鉀診斷模型,并基于PyQt5構建了可視化系統[4];張鑫宇在對比反向傳播神經網絡(BP)神經網絡、支持向量機與隨機森林算法對水培生菜缺素診斷的效果后,構建了基于隨機森林算法的診斷模型,識別準確率可達86%[5];桑東利用機器學習回歸算法和Google Net算法建立水培生菜生長預測模型,并以此為依據建立智控系統實現對生菜生長的干預和調控[6];王良龍設計了基于粒子群遺傳算法(PSO-GA)的模型,用于對梨樹葉的近紅外光譜圖像進行分析,實現了對缺素脅迫91%以上的診斷準確率[7]。
從以上研究不難看出,基于統計學習的傳統機器學習算法在缺素識別領域仍占主導地位,此類算法大多需要經過手動在原始數據中提取有意義的特征用于模型訓練(如RGB特征),且它們通常使用線性模型或淺層非線性模型,無法有效地捕捉復雜的數據分布和抽象特征[8]。自21世紀10年代機器視覺技術進入深度學習階段以來,基于卷積神經網絡(CNN)和遞歸神經網絡(RNN)等的深度學習網絡結構應用愈加廣泛。而基于卷積神經網絡的目標檢測算法如經典的YOLO、SSD、RCNN等都是專門為目標檢測任務設計的,能夠直接預測目標的類別和位置信息,學習到層次化的特征表示,從而提高算法在復雜任務上的性能[9]。
針對以上問題,筆者將YOLO v5、SSD、Faster-RCNN等3種有代表性的基于卷積神經網絡的目標檢測算法引入并對比,選出基礎算法進行改進,優化草莓缺素檢測模型,簡化檢測流程,提升其在復雜環境下的檢測精度。
1" 草莓缺素數據集的采集與處理
1.1" 試驗數據準備與數據集構建
草莓處于生長期(葉期)時對營養素的需求會達到峰值[10],也是這個時期草莓葉片最容易出現顯著的缺素特征。處于不同種類缺素脅迫下的草莓葉片會有不同的形色特征[11],例如,在缺乏氮元素時,葉片會呈現綠色向黃色的轉變,并伴有葉片邊緣變紅的情況;在缺乏磷元素時,葉片上多見紫紅色斑點等。部分樣本示例如圖1所示。
本試驗選取最常見的缺乏氮、磷、鉀、鈣4種元素的草莓葉片作為研究對象,于2023年3—4月間在山東省泰安市某草莓試驗田間拍攝圖像228張,其中包含受到缺素脅迫葉片的圖片203張。拍攝圖像原始分辨率為4 000像素×3 000像素,經處理后為800像素×600像素。使用互聯網爬蟲與在Plant village網站獲取的公開數據集446張,其中包含受到缺素脅迫葉片的圖片444張,因此原始數據集共包含674張圖片。形色特征正常的草莓葉片圖片如圖2所示。
1.2" 數據集增強與標注
隨著種植技術的提高和科學用肥觀念的普及,農作物種植過程中存在的缺素問題正呈現下降趨勢,因此實際拍攝與獲取的圖片較少[12]。較少的訓練樣本易導致準確率或召回率下降,且易產生過擬合現象。為解決以上問題,本研究通過OpenCV對已有數據集進行擴充和增強,以達到增加訓練數據,提高模型泛化能力的效果[13]。使用的方法包括旋轉、翻轉、拉伸壓縮、調整亮度、添加噪聲等,擴增后的數據集總數為2 696張,數據集增強效果示例如圖3所示。在數據集建立完成后,使用labelImg進行數據集的標注,標簽分為正常(zhengchang)、缺氮(quedan)、缺磷(quelin)、缺鉀(quejia)、缺鈣(quegai)5種,數據集最終的訓練樣本數量如表1所示。
2" 草莓葉片缺素檢測
2.1" 試驗平臺與評價指標
本研究所采用的操作系統為Windows 11專業版,中央處理器(CPU)為Intel i5-13500HX,圖形處理器(GPU)為NVIDIA RTX 4060 Laptop,系統運行內存為16 GB。GPU加速庫版本為CUDA 11.3,運行環境為Pytroch 1.12.0,使用語言為Python。本試驗于2023年4月在山東省泰安市進行,主要采用準確率(precision,P)、召回率(recall,R)、平均精度均值(mAP)和運算時間作為主要性能評價指標[14],其中:
P=TPTP+FP;(1)
R=TPTP+FN ;(2)
mAP=1n∑Ni=1APi。(3)
式中:TP為將正類預測為正的樣本數;FP為將負類預測為負的樣本數;FN為將正類預測為負的樣本數;APi表示第i個類別的平均精度;N表示類別數量。
一般情況下,P值反映模型檢測的準確情況,R值反映模型的漏檢情況,mAP可綜合反映模型的檢測精度(本研究選用mAP@0.5)。
2.2" 目標檢測算法的選取
目前主流的目標檢測主要分為一階段檢測器(one-stage detectors)和二階段檢測器(two-stage detectors)。一階段檢測器一次性完成目標檢測的所有任務,包括候選區域生成、目標分類和定位,代表算法有YOLO、單次多框檢測器(SSD算法)等。它們不需要顯式的候選區域生成步驟,將檢測任務建模為單一的回歸問題[15]。而二階段檢測器分為2個主要階段,分別是候選區域生成及目標分類和定位,代表算法有Faster RCNN和Mask R-CNN等。
選擇YOLO v5、SSD、Faster-RCNN這3種有代表性的一階段、二階段網絡模型,各訓練250次,訓練集、測試集與驗證集的劃分比例為8 ∶1 ∶1。3種模型均設置批尺寸(batch_size)為4,初始學習率設定為0.01,100次后設置為0.001,200次后設置為 0.000 1,訓練效果如表2所示。
從表2可以看出,YOLO v5算法具有較好的綜合性能指標,且其相關使用和研究較為成熟和全面,具有較大的改進潛力,因此選擇YOLO v5為基礎算法并進行改進。YOLO v5網絡結構由輸入端(Input)、骨干網絡(Backbone)、頸部網絡(Neck)和檢測頭(Head)構成,具有結構簡單、運行速度快、綜合表現穩定等優點,是目前主流的卷積神經網絡目標檢測算法之一,應用十分廣泛(圖4)。根據不同的通道數和復用模塊又可將其分為 YOLO v5s、YOLO v5m、YOLO v5l、YOLO v5x模型,其模型大小依次變大、速度依次變慢,在本研究中選用模型最小、速度最快的YOLO v5s模型[16]。
3" YOLO v5模型的改進
由于所采集的草莓葉片圖像存在背景復雜、部分圖片缺素特征不明顯以及葉片易存在較多的遮擋重疊等問題,會對模型的檢測效果造成影響,因此具有一定的提升空間。本研究在YOLO v5網絡中加入注意力機制、替換默認的損失函數、改進非極大值抑制算法并加入多尺度特征融合技術,以達到改善模型性能、減少錯檢漏檢發生概率的目的。
3.1" 添加注意力機制
注意力機制是一種廣泛使用的用于提升模型性能的方法,最早應用于機器翻譯領域[17]。通過引入注意力機制允許模型動態地分配不同特征圖部分的權重,即更關注特征較為突出的區域,并相對忽略較為“無用”的區域。類似機制有助于模型更關注包含重要信息的部分,從而提高檢測的準確性。其中,注意力機制又可分為通道域注意力機制、空間域注意力機制或混合域注意力機制。一般來說,通道域注意力機制和混合域注意力機制在識別模型訓練中具有更好的效果。本研究對比屬于通道域注意力機制的SENet(squeeze-and-excitation networks)、CA(coordinate attention)和屬于混合注意力機制的CBAM(convolutional block attention module)的優化效果,將3種機制分別引入YOLO v5骨干網絡輸出端訓練300次并對比結果,各注意力機制添加位置如圖5所示,評價指標對比如表3所示。
如表3所示,相對于YOLO v5原模型,添加3種注意力機制后,P、R、mAP均有不同程度的提升。其中,在CBAM機制的作用下,P、R、mAP分別較原模型提升了2.1、2.5、1.2百分點,在3種機制中最為明顯,因此將效果較好的CBAM機制添加至YOLO v5模型中。CBAM機制的結構圖如圖6所示。
3.2" 替換默認損失函數
YOLO v5s默認采用CIoU損失函數(也支持GIoU、DIoU)。然而CIoU雖然在IoU損失中引進了懲罰項緩解梯度消失的問題,但其使用的是寬和高的相對比例,一旦預測框與真實框(GT框)呈線性比例時,懲罰項就不再起作用,若它們的方向不匹配也會導致效率降低[18]。針對以上問題引入Focal-
EIoU損失函數,它由EIoU 損失函數和FocalL1損失函數組成,其中EIoU損失函數直接使用了邊長的數值作為懲罰項,而FocalL1損失函數可以通過給低質量樣本更小的梯度來進行抑制。而通過整合兩者,得到了最終的Focal-EIoU損失函數,它可表示為式(4)和式(5)。
LFocal-EIoU=IoUγLEIoU;(4)
LEIoU=LIoU+Ldis+Lasp。(5)
式中:γ是一個用于控制曲線的超參數,取γ=0.5;IoU是真實框和預測框的重疊率;LIoU為IoU損失;Ldis為距離損失;Lasp為邊長損失。以YOLO v5 5.0為例,若要啟用該損失函數,則需在utils/gengral.py中添加Focal-EIoU損失函數代碼并在utils/loss.py中啟用。不同損失函數在YOLO v5模型中的訓練效果如表4所示。
從表4可以看出,Focal-EIoU相對于3種默認支持的損失函數對目標檢測的效果明顯提升;與CIoU損失函數相比,準確率提升了2.2百分點;召回率提升了3.1百分點;平均精度均值提升了2.3百分點,因此將默認損失函數替換為Focal-EIoU。
3.3" Soft-NMS非極大值抑制算法
非極大值抑制(NMS)是目標檢測后處理中去
除冗余檢測框的方法。傳統的NMS算法會直接刪除IoU大于閾值的檢測框,判斷方法較為簡單粗放,對于類似草莓葉片這類重疊部分較大的目標易出現漏檢錯檢。針對此類問題,UMIACS提出了Soft-NMS算法,其核心思想是確定置信度最大的候選框后,不是簡單地刪除重疊度高的邊界框,而是通過減小重疊框的分數來保留它們,以允許更多的框同時存在,從而提高檢測的魯棒性,其計算公式如式(6)所示[19-20]。
si=si""""""" IoU(M,Bi)lt;Nt
si[1-IoU(M,Bi)]IoU(M,Bi)≥Nt。(6)
若要在YOLO v5中使用Soft-NMS算法,則需要在general.py中添加Soft-NMS模塊并啟用。其對于重疊目標檢測的改善效果較為明顯,本研究選擇Soft-NMS的IoU為0.6,其實際使用效果如圖7所示。
從圖7可以看出,下方的2張草莓葉片具有一定的重疊部分,在經過經典NMS算法后處理后,只生成了置信度較高的一個候選框而錯誤地過濾掉了另一個候選框。而在Soft-NMS算法處理后,具有重疊部分的葉片被正確識別,從而證明算法對于此類難以避免遮擋的環境具有降低漏檢率的效果。
3.4" 增加小目標檢測頭
YOLO v5分別由8、16、32倍下采樣后得到P3、P4、P5這3個檢測頭。當輸入640像素×640像素×3像素的圖片后,產生80像素×80像素×255像素、40像素×40像素×255像素、20像素×20像素×255像素的特征圖,分別用于大、中、小目標的檢測[21]。但是8倍下采樣倍數對于類似葉片這類小目標來說倍數較大,因而檢測效果不佳。因此,本研究增加一個P2檢測頭,通過4倍下采樣得到160像素×160像素×255像素的特征圖,再對4倍下采樣圖片進行特征融合,以改善針對小目標的檢測能力,改進后的YOLO v5 檢測頭部分如圖8所示。
在YOLO v5s中增加P2檢測頭的步驟為:修改YOLO v5s.yaml文件,在錨點框中添加P2檢測頭,并在檢測頭部分增加上采樣和拼接進行特征融合代碼。
4" 改進摸型試驗結果與安卓(Android)移植
本研究將CBAM注意力機制、Focal-EIoU損失函數、Soft-NMS非極大值抑制算法、P2小目標檢測頭添加至YOLO v5模型中,并將改進的模型命名為YOLO v5-CFSP(CBAM-Focal-EIoU-Soft-NMS-P2)。它針對YOLO v5原模型的部分問題進行了改進,并提升了對于重疊目標和小目標的檢測能力,改進后的YOLO v5-CFSP結構圖如圖9所示。
4.1" 試驗結果與分析
使用該改進模型與原模型分別進行250次訓練,其余平臺與環境參數配置均與“2”節所用相同。識別結果對比圖如圖10所示,改進模型與原模型的準確率、回歸率、mAP、損失值的曲線對比圖如圖11所示,對于不同缺素種類或正常形色特征葉片的識別效果對比如表5、表6所示。
從識別結果對比來看,無論是YOLO v5還是YOLO v5-CFSP模型均能正確識別大部分的缺素葉片或正常葉片,但是在置信度方面YOLO v5-CFSP模型在大多數場景中具有較明顯的優勢。另外,在圖 10-a 和圖10-b中,原模型錯誤地將2張葉片識別為1張,而優化模型進行了正確的識別;在圖 10-c 和圖10-d中,原模型在左下角發生了漏檢,改進模型則無此問題;在圖10-e和圖10-f中原模型未能正確識別左側重疊的葉片,改進模型進行了成功識別;在圖10-g和圖10-h中原模型發生了錯檢,將1張正常形色特征的葉片錯誤地識別為缺氮圖片,而改進模型對此進行了修正。
從圖11可以看出,YOLO v5-CFSP的檢測效果明顯提高,在P、R、mAP和驗證集目標損失值曲線顯著優于YOLO v5原模型。改進模型在前50次的訓練中波動稍大,且在收斂速度方面優勢不明顯,
這可能是由于模型改進后運算量增大了,但是也因此換取了mAP明顯提升,即提升速度更快,且較原模型更平穩[22-24]。
從表5、表6的單個缺素類別檢測的性能指標來看,缺氮和缺鈣檢測的綜合識別率較高,但缺磷和缺鉀的準確率和召回率略低于前兩者。這可能是因為缺磷與缺鉀葉片具有相似的形色特征,由于二者都有葉片發紅的特征,區別僅在于位置和范圍,因此造成了正確識別率偏低,但針對二者的識別仍在改進模型中取得了一定的提升。
從表7中可以看出,改進后的YOLO v5模型相較于未改進的模型準確率提升了6.47百分點,召回率提升了6.01百分點,mAP提升了7.73百分點;相較于YOLO v7分別提升了4.59、4.46、5.06百分點,在這些關鍵的性能指標中也明顯優于Faster-RCNN、SSD算法。但是,由于模型的復雜程度增加,導致運算時間略有增長,檢測速度也稍慢于YOLO v5原模型,這是為了提升檢測能力而難以避免。但是 YOLO v5-CFSP 模型仍然可以正常部署在絕大多數的平臺上,并不會造成過多的運算負載,并仍然遠超最低24幀/s的實時檢測要求[25]。綜合以上試驗結果可知,本研究所采用的改進方案可以有效提升YOLO v5算法的檢測性能,達到相對于其他主流算法更優秀的草莓葉片缺素診斷效果。
4.2" 模型安卓端部署
考慮到日后的實際應用,在模型訓練完成后,使用NCNN框架將模型移植至安卓平臺,以進一步驗證可靠性和實用性。NCNN框架由深圳市騰訊計算機系統有限公司開發并開源,可將包括YOLO v5在內的多種深度學習模型部署于Android設備中[26]。
其關鍵步驟為:將訓練完成的“best.pt”權重文件轉化為“onnxsim”文件,并通過該文件生成“best.bin”和“best.pararm”文件。只需要將這二者放入Android工程內的“assets”文件夾下,再將“class_name”修改為模型內labels的名稱進行打包即可實現基本的識別功能。其中,安卓客戶端使用Android Studio工具基于API 30進行開發,Android Studio為谷歌公司發布的官方安卓開發工具,客戶端的運行界面如圖12所示。
框架支持使用手機CPU或GPU進行識別,圖為GPU識別結果。本試驗使用設備為Samsung Galaxy s23手機,Android版本為13,SoC型號為Snapdragon 8Gen2。
5" 結論
本研究提出了一種基于形色特征的草莓缺素診斷方法,該方法使用基于卷積神經網絡的機器視覺技術進行特征識別。通過實地拍攝和網絡獲取等
方式構建數據集并進行擴增,再針對幾種主流模型進行試驗,根據其性能指標選擇YOLO v5作為主要算法。
針對YOLO v5算法進行改進,在骨干網絡輸出端引入了注意力機制,替換了損失函數和傳統非極大值抑制算法,并新增小目標檢測層。著重改進了YOLO v5算法存在的問題,并增強了重疊目標和小目標的檢測能力。
將改進后的YOLO v5網絡與原模型以及其他模型進行對比試驗,驗證了改進方案的有效性,其準確率、召回率、mAP、F1分數等關鍵指標和識別效果提升幅度明顯。
將模型通過NCNN框架移植至安卓平臺,進一步驗證了其實用性,為后續系統的搭建并投入實際使用奠定了理論基礎。
參考文獻:
[1]呂啟昌. 設施草莓水肥控制模型研究與設計[D]. 泰安:山東農業大學,2023.
[2]韓" 旭. 基于卷積神經網絡的番茄葉片缺素識別方法研究[D]. 楊凌:西北農林科技大學,2022.
[3]陳利蘇. 基于機器視覺技術的水稻氮磷鉀營養識別和診斷[D]. 杭州:浙江大學,2014.
[4]王" 熠. 基于形色組合特征的蘋果樹葉片缺鉀診斷模型構建[D]. 泰安:山東農業大學,2022.
[5]張鑫宇. 基于機器學習的水培生菜缺素診斷模型研究[D]. 楊凌:西北農林科技大學,2022.
[6]桑" 東. 基于機器學習的水培生菜控制系統研究與設計[D]. 泰安:山東農業大學,2023.
[7]王良龍. 基于近紅外光譜的梨葉缺素識別方法研究[D]. 合肥:安徽農業大學,2022.
[8]趙嘉威,田光兆,邱" 暢,等. 基于改進YOLO v4算法的蘋果葉片病害檢測方法[J]. 江蘇農業科學,2023,51(9):193-199.
[9]王宇博,馬廷淮,陳光明. 基于改進YOLO v5算法的農田雜草檢測[J]. 中國農機化學報,2023,44(4):167-173.
[10]Vandecasteele B,van Waes C. Fast screening of total nutrient contents in strawberry leaves and spent growing media using NIRS[J]. Frontiers in Plant Science,2023,14:1210791.
[11]馬婉婷,尚" 偉,谷" 晏,等. 草莓感官評價模型方法比較[J]. 現代食品科技,2023,39(11):33-40.
[12]Ali Al-Qady R A,Alimam N M A. Impact of nano NPK fertilizer and humic acid application on vegetative growth of three strawberry cultivars[J]. IOP Conference Series(Earth and Environmental Science),2023,1213(1):012062.
[13]何" 斌,張亦博,龔健林,等. 基于改進YOLO v5的夜間溫室番茄果實快速識別[J]. 農業機械學報,2022,53(5):201-208.
[14]許志剛. 基于深度學習的肉雞目標檢測及狀態分析[D]. 泰安:山東農業大學,2023.
[15]周紹發,肖小玲,劉忠意,等. 改進的基于YOLO v5s蘋果樹葉病害檢測[J]. 江蘇農業科學,2023,51(13):212-220.
[16]孫豐剛,王云露,蘭" 鵬,等. 基于改進YOLO v5s和遷移學習的蘋果果實病害識別方法[J]. 農業工程學報,2022,38(11):171-179.
[17]林文樹,張金生,何乃磊. 基于改進YOLO v4的落葉松毛蟲侵害樹木實時檢測方法[J]. 農業機械學報,2023,54(4):304-312,393.
[18]姜國權,楊正元,霍占強,等. 基于改進YOLO v5網絡的疏果前蘋果檢測方法[J]. 江蘇農業科學,2023,51(14):205-215.
[19]Bodla N,Singh B,Chellappa R,et al. Soft-NMS:improving object detection with one line of code[J/OL]. ArXiv,2017:1704. (2017-08-08)[2023-05-10]. http://arxiv.org/abs/1704.04503v2.
[20]方文博,郭永剛,關法春,等. 基于改進YOLO v5s算法的大豆葉片蟲洞的識別[J]. 湖南農業大學學報(自然科學版),2023,49(1):127-132.
[21]楊斷利,王永勝,陳" 輝,等. 基于SEEC-YOLO v5s的散養蛋雞日常行為識別與統計系統[J]. 農業機械學報,2023,54(9):316-328.
[22]李宗南,蔣" 怡,王" 思,等. 基于YOLO v5模型的飛蓬屬入侵植物目標檢測[J]. 中國農機化學報,2023,44(7):200-206.
[23]張境鋒,陳" 偉,魏慶宇,等. 基于Des-YOLO v4的復雜環境下蘋果檢測方法[J]. 農機化研究,2023,45(5):20-25.
[24]楊國亮,王吉祥,聶子玲. 基于改進型YOLO v5s的番茄實時識別方法[J]. 江蘇農業科學,2023,51(15):187-193.
[25]曾晏林,賀壹婷,藺" 瑤,等. 基于BCE-YOLO v5的蘋果葉部病害檢測方法[J]. 江蘇農業科學,2023,51(15):155-163.
[26]廖曉輝,謝子晨,路銘碩. 基于YOLO v5s和Android部署的電氣設備識別[J]. 鄭州大學學報(工學版),2024,45(1):122-128.