逄正鈞,董 巒,溫釗發(fā),張世豪,秦立浩
(新疆農(nóng)業(yè)大學(xué)計算機與信息工程學(xué)院,新疆 烏魯木齊 830052)
種子是農(nóng)業(yè)最基本的生產(chǎn)資料,農(nóng)業(yè)收成在很大程度上取決于種子質(zhì)量。千粒質(zhì)量是檢驗種子質(zhì)量的一個重要指標,是1 000 粒種子的質(zhì)量,體現(xiàn)種子大小與飽滿程度,一般測定小粒種子千粒質(zhì)量時是隨機數(shù)出3 組1 000 粒種子,分別稱質(zhì)量,求其平均值,其中最關(guān)鍵和最煩瑣的任務(wù)是精確計算出種子數(shù)目[1]。
目前,在農(nóng)作物種子計數(shù)中主要采用人工、光電式、壓電式和機器視覺4 種方法。人工計數(shù)效率低;光電式、壓電式兩種計數(shù)方法都存在成本高、精度較低、時間長的缺點;基于機器視覺的種子計數(shù)方法計數(shù)速度快、精確度高,但是需要搭建一個符合要求的計數(shù)環(huán)境,對輸入的圖像質(zhì)量要求高且圖像預(yù)處理工作量大,模型泛化能力弱[2-4]。提出一種基于目標檢測技術(shù)并可部署在移動端的種子計數(shù)方法,解決人工計數(shù)慢、計數(shù)儀器設(shè)備成本高且不易攜帶等問題,降低人力、設(shè)備成本,大幅提高計數(shù)效率。
作物種子計數(shù)可視作一種密集的小目標檢測任務(wù),國內(nèi)外研究者嘗試使用深度學(xué)習(xí)方法解決類似研究問題。LIN Zhe 等[5]通過無人機采集的棉株圖像,采用MobileNet 和CenterNet 兩種深度學(xué)習(xí)模型,對棉花苗期植株進行檢測和計數(shù),結(jié)果顯示,CenterNet 模型的F1分數(shù)為87%,對棉花植株檢測計數(shù)具有較好的綜合性能[6-7]。有學(xué)者使用YOLO 檢測大型果園中蘋果的確切數(shù)量,結(jié)果顯示,模型具有更高的實時性,即使蘋果目標在一定程度上重疊也能有效地計數(shù),在真實圖像中平均檢測準確率為91%[8-9]。還有學(xué)者以無人機航拍的云杉可見光圖像為研究對象,構(gòu)建了YOLOv3 云杉計數(shù)模型,結(jié)果顯示,該模型平均計數(shù)準確率為90.24%,優(yōu)于全卷積神經(jīng)網(wǎng)絡(luò)分割加Hough 圓檢測方法[10-11]。王超等[12]為實現(xiàn)成捆鋼筋端面的準確計數(shù),在YOLOv5 模型框架的基礎(chǔ)上增加了空間金字塔池(spatial pyramid pooling,SPP)和小目標檢測層,使用特征金字塔(feature pyramid network,F(xiàn)PN)和路徑聚合網(wǎng)絡(luò)(path aggregation network,PAN)對多尺度特征圖融合以降低密集小目標漏檢率、誤檢率,改進后的模型平均精度均值(mean average precision,mAP)達到了99.9%。研究以6 種常見作物種子構(gòu)建數(shù)據(jù)集,在YOLOX 的基礎(chǔ)上提出YOLOX-P 模型,使其適配密集小目標檢測任務(wù)[13]。
選取6 種常見作物種子作為研究對象,分別為小麥、西瓜籽、玉米、紅豆、花生和葵花籽。使用手機在白色背景下拍攝3 024 像素×3 024 像素的種子可見光圖像,拍攝高度為30~50 cm,采集作物種子圖像共432 張。為保證模型訓(xùn)練效果,進行數(shù)據(jù)集的擴充,利用左右翻轉(zhuǎn)、中心翻轉(zhuǎn)、亮度改變3 種方式進行數(shù)據(jù)增強操作。由此數(shù)據(jù)集中共有圖像1 728 張,其中小麥100 張、西瓜籽424 張、玉米436 張、紅豆168 張、花生200 張和葵花籽400 張。使用LabelImg 軟件進行數(shù)據(jù)標注,按照PASCAL VOC 格式構(gòu)建數(shù)據(jù)集,并按8∶1∶1 的比例將數(shù)據(jù)集劃分為訓(xùn)練集、驗證集和測試集,數(shù)據(jù)集部分圖像如圖1 所示。
圖1 數(shù)據(jù)集部分種子圖像Fig.1 Crop seed image samples
數(shù)據(jù)集共標注西瓜籽框8 480 個、紅豆框9 784 個、葵花籽框8 232 個、玉米框44 736 個、花生框6 888 個和小麥框9 192 個。由圖2 可知,每粒種子的邊界框平均占單幅圖像總像素數(shù)的0.005%~0.066%,數(shù)據(jù)集中的種子屬于較難識別的小目標。
圖2 種子標注框面積占圖像面積的平均比值Fig.2 Average ratio of single seed bounding box to whole image
對種子進行檢測計數(shù)時目標具有尺寸小、稠密、粘連和堆疊的問題,并且不同類別種子的尺寸大小不一,最大種子面積是最小種子面積的15 倍,導(dǎo)致快速準確地統(tǒng)計種子數(shù)量較為困難。基于深度學(xué)習(xí)的目標檢測算法YOLOX 在設(shè)計中引入特征金字塔模塊,進而能夠利用底層細粒度特征,克服了高層次特征語義豐富但分辨率低的問題,從而能夠?qū)D像中的小種子進行準確檢測?;赮OLOX 的這個特點選取其作為種子計數(shù)模型,在對YOLOX 進行初步試驗后,發(fā)現(xiàn)其在檢測小麥等顆粒較小的種子時精確度較低,為此從注意力機制和損失函數(shù)兩方面進行改進,提出了YOLOX-P 模型。
YOLOX 是曠視科技在2021 年提出的高性能檢測器,其研究者將解耦頭、數(shù)據(jù)增強、無錨點及標簽分類等目標檢測領(lǐng)域的優(yōu)秀進展與YOLO 進行了巧妙地集成組合,不僅實現(xiàn)了超越Y(jié)OLOv3、YOLOv4 和YOLOv5的平均精度 average precision(AP),而且取得了極具競爭力的推理速度[14]。
YOLOX 使用YOLOv5 提出的Focus 通道增廣技術(shù),其在一張圖片中每隔一個像素拿到一個值,獲得4 個獨立的特征層,將4 個獨立的特征層進行堆疊,此時寬高信息就集中到了通道信息,輸入通道擴充了4 倍,拼接起來的特征層相對于原先的3 個通道變成了12 個通道,如圖3 所示。此技術(shù)提高了每個點感受野并減少原始信息的丟失,減少網(wǎng)絡(luò)計算量,加快了運行速度。以YOLOv4 提出的CSPDarkNet 作為特征提取網(wǎng)絡(luò)并加入SPP 結(jié)構(gòu),該結(jié)構(gòu)分別由5×5、9×9、13×13 的最大池化層組成,融合不同尺度特征圖的信息完成特征融合,豐富最終特征圖的表達能力[15]。在構(gòu)建特征金字塔時使用PANet 模塊對獲得的有效特征層進行加強特征提取來結(jié)合不同尺度的特征信息,該模塊實現(xiàn)了自頂向下和自底向上的雙向融合,解決了傳統(tǒng)FPN中底層特征無法影響高層特征的問題,提高了網(wǎng)絡(luò)的表征能力[16]。與之前YOLO 版本的解耦頭(YOLO Head)不同,以前所用的YOLO Head 分類和回歸在一個1×1 卷積里實現(xiàn),YOLOX 認為這給網(wǎng)絡(luò)的識別帶來了不利影響。在YOLOX 中,YOLO Head 分別實現(xiàn)分類和回歸,最后預(yù)測的時候才整合在一起。
圖3 Focus 模塊Fig.3 Focus module
2.2.1 注意力模塊CBAM
深度學(xué)習(xí)中注意力機制的核心目標是從眾多信息中選擇出對當前任務(wù)目標更關(guān)鍵的信息,讓神經(jīng)網(wǎng)絡(luò)在執(zhí)行預(yù)測任務(wù)時可以更多關(guān)注輸入中的相關(guān)部分。CBAM 注意力模塊(Convolutional block attention module)是WOO S 等[17]提出的一種輕量注意力模塊,采用兩個獨立的注意力機制,在通道和空間維度上分別進行注意力操作,在通道注意力模塊(CAM)后,接入空間注意力模塊(SAM),實現(xiàn)了通道注意力和空間注意力的雙機制,最后將注意力機制得到的權(quán)重乘以輸入特征圖以進行自適應(yīng)特征細化。其中CAM 具體實現(xiàn)過程如圖4 所示,首先將輸入的特征圖分別進行最大池化操作和平均池化操作得到兩個維度為[C,1,1](C為通道數(shù)量)的權(quán)重向量,通過共享的全連接層MLP 網(wǎng)絡(luò)映射成每個通道的權(quán)重,相加后經(jīng)過Sigmoid 非線性運算輸出得到的通道權(quán)重與原特征圖按通道相乘實現(xiàn)通道注意力的提取。SAM 具體實現(xiàn)過程如圖5 所示,首先特征圖按照通道分別進行最大池化操作和平均池化操作,形成兩個維度為[1,H,W](H、W分別為圖像的高和寬,下同)的權(quán)重向量,即對同一特征點的所有通道池化。將得到的兩張?zhí)卣鲌D進行堆疊,形成[2,H,W]的特征圖空間權(quán)重,經(jīng)過一層卷積層得到一個[1,H,W]的權(quán)重向量,其表示圖上每個點的重要程度,最后經(jīng)過Sigmoid 非線性運算與原特征圖相乘,實現(xiàn)空間注意力的提取,讓網(wǎng)絡(luò)自適應(yīng)關(guān)注需要關(guān)注的地方。
圖4 通道注意力模塊Fig.4 Channel attention module
圖5 空間注意力模塊Fig.5 Spatial attention module
受此啟發(fā),針對小麥種子因遮擋、粘連嚴重導(dǎo)致特征信息不明顯的問題,提出將CBAM 模塊搭建于YOLOX 算法的主干網(wǎng)絡(luò)CSPDarkNet 后,在主干網(wǎng)絡(luò)的第2 個、第3 個、第4 個特征層后分別添加一個CBAM 模塊來更多地關(guān)注遮擋、粘連嚴重的小麥種子,得到改進后的模型YOLOX-P,CBAM 模塊及模型整體結(jié)構(gòu)如圖6 所示。
圖6 YOLOX-PFig.6 YOLOX-P
2.2.2 損失函數(shù)
YOLOX 的損失函數(shù)由3 個部分組成,包括回歸框損失、置信度損失和分類損失,其中回歸框損失為計算真實框和預(yù)測框之間交并比的損失。YOLOX 提供了兩種計算交并比損失的方法,分別是IOU 損失和GIOU損失(generalized IOU loss)。IOU 損失定義非常簡單,即1 與預(yù)測框A和真實框B交并比之間的差值,如式(1)所示,但其只在真實框與預(yù)測框重疊時才有效,在沒有重疊情況下,將不會提供滑動梯度。GIOU 為解決此問題,在IOU 損失的基礎(chǔ)上新增了一個懲罰項,如式(2)所示,以解決檢測框非重疊造成的梯度消失問題。式中A是預(yù)測框,B是真實框,C是預(yù)測框和真實框的最小包圍矩形框。但是GIOU 存在一個問題,如果預(yù)測框完全包著真實框,則GIOU 損失就和IOU損失一樣,無法精確確定錨框位置,造成精度上的損失。ZHENG Z 等[18]提出了利用CIOU 損失來解決此問題,其增加了兩個懲罰項,分別是中心點距離和長寬比。CIOU 如式(3)所示,其中A和B分別表示預(yù)測框和真實框的中心點坐標,ρ(a,b)表示兩點間的歐氏距離,c為預(yù)測框和真實框最小包圍框的對角線長度。長寬比懲罰項如式(4)所示,α是一個正數(shù),ν用來測量長寬比的一致性,其中wgt和hgt分別為真實框的寬和高,w和h分別為預(yù)測框的寬和高,這個懲罰項作用是控制預(yù)測框的寬高能夠盡可能快速地與真實框的寬高接近?;诖耍瑢⒃寄P椭谢貧w框損失中的IOU 損失替換為CIOU 損失,以提高模型訓(xùn)練時損失的收斂速度和精確度。
采用目標檢測算法最基本和常用的評價指標,使用精確度(Precision)、召回率(Recall)、mAP(mean Average Precision)來衡量目標檢測的準確度。True positives(TP)表示被正確地劃分為正例的個數(shù);False positives(FP)表示被錯誤地劃分為正例的個數(shù);False negatives(FN)表示被錯誤地劃分為負例的個數(shù)。其中,召回率表示被正確識別出來的目標與測試集中目標個數(shù)的比值,精確度則表示檢測出來的目標中正確目標的個數(shù);用mAP值衡量平均檢測準確率,mAP越趨近于1,則表明檢測的準確率越高。因千粒質(zhì)量對于種子計數(shù)精確度要求高,在計算以上指標時設(shè)定IOU 閾值為0.6。
精確度計算公式為
訓(xùn)練環(huán)境為Python3.7,CUDA11.0;所有模型的訓(xùn)練均在顯存為16 GB 的NVIDIA Tesla P100 顯卡上進行,所有模型的檢測均在顯存為6 GB 的NVIDIA GeForce RTX 2060 顯卡上進行。
所有模型的訓(xùn)練參數(shù)均統(tǒng)一設(shè)置,訓(xùn)練時輸入圖像大小為640 像素×640 像素,采用隨機初始化訓(xùn)練和預(yù)訓(xùn)練的方法,兩種訓(xùn)練方法Epoch 都設(shè)為100,批處理量設(shè)置為20,其中預(yù)訓(xùn)練分為凍結(jié)訓(xùn)練和解凍訓(xùn)練兩個階段。根據(jù)經(jīng)驗設(shè)置兩階段的初始學(xué)習(xí)率分別為0.001 和0.000 1,其中凍結(jié)訓(xùn)練的Epoch 為20、解凍訓(xùn)練的Epoch 為80,使用余弦退火學(xué)習(xí)率方法,權(quán)值更新權(quán)重設(shè)置為0.000 5,并在訓(xùn)練時使用了隨機縮放方法進行數(shù)據(jù)增強,兩種方法的訓(xùn)練損失如圖7 所示(以YOLOX-P 為例),預(yù)訓(xùn)練相比隨機初始化訓(xùn)練能更快地達到收斂且loss 值能降到更低。
圖7 不同訓(xùn)練方法效果Fig.7 Effect of different training methods
在構(gòu)建的數(shù)據(jù)集上對YOLOX 模型和YOLOX-P 模型進行訓(xùn)練和測試,當IOU 閾值設(shè)定為0.6 時,YOLOX模型在測試集上的mAP值為98.64%,6 類種子的檢測精確度Precision和AP值如表1 所示,結(jié)果表明該模型對于小麥種子計數(shù)的精度較低。
表1 YOLOX 檢測6 類種子的指標數(shù)據(jù)Tab.1 Indicator data for YOLOX detection of six types of seeds單位:%
當IOU 閾值為0.6 時,YOLOX-P 模型在測試集上mAP值達到99.38%,以各類種子的AP、mAP、模型參數(shù)和推理時間作為評價指標對兩種模型進行定量比較,結(jié)果如表2 所示。結(jié)果表明,YOLOX-P 在mAP與小麥種子的AP指標上分別比原始模型提升了0.74 和4.17 個百分點,而模型參數(shù)量僅比原始模型增加了0.09 M,推理時間僅增加2.09 ms。
表2 YOLOX 與YOLOX-P 對比數(shù)據(jù)Tab.2 YOLOX versus YOLOX-P data
為進一步驗證YOLOX-P 模型性能的提升是得益于CBAM 注意力機制還是損失函數(shù)的改進,采用消融試驗進行檢驗,結(jié)果如表3 所示。添加注意力機制或者改進損失函數(shù)對于原始模型的性能均有提升,當既添加CBAM 注意力機制又改進損失函數(shù)時,模型對于種子檢測能達到最好性能。
表3 消融試驗各個指標數(shù)據(jù)Tab.3 Indicator data for ablation study
綜上所述,YOLOX-P 模型可有效解決種子粘連、重疊和不同類別的種子尺寸大小差異性大的問題,實現(xiàn)種子的精確計數(shù)。在硬件為顯存6 GB 的NVIDIA GeForce RTX 2060 顯卡條件下,YOLOX-P 模型對測試集圖像的檢測速度平均為124 ms/張,計數(shù)速度完全滿足實時性要求。
在進行種子計數(shù)時,每一張圖像中預(yù)測的邊界框數(shù)量即為種子數(shù)量,具體示例如圖8 所示。由圖8a 可知,對于正常光照下的種子圖像,YOLOX-P 模型可以準確識別種子并計數(shù)。由圖8b 可知,對于光線較暗的種子圖像,YOLOX-P 模型也可以很好地完成識別和計數(shù)。
圖8 YOLOX-P 模型計數(shù)效果示例Fig.8 YOLOX-P model test results
為驗證改進后的YOLOX-P 對小麥種子檢測的精確度優(yōu)于YOLOX,將二者進行比較,具體比較示例如圖9 所示,其中圓圈部分為兩個模型之間檢測的差別。由圖9 可知,原始模型未能很好地檢測出堆疊、粘連嚴重的小麥種子,改進后的模型能檢測出原始模型無法檢測的困難目標。
圖9 YOLOX 與YOLOX-P 檢測對比樣例Fig.9 Sample comparison of YOLOX and YOLOX-P detection
除了將YOLOX-P 與原模型進行對比,還分別復(fù)現(xiàn)了兩種目前主流的目標檢測算法在相同的數(shù)據(jù)集上進行訓(xùn)練和對比,分別為CenterNet 和YOLOv4-M1 網(wǎng)絡(luò)結(jié)構(gòu)。CenterNet 網(wǎng)絡(luò)結(jié)構(gòu)以Resnet50 作為主干特征提取網(wǎng)絡(luò),YOLOv4-M1 網(wǎng)絡(luò)結(jié)構(gòu)以MobileNet v1 作為主干特征提取網(wǎng)絡(luò)以代替CSPDarkNet53。3 種模型檢測的mAP和模型權(quán)重指標對比如表4 所示(IOU=0.6)。
表4 CenterNet、YOLOv4-M1 和YOLOX-P 對比數(shù)據(jù)Tab.4 Comparison data of CenterNet、YOLOv4-M1 and YOLOX-P
由表4 可知,YOLOX-P 模型的mAP值最高且模型參數(shù)最少,其中mAP值比YOLOv4-M1 模型高15%,達到了99.38%。
為進一步驗證YOLOX-P 模型的性能,以玉米種子為對象取1 000 粒種子,分成10 包,每包100 粒(人工精確計數(shù))。取第1 包平鋪到白色背景下,進行種子計數(shù);然后用手隨意攪動籽粒并平鋪,計數(shù);再次用手隨意攪動籽粒并平鋪,計數(shù)。取第2 包籽粒加到之前的100 粒種子中,如上重復(fù)計數(shù)操作3 次。隨后再添加第3~10 包種子,并分別采集計數(shù)3 次。如此獲得100~1 000 粒種子的3 次重復(fù)數(shù)種,試驗數(shù)據(jù)如表5 所示,具體示例如圖10 所示,結(jié)果表明,YOLOX-P計數(shù)結(jié)果的誤差為±2 粒,實現(xiàn)了高精度計數(shù)。
表5 YOLOX-P 對每組玉米計數(shù)的數(shù)據(jù)Tab.5 YOLOX-P data on corn count per group
圖10 YOLOX-P 對玉米的具體計數(shù)示例Fig.10 Example of YOLOX-P corn seed counting
種子計數(shù)是獲取千粒質(zhì)量指標最重要的環(huán)節(jié)之一,以自動化技術(shù)精確、快速地計算出種子數(shù)量從而減少人工是一項具有重要意義的研究工作。提出了一種基于YOLOX 的作物種子自動計數(shù)模型YOLOX-P。相比前者,YOLOX-P 能更好地檢測出粘連、堆疊嚴重的小麥種子,可應(yīng)用于實時種子計數(shù)任務(wù)。試驗結(jié)果表明,YOLOX-P 的mAP為99.38%,在顯存6 GB 的NVIDIA GeForce RTX 2060 顯卡上推理時間為18.68 ms,能滿足獲取千粒質(zhì)量指標時計數(shù)精度高和處理速度快的需求。