












摘要:為解決檸檬初期病蟲害特征部位小難以檢測和可以利用數據集較少的問題,提出一種YOLOv5-DK檢測算法。該算法是以YOLOv5為基礎,采用K-Means++重新聚類檸檬初期蟲害部位錨框,緩解檸檬初期蟲害特征小的問題;同時提出一種新的輕量化Denseneck-2模塊,該模塊是利用DenseNet網絡中復用的思想,讓檢測算法每一層輸入都有前面每一層的特征信息,使得YOLOv5-DK對檸檬初期病蟲害樣本量的需求下降。與原始的YOLOv5檢測算法相比較,新的YOLOv5-DK檢測算法在檢測的平均精度上面提高3.4%,漏檢率下降2.1%,算法模型的參數量減輕6.3%,表明該算法在小樣本和小目標的應用場景下性能更優。
關鍵詞:檸檬;初期病蟲害;輕量化;小樣本;小目標
中圖分類號:TP391.41; S432
文獻標識碼: A
文章編號:20955553 (2024) 070249
06
Study on a YOLOv5-DK algorithm for lemon initial pests and diseases detection
Xiong Zhigang, Chen Weizhen
(1. School of Electrical and Electronic Engineering, Wuhan Polytechnic University, Wuhan, 430048, China)
Abstract:
In order to solve the problems that the characteristic parts of insect pests in the early stage of lemon were too small and difficult to detect along with the limited data sets, a YOLOv5-DK detection algorithm was proposed. The algorithm was based on YOLOv5, and adopted K-Means++ to re-cluster the anchor frame of the initial pest location of lemon, alleviating the problem of small pest characteristics at the initial stage of lemon. Meanwhile, a new lightweight Denseneck-2 module was proposed, which applied the idea of reuse in the DenseNet network, so that" the input of each layer of the detection algorithm had the characteristic information of each layer in front of it, which decreased the YOLOv5-DK demand on the initial sample volume of insect pests of lemons. The new YOLOv5-DK detection algorithm demonstrated higher competencies than the original one, including an increase of 3.4% in the average accuracy of detection, a decrease of 2.1% in the missed detection rate, and a reduction of 6.3% in the number of parameters of the algorithm model. These results showed that the algorithm performed better in the application of small samples and small targets.
Keywords:
lemon; initial pests and diseases; lightweight; small sample; small target
0 引言
在世界柑橘產業當中,檸檬產量位居第三位,僅次于橙和寬皮橘,而檸檬里面富含的維生素C、D-檸檬烯、橙皮苷、檸檬酸等多種功能成分[1],在抗壞血病促進傷口愈合,預防衰老,預防心血管疾病,美白護膚等方面健康和藥用價值都很高。但是經過調查發現在檸檬的生長過程當中,經常會伴隨著一些害蟲的侵襲,導致檸檬的產量大大降低,檸檬的質量大打折扣,對于種植戶和消費者來說都是一個很大的損失。因此對于病蟲害的準確檢測至關重要。
對于病蟲害的檢測,最初是果農們憑借肉眼去觀察蟲害葉片的癥狀,然后再去判斷具體的蟲害,這種方法不僅需要耗費大量的人力與時間,同時還存在許多的經驗因素在里面。后來對病蟲害檢測主要采用人工設計特征的圖像識別方法,這種檢測難度較大而且還依靠運氣[2],并且還不能夠自動從原始圖像中學習和提取特征[3]。近年來隨著信息化進入農業領域,對于各類作物病蟲害的檢測也由人工檢測轉變成了基于深度學習的識別與檢測。基于深度學習的目標檢測算法打破了人工檢測中經驗的壁壘,不僅能夠快速定位蟲害的方位,同時還有很高的檢測精度。
目前在深度學習領域,目標檢測所使用的算法主要有兩類[4],一種是基于回歸的One Stage單階段的檢測算法,另一種是基于候選框的Two Stage雙階段檢測算法。其中單階段檢測算法主要有YOLO系列算法[58]和SSD算法[9]等,Wang等[10]對番茄的病蟲害的檢測,在YOLOv3中通過采用擴張卷積層代替骨干網絡中的卷積層等,在保持高分辨率和感受野的同時,提高了對蟲害檢測能力。李昊等[11]對柑橘的病蟲害檢測,在YOLOv4當中通過修改網絡和標注框聚類,在小樣本數據當中提高了檢測的準確率;而雙階段檢測算法主要有R-CNN系列[1214]。宋中山等[15]在對柑橘的葉片病蟲害檢測當中提出了一種二值化的R-CNN,將二階段的全卷積神經網絡代替原始的全連接層,提高了訓練的速度,實現了網絡的輕量化。
分析發現,目前對農作物病蟲害的檢測中,檢測對象多為被病蟲侵害很嚴重的葉片,這些葉片蟲害面積很大且分布比較稀疏,相對來說比較容易進行檢測,但是此時已經屬于中期或者晚期的病蟲害,對預防蟲害的意義不大。另外對植物的病蟲害檢測,有許多的蟲害會隨著季節的變化和周圍環境的影響,導致捕捉到的蟲害照片少,因此有用的蟲害數據集比較少,給研究帶來了困難。
檸檬初期的蚜蟲蟲害部位常常呈現細小的白色點狀,并且分布密集,依靠人工檢測工作量太大。本文將目標檢測算法YOLOv5引入到檸檬初期的蚜蟲蟲害中。同時在此基礎上提出一種新的YOLOv5-DK目標檢測算法。
1 檸檬病蟲害檢測的基礎框架
檸檬初期蚜蟲蟲害的檢測將采用以YOLOv5為基礎的框架,如圖1所示,主要由四個部分組成,分別是輸入端、特征提取端、特征融合端、檢測端。這四個部分組成了檸檬初期蚜蟲蟲害的檢測流程。
YOLOv5檢測的輸入端主要功能是對輸入的檸檬初期蚜蟲蟲害特征部位圖片進行處理,同時采用自適應錨框設計,在YOLOv5里面采用的是K-Means聚類的方法進行聚類錨框,通過檸檬初期蟲害的真實位置與預設位置之間的比對調整來獲取最終的蚜蟲蟲害特征部位邊框;在特征提取端,主要有三層組成,第一層主要是卷積塊和4個C3模塊組成,其中第一層C3模塊和卷積塊之間是以互相間隔的方式進行連接,第二層是C3模塊的內部,是由Bottleneck模塊與卷積塊組成的一個類殘差網絡,在特征提取端的內部,每一個C3都有n個Bottleneck,第三層是Bottleneck內部,是一個殘差連接結構。特征提取端通過控制Bottleneck的內部結構和n個Bottleneck與卷積塊之間的連接方式,保證了在對檸檬初期蚜蟲蟲害部位進行特征提取的同時可以獲取到更多的蚜蟲蟲害檢測的特征信息;在特征融合端,主要采用的是路徑聚合網絡[16],在原始對檸檬初期蚜蟲蟲害的特征信息自頂向下融合的基礎之上,又加入了一條自底向上的檸檬初期蚜蟲蟲害特征信息融合的路徑,保證了在進行檸檬初期蚜蟲蟲害特征信息融合的同時,減少了檸檬初期蚜蟲蟲害深層特征信息和淺層特征信息融合的距離,縮短了特征信息融合的時間;在檢測端當中,主要是由控制蚜蟲蟲害特征部位的多個輸出框交并比[17]和非極大值抑制這兩部分組成,通過選擇蚜蟲蟲害特征部位合適的置信度以獲取最佳的預測框,由此輸出最佳的蚜蟲蟲害部位檢測結果。
2 YOLOv5-DK檸檬病蟲害檢測算法
為了能夠更加準確地檢測檸檬初期蚜蟲蟲害部位,在YOLOv5檢測算法的基礎之上,提出一種新的檢測算法YOLOv5-DK。與原始的YOLOv5檢測算法不同,YOLOv5-DK檢測算法內部采取一種輕量化的模型,減少對檸檬初期蚜蟲蟲害檢測過程當中特征參數量的索取,轉而增加對原有特征參數的復用;同時YOLOv5-DK檢測算法通過重新聚類,增強對檸檬初期蚜蟲蟲害特征部位的聚焦能力,減少對檸檬初期蚜蟲蟲害部位的漏檢與其他干擾部位誤檢的概率。
圖2是YOLOv5-DK檢測算法的系統框圖,YOLOv5-DK通過預先采用Denseneck來對蚜蟲蟲害部位特征提取,然后再借助于初始時蚜蟲蟲害部位的特征錨框的K-Means++聚類來對檸檬初期蚜蟲蟲害特征部位進行訓練,以此來得出最佳的分類模型,最后將檸檬初期蚜蟲蟲害部位給檢測出來。
2.1 降低參數量的Denseneck模型
如圖3所示,在YOLOv5檢測算法中,在C3模塊中采用Bottleneck模塊的殘差連接[18],增加YOLOv5特征提取端的寬度,減輕因卷積層數的增加而帶來的梯度消失或者梯度爆炸網絡退化的一些問題,加強了對檸檬初期蚜蟲蟲害部位的特征信息提取。但是該Bottleneck模塊需要大量的參數才能夠獲取特征部位的信息,對檸檬初期的蚜蟲蟲害這種小樣本的數據集進行特征提取時,會因為訓練過程當中數據量不足而使得訓練出的模型可用性較低、漏檢和錯誤的背景部位預測出來的較多,使得最終對蚜蟲蟲害特征部位的檢測結果不理想。
為了解決上述YOLOv5檢測算法所出現的問題,新的檢測算法YOLOv5-DK提出一種基于DenseNet網絡[19]而來的Denseneck模塊,如圖3所示,主要是由1×1卷積和3×3卷積這對卷積組構成,利用式(1)可得第n層的輸入
Xn=f(X0,X1,X2,…,Xn-1)
(1)
式中:
n——層數。
Denseneck的每一個卷積組的輸入都包含前面所有卷積組的通道數,但每一個卷積組輸出通道數都是一樣的固定值。在YOLOv5-DK的特征提取端,Denseneck通過復用前面每一層檸檬初期蚜蟲蟲害的特征信息,因此與Bottleneck相比,在加強前向傳播的同時只需要更少的蟲害特征信息作為輸入,就能使得YOLOv5-DK檢測算法得到更好的蚜蟲蟲害部位的特征提取能力,因而YOLOv5-DK檢測算法對少參數量的檸檬初期蚜蟲蟲害部位更具有可抗性。但是此時由于Denseneck模塊復用了前面所有層蚜蟲蟲害部位特征信息的通道數,使得計算量增加,為了解決這個問題,新的Denseneck模塊里面將不加太多的卷積組個數,而是先采取少量的卷積組來進行測試,最終達到一個合適的輕量化Denseneck模塊,以此減輕特征提取端由于復用帶來的蚜蟲蟲害部位特征信息過大而導致的計算量爆炸問題,同時YOLOv5-DK檢測算法為了檢測隨著卷積的加深檸檬初期蚜蟲蟲害特征信息的消失的情況,如圖4所示,先只在特征提取端的最后一個C3部位引入Denseneck模塊,而其余的C3部位還是采用Bottleneck模塊。
2.2 K-Means++重新聚類
檸檬初期的蚜蟲蟲害部位比較小,原始YOLOv5采用K-Means聚類法對大量數據集進行聚類,使得聚類出來的錨框具有普遍性,但是對檸檬初期蚜蟲蟲害部位特征小且分布密集,使用原始聚類出來的錨框來對檸檬初期蚜蟲蟲害部位進行檢測時,會出現許多真實位置與預設位置的比對不適合。同時K-Means聚類采用的是聚類前手動規定k個蚜蟲蟲害部位的聚類中心,使得聚類出來的結果帶有人為因素的干擾。因此,新YOLOv5-DK檢測算法內部將采用K-Means++重新為檸檬初期的蚜蟲蟲害特征部位進行聚類錨框。
圖5是YOLOv5-DK檢測算法里面的K-Means++初期蚜蟲蟲害部位聚類的流程圖,與K-Means聚類不同,在所有的檸檬蚜蟲蟲害部位的特征部位數據中里面隨機均勻的獲取一個簇中心,然后借助式(2)可得每個樣本點的概率。
p=d(i)2∑i∈Id(i)2×100%
(2)
式中:
p——每個樣本點計算出來的概率,%;
d(i)2——
第i個蚜蟲樣本點到簇中心的最短距離,cm;
i——第i個蚜蟲蟲害樣本點;
I——所有的蚜蟲蟲害樣本點。
通過計算所有檸檬初期蚜蟲蟲害部位的數據到檸檬初期蚜蟲蟲害部位簇中心的最短與其相應的概率p,然后將最大那個蚜蟲蟲害部位概率p的點作為下一個檸檬初期蚜蟲蟲害特征的簇中心點。直到找到預先規定的k個蚜蟲害特征部位的簇中心,然后再將所有蚜蟲害部位的特征數據點按照到簇中心的最短距離分成k個蚜蟲蟲害部位的聚類集。
3 試驗
3.1 試驗設計
3.1.1 數據集介紹
試驗使用的檢測數據集來自LeLePhid的檸檬葉片[20]蚜蟲檢測集侵害程度的圖像數據集,共有665張照片,其中健康的檸檬葉片照片330張,含有初期蚜蟲病蟲害的檸檬葉片照片335張。本次試驗采用的是335張含有蚜蟲病蟲害的檸檬葉片照片,然后將這335張照片按照近似8∶1∶1的比例分成訓練集(265張)、測試集(35張)、驗證集(35張)。試驗當中所有的蚜蟲蟲害部位的圖片標注都是在1.8.6版本的LabelImg下進行。圖6為原始檸檬蚜蟲蟲害的數據集,白色點狀聚集的蟲害部位就是蚜蟲所留。
3.1.2 試驗平臺
本次試驗在GTX 1050Ti+Torch1.10.0+CUDNN7.6.5+Python3.8.5進行,批量設為8,一共訓練100輪,填充后的圖片大小是640像素×640像素。
3.1.3 試驗評價指標
試驗采用以下5個評價指標:檢測精確度P,%;檢測召回率R,%;一次訓練時間H,h;類平均精度mAP,%;模型參數量Params,M。
3.2 YOLOv5-DK蚜蟲檢測試驗
3.2.1 Denseneck內部卷積組個數
為了減輕復用造成的檸檬初期蚜蟲蟲害部位特征信息量爆炸的問題,需要在Denseneck模塊里面的卷積組的個數,為此先對Denseneck模塊里面的卷積組個數進行了測試。
Bottleneck代表的是原始的YOLOv5測試結果,從表1可以看出,與原始的YOLOv5相比,在采用Denseneck模塊的YOLOv5-DK檢測算法中,對檸檬初期蚜蟲特征部位的檢測參數量Params要比原始的YOLOv5降低5.6%,新的算法呈現出輕量化的特征。同時在新網絡YOLOv5-DK中,Denseneck里面有三種不同的卷積組,其中-1、-2、-3分別代表卷積組的個數,3種不同的卷積組個數與原始算法相比,對檸檬初期蚜蟲蟲害部位檢測的精確度得到了提升、訓練速度加快。綜合檢測指標可知,YOLOv5-DK檢測算法里面的Denseneck將采用2個卷積組來對檸檬初期的蚜蟲蟲害進行檢測。
3.2.2 引入Denseneck-2的位置
在YOLOv5的特征提取端有4個C3模塊,在Denseneck-2的測試中,YOLOv5-DK只有在第4個C3部位采用了Denseneck-2模塊。但是如果在前面的幾個C3部位也添加Denseneck-2模塊,是否可以獲取一個更加輕量化性能更加優秀的檸檬初期蚜蟲蟲害檢測的算法。于是基于YOLOv5-DK檢測算法的特征提取端提出五種方案:方案1是將特征提取端中所有的C3都用Denseneck-2結構。方案2是將特征提取端中第2個C3和第4個C3使用Denseneck-2結構。方案3是將特征提取端中第2個C3和第3個C3使用Denseneck-2結構。方案4是將特征提取端中第2個C3使用Denseneck-2結構。方案5是將特征提取端中第3個C3使用Denseneck-2結構。
從表2可以看出,對檸檬初期蚜蟲蟲害的特征檢測中,方案1中YOLOv5-DK檢測算法的特征提取端全部采用Denseneck-2的所需檸檬初期蚜蟲的特征參數量最少,相比原始的檸檬初期蚜蟲檢測算法減少了10.5%,而方案2對檸檬初期的蚜蟲的檢測精確度最強,方案4的類平均精確最強,而方案3和方案5的檢測結果處于中間水平。綜合表3中的三個性能指標來看,為了適合檸檬初期蚜蟲的檢測,在YOLOv5-DK的特征提取端將采取方案2來進行。
3.2.3 K-Means++蚜蟲特征聚類
為了查看樣本數據集中檸檬初期蚜蟲的特征大小,在YOLOv5-DK檢測算法內部將采用K-Means++聚類,由圖7可知,左邊表示的是原始預設的錨框分布,相比較之下右邊采用的是K-Means++下檸檬初期蚜蟲的真實特征大小分布,要比預設的錨框小。因而使用K-Means++聚類的檸檬初期蚜蟲特征大小分布的錨框更加適合。
3.3 蚜蟲檢測結果
為評估新的算法YOLOv5-DK中Denseneck-2模塊和新聚類錨框改動與他們之間的融合對原算法在檸檬初期蚜蟲檢測優化的程度,設計消融試驗如表3。從表3可以看出,Denseneck-2主要是改善初期蚜蟲蟲害檢測算法模型的參數量,同時提高了檢測精確度,而聚類出來的新錨框主要是降低了檸檬初期蚜蟲蟲害部位的漏檢率,而整體的YOLOv5-DK檢測算法與原始的YOLOv5相比,在檢測檸檬初期蚜蟲蟲害的參數量上下降6.3%,檢測精確度上升3.4%,對于檸檬初期蚜蟲的特征部位漏檢率下降2.1%。
3.4 蚜蟲檢測結果分析
對于檸檬初期蚜蟲蟲害部位樣本量少容易出現檢測精度不足,同時由于檸檬初期蚜蟲特征部位小常出現漏檢的情況。通過優化YOLOv5檢測算法提出新的檢測算法YOLOv5-DK,優化后的檢測結果如圖8所示,可以看出,YOLOv5-DK在相同的蚜蟲蟲害部位檢測的精確度有所提高,能夠將蚜蟲蟲害部位檢測出來。同時,對于初期蚜蟲蟲害部位出現漏檢的情況和如圖8(c)中標記出來出現誤檢的情況,YOLOv5-DK降低對非蚜蟲蟲害部位的檢測率,避免錯誤檢測的發生,保證將檸檬初期蚜蟲蟲害部位檢測能夠更加準確。
4 結論
1) 為解決檸檬初期蚜蟲蟲害中樣本可用數據集較少和特征部位小難以檢測的問題,提出一種新的檢測算法YOLOv5-DK,該算法通過對Denseneck模塊中卷積組個數探討和添加位置的測試,以及對檸檬初期蚜蟲特征部位大小的合適性研究,先后提出輕量化的Denseneck-2模型和引入K-Means++模型。探究這兩種模型各自作用下的檢測效果和共同作用下蚜蟲蟲害部位的檢測效果。
2) YOLOv5-DK檢測算法在對檸檬初期蚜蟲蟲害部位檢測當中,通過調節Denseneck當中卷積組的個數,得到Denseneck-2模型,使得算法的模型參數量下降5.6%;控制Denseneck-2在特征提取端的位置,對于檸檬初期蚜蟲蟲害部位的檢測,精確度和mAP分別上升3%和1.5%。采用K-Means++模型增強對于蚜蟲蟲害部位的聚焦能力,對檸檬蚜蟲蟲害部位的檢測精確度上升2.1%,漏檢率下降3.9%。最終的YOLOv5-DK檢測算法對檸檬初期蚜蟲部位檢測中,算法的參數量減輕6.3%,算法的精確度提升3.4%,漏檢率下降2.1%,檢測效果要優于未改進YOLOv5檢測算法。
參 考 文 獻
[1]朱春華, 周先艷, 李進學, 等. 中國檸檬主要營養功效及產品開發研究進展[J].包裝與食品機械, 2018, 36(3): 48-53.
[2]Liu J, Wang X. Plant diseases and pests detection based on deep learning: A review [J]. Plant Methods, 2021, 17: 1-18.
[3]Kumar S, Kaur R. Plant disease detection using image processing-a review [J]. International Journal of Computer Applications, 2015, 124(16): 6-9.
[4]劉洪江, 王懋, 劉麗華, 等. 基于深度學習的小目標檢測綜述[J]. 計算機工程與科學, 2021, 43(8): 1429-1442.
Liu Hongjiang, Wang Mao, Liu Lihua, et al.A survey of small object detection based on deep learning [J]. Computer Engineering amp; Science, 2021, 43(8): 1429-1442.
[5]Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection [C]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2016: 779-788.
[6]Redmon J, Farhadi A. YOLO9000: Better, faster, stronger[C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2017: 7263-7271.
[7]Redmon J, Farhadi A. YOLOv3: An incremental improvement [J]. ArXiv Preprint ArXiv: 1804.02767, 2018.
[8]Bochkovskiy A, Wang C Y, Liao H Y M. Yolov4: Optimal speed and accuracy of object detection [J]. ArXiv Preprint ArXiv: 2004.10934, 2020.
[9]Liu W, Anguelov D, Erhan D, et al. SSD: Single shot multibox detector [C]. Proceedings of the 14th European Conference on Computer Vision. Berlin, Germany: Springer Verlag, 2016: 21-37.
[10]Wang X, Liu J, Zhu X. Early real-time detection algorithm of tomato diseases and pests in the natural environment [J]. Plant Methods, 2021, 17(1): 1-17.
[11]李昊, 劉海隆, 劉生龍. 基于深度學習的柑橘病蟲害動態識別系統研發[J]. 中國農機化學報, 2021, 42(9):195-201, 208.
Li Hao, Liu Hailong, Liu Shenglong. Research on dynamic identification system of citrus diseases and pests based on deep learning [J]. Journal of Chinese Agricultural Mechanization, 2021, 42(09): 195-201, 208.
[12]Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2014: 580-587.
[13]Girshick R. Fast R-CNN [C]. Proceedings of the IEEE International Conference on Computer Vision, 2015: 1440-1448.
[14]Ren S, He K, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks [J]. Advances in Neural Information Processing Systems, 2015, 28.
[15]宋中山, 汪進, 鄭祿, 等. 基于二值化的Faster R-CNN柑橘病蟲害識別研究[J]. 中國農機化學報, 2022, 43(6): 150-158.
Song Zhongshan, Wang Jin, Zheng Lu, et al. Research on citrus pest identification based on binary Faster R-CNN [J]. Journal of Chinese Agricultural Mechanization, 2022, 43(6): 150-158.
[16]Liu S, Qi L, Qin H, et al. Path aggregation network for instance segmentation [C]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2018: 8759-8768.
[17]Rezatofighi H, Tsoi N, Gwak Jy, et al. Generalized intersection over union: A metric and a loss for bounding box regression [C]. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2019: 658-666.
[18]He K, Zhang X, Ren S, et al. Deep residual learning for image recognition [C]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2016: 770-778.
[19]Huang G, Liu Z, Maaten L, et al. Densely connected convolutional networks [C]. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2017: 4700-4708.
[20]Parraga Alava J, Alcivar Cevallos R, Morales Carrillo J, et al. LeLePhid: An image dataset for aphid detection and infestation severity on lemon leaves [J]. Data, 2021, 6(5): 51.