楊 堅,錢 振,張燕軍,秦 宇,繆 宏
(揚州大學機械工程學院,揚州 225127)
溫室種植番茄可以減少病蟲害的影響,但人工采摘成本非常高。近年來,人工智能的應用越發廣泛,尤其是在農業中的應用。不少學者對番茄成熟的識別進行了研究。馬翠花等融合了一種顯著性檢測方法與隨機Hough變換,識別番茄簇中的綠色單果。Yamamoto等將圖像處理與機器學習相結合,人工的使用顏色、形狀、紋理和大小來識別番茄。Lin等提出了一種Hough變換方法,該方法使用支持向量機根據顏色和紋理的特征信息來識別柑橘和番茄等水果,此方法考慮了輪廓信息,可以識別出輕度遮擋的目標,但無法識別遮擋嚴重的目標。上述方法都需要使用機器學習和圖像處理技術,然而傳統的機器學習技術需要人為設計的特征,這些特征往往具有具體的物理含義,且特征設計是一項復雜的任務。使用卷積神經網絡(Convolution Neural Networks, CNN)的深度學習,只需要提供帶標簽的數據集不用人為設計的特征,可用于復雜場景中的目標識別任務。
基于卷積神經網絡的目標識別算法,已廣泛應用于農業和制造業的識別檢測,主要分為兩階段目標識別算法(two stage)和單階段目標識別算法(one stage)。兩階段目標識別算法的主要代表為R-CNN、Fast R-CNN和Faster R-CNN,此類算法是基于區域推薦(Region Proposal)進行目標識別;單階段目標檢測算法的主要代表為SSD和YOLO,此類算法將圖像歸一化到統一大小后直接放入一個卷積神經網絡。閆建偉等提出了一種改進Faster R-CNN模型識別自然環境下不同成熟度的刺梨果實,識別準確率為95.53%,識別召回率為81.4%,F1得分為94.99%,該模型需占用大量資源來計算目標區域建議框和分類識別,檢測時間過長,每張圖片的識別時間為200 ms。成偉等基于改進YOLOv3模型識別溫室中的番茄,識別的平均精度均值為95.7%,每張圖片的識別時間為15 ms,該方法雖可用于大番茄的識別,但受限于識別速度,在低成本的設備上難以滿足實時性的要求。呂石磊等使用MobileNet-v2作為YOLOv3-LITE模型的骨干網絡,并引入GIoU邊框回歸損失函數來識別復雜環境下的柑橘,測試的平均精度均值為91.13%,每張圖片的識別時間為16.9 ms。Liu等在YOLOv3中添加密集連接結構,并使用圓形邊界框代替矩形邊界框識別番茄,該方法僅針對圓形大番茄,并不適用于一般形狀的番茄,且并未區分成熟度。Lawal等在YOLOv3模型中加入密集的連接結構和空間金字塔網絡來識別復雜環境中的番茄,該方法的單個圖像識別時間為52 ms,不適用于實時采摘。Chen將基于平均精度損失的分類損失函數應用于YOLOv4模型中檢測蘋果。張伏等使用MobileNet-v3作為模型的特征構建YOLOv4-LITE網絡,并在頭部網絡部分增加大尺寸的檢測頭來識別成熟番茄,測試的平均精度均值為99.74%,但該方法只能識別成熟番茄,為了預測番茄產量和預防番茄病害,未成熟番茄的識別同樣重要。YOLO系列模型的網絡結構復雜、參數多,實時檢測需要強大的GPU計算能力。在嵌入式設備和移動設備中實現實時目標識別是一個巨大的挑戰。
由于大多數神經網絡模型并非針對特定目標,為提高模型識別準確率,眾多學者做了相關研究。Hu等提出了擠壓和激勵網絡(Squeeze and Excitation Networks, SE),該網絡加強了通道方向特征的學習。為了兼顧空間特征,Woo等提出了卷積注意力模塊(Convolution Block Attention Module, CBAM),王立舒等在YOLOv4-tiny中加入CBAM模塊識別藍莓,改進網絡提升了遮擋藍莓的識別準確率,測試的平均精度均值為96.24%。為了加強全局特征聯系并鼓勵特征重用,Huang等在卷積神經網絡中加入密集的連接結構,Gai等在YOLOv4網絡中添加密集連接結構識別櫻桃果實,改進網絡提高了復雜環境中櫻桃的識別準確率。因此,卷積注意力模塊和密集的連接結構會提高模型在復雜環境下目標識別準確率。本文在YOLOv4-tiny網絡中加入CBAM模塊、密集的連接結構、Mish激活函數和第三個檢測頭(y3),以解決復雜環境中番茄成熟度識別準確率低的問題,以期為番茄成熟度識別提供參考。
本文使用的數據集拍攝于揚州市西江生態園的番茄溫室,拍攝時間為2020年12月5日上午,番茄品種為紅風鈴,所有圖片在距離番茄0.3~1 m的不同角拍攝。選擇1 300張分辨率為1 280×720的照片制作數據集,如圖1所示,其中包含不同光照條件、遮擋、遠距離等復雜環境。

圖1 不同場景下的番茄數據集樣本 Fig.1 Samples of tomato datasets in different scenes
現行的國家標準GH/T1193-2021按照番茄顏色和大小,將番茄的成熟度分為未熟期、綠熟期、變色期、紅熟前期、紅熟中期和紅熟后期,其中紅熟中期和紅熟后期的果實著紅面分別達到40%~60%和70%~100%。溫室中,通常每株番茄樹至少有三種成熟度(綠熟期、變色期和紅熟期)的番茄,只采摘紅熟中期和紅熟后期的番茄。本文將紅熟中期和紅熟后期的番茄統稱成熟番茄,其他成熟度番茄統稱未成熟番茄。使用LableImg標注工具(https://github.com/tzutalin/labelImg)手動標注成熟番茄(ripe tomato)和未成熟番茄(underripe tomato),其中,識別的成熟番茄用于本地銷售以保證最佳口感,未成熟番茄用于產量預估和病蟲害防治以提高果園經濟效益。標注時,為了減小視覺疲勞造成的誤差,每標注45 min休息10 min;為了減小視覺差異造成的誤差,在同一臺電腦上完成標注,對于不確定成熟度的番茄進行多人討論達成一致,最后由兩人分別檢查兩次以確保數據集標簽的準確性。使用留出法(Holdout method)將標注的1 300張圖像按照8∶2分為訓練集和測試集,測試集中的20%作為驗證集用于模型訓練中的交叉驗證(Cross-validation),即訓練集圖像1 040張,測試集圖像208張,驗證集圖像52張。
本文致力于構建檢測速度快、識別準確率高的神經網絡模型,可用于復雜場景下番茄采摘車的實時識別任務。YOLOv4模型識別準確率高,但是模型參數多,權重文件大,對計算機硬件要求高,不利于嵌入式設備或者移動設備的開發。YOLOv4-tiny模型的識別準確率低于YOLOv4模型,針對復雜環境下番茄識別準確率較低甚至會誤檢。本文提出一種改進YOLOv4-tiny-X模型,如圖2所示,本文從以下4個方面進行改進:

圖2 改進 YOLOv4-tiny-X 模型結構 Fig.2 Improved YOLOv4-tiny-X model structure
1)在每個CSP(Cross Stage Partial)模塊之后添加CBAM卷積注意力模塊,3個CBAM模塊可以使神經網絡對有用的通道信息和空間信息進行3次重用。
2)在頭部網絡部分增加76×76的檢測頭(y3)以提高小目標物體的識別準確率。在第二個檢測頭(y2)的最后一個CBL(Conv Batch normalization Leaky relu)模塊上再次進行卷積操作,以獲得更深層的特征圖,上采樣操作得到大尺寸的特征圖與第二個CSP模塊進行張量拼接。
3)為了重用局部特征并加強全局特征的融合,密集連接結構將CSP模塊中的3個CBM模塊和檢測頭前的CBL模塊連接起來。
4)隨著卷積層的加深,Mish激活函數的識別準確率比Swish、ReLU和Leaky ReLU更高。因此將主干部分的激活函數更換為Mish函數。
卷積注意力模塊(CBAM)強調了通道方向和空間方向的重要特征的學習,因此,重要特征的權重更大,被傳遞到更深層用于進行精確分類。在圖3中,CBAM由兩個模塊組成。其中,通道注意力模塊的中間輸入特征圖∈R同時被平均池化和最大池化。然后將匯集的特征傳到具有一個隱藏層的共享多層感知器,使用激活函數對結果特征進行元素相加并激活以生成通道注意力圖M∈R,計算公式如下:

圖3 卷積注意力模塊 Fig.3 Convolution block attention module

式中為輸入的特征圖,M為通道壓縮權值矩陣,為sigmoid激活函數,MLP為共享多層感知器,AvgPool為平均池化操作,MaxPool為最大池化操作。通過將M學習到的通道權重分配給的不同通道,獲得改進的通道注意力:

式中為經通道注意力選擇的特征圖,?為元素相乘。在空間注意力模塊中,沿通道進行平均池化和最大池化,并對匯集后的特征進行一個7×7卷積操作,再進行激活操作??臻g注意力圖M∈計算公式如下:

式中″為經卷積注意力模塊選擇的特征圖,M為空間壓縮權值矩陣。最后,將空間信息M乘以′獲得CBAM模塊處理后的特征″:

YOLOv4-tiny是由少數卷積層組成的神經網絡,在卷積過程中會出現特征丟失的情況,Huang等提出密集連接結構用于減少特征丟失、緩解梯度消失,在不顯著增加計算量的前提下,還加強特征的傳遞和重用。圖2中,虛線部分為密集連接結構,在第二個和第三個CSP模塊中執行以下操作:CSP模塊中的第一個、第二個和第四個CBM模塊在上采樣操作之后進行張量拼接,此操作融合了淺層和深層的特征信息,使改進模型在關注深層特征信息時不丟失淺層信息。
Mish激活函數公式為() =tanh(softplus()),式中softplus() = ln(1 + e)。Misra等使用MNIST(Mixed National Institute of Standards and Technology database)數據集測試了ReLU、Swish和Mish激活函數。試驗結果表明,隨著卷積層的加深,ReLU函數和Swish函數的準確率都會大幅下降。YOLOv4-tiny模型為了減少計算量而使用ReLU激活函數,改進模型有149層,為了提高模型識別準確率,將主干網絡部分中所有ReLU激活函數換為Mish激活函數。
進行卷積神經網絡模型訓練和測試的工作站硬件為Intel i5-10600KF CPU,32G內存,Nvidia GTX 2060 GPU,試驗在Ubuntu20.04.2LTS操作系統上進行,此外,還使用CUDA v11.1.74、cuDNN v8.1.0和OpenCV 4.5.2的庫加速運算。
圖像的輸入尺寸為 640 × 640×3,動量衰減和權重衰減分別設置為0.9和0.000 5,迭代次數為300次。在訓練過程中調整學習率以減少訓練損失,初始學習率為0.001,在訓練到150、240和270次的時候學習率分別降低0.1倍,此外所有模型都使用預訓練權重文件和Mosaic數據增強功能。
使用mAP50(IoU閾值為0.5的每個類別的平均準確率)、F1得分和每秒幀數來評估不同模型的性能,準確率(Precision)衡量預測的準確程度,召回率(Recall)衡量所有正樣本的檢測情況,計算公式如下:

式中TP表示所有被正確劃分到正樣本的數量,FP表示被錯誤劃分到正樣本的數量,FN表示被錯誤劃分到負樣本的數量。F1得分是協調識別精度和召回率的一個指標,計算公式如下:

消融試驗結果如表1所示,CBAM模塊優化了通道維度和空間維度的特征信息,準確率提升了1.8個百分點;在此基礎上加入第三個檢測頭,使模型的召回率提升了2.6個百分點;為了減少模型在深層網絡中的錯誤率,使用mish激活函數替代模型骨干網絡的激活函數,準確率和召回率分別提升了0.6和0.5個百分點;為了進一步加強全局特征信息的融合以提高模型的識別準確率,使用密集的連接結構,準確率提升了0.5個百分點,召回率提升了1個百分點。最終,改進的YOLOv4-tiny-X模型召回率提高了3.4個百分點,F1得分提高了2個百分點、平均精度均值提高了0.7個百分點。

表1 消融試驗性能對比 Table 1 Ablation experiment performance comparison (%)
YOLOv4-tiny模型的權重文件大小與YOLOv5m模型相近,改進模型的權重文件大小與YOLOv5l模型相近,因此,將改進模型與YOLOv3、YOLOv4、YOLOv4-tiny、YOLOv5m、YOLOv5l進行比較,并將交并比(IoU)閾值和目標置信度閾值都設置為0.5,測試這些模型的最佳權重文件的準確率(Precision)、召回率(Recall)、F1得分和平均精度均值(mAP50)。結果如表2所示,作為先進的目標識別模型,YOLOv4、YOLOv5m和YOLOv5l都具有90%以上的平均精度均值,然而,改進模型的平均精度均值為97.9%,分別提高0.2、5.4和4.9個百分點。對比YOLOv4-tiny模型和YOLOv4-tiny-X模型,改進模型的準確率、召回率、F1得分和平均精度均值比YOLOv4-tiny模型分別提高0.41、3.4、2和0.7個百分點。結合表3,改進模型的權重文件不足YOLOv4權重文件的六分之一,檢測速度是其2倍,模型層數比YOLOv4少339層。與先進的目標識別模型相比,YOLOv4-tiny-X模型在保證極高的檢測速度時,具有最高的目標識別準確率。改進模型占用內存少、運算速度快、識別準確率高,可用于開發無人番茄采摘系統的嵌入式設備和移動設備。

表2 不同模型的檢測性能 Table 2 Detection performance of different models (%)

表3 不同模型的屬性和性能 Table 3 Properties and performance of different models
不同模型識別結果如圖4所示,為了快速分析識別情況,使用帶有“ripe tomato”標簽的紅色邊界框圈出成熟番茄,帶有“underripe tomato”標簽的粉色邊界框圈出未成熟番茄。YOLOv3模型實時識別效果相對較差,存在漏檢和誤檢,與YOLOv4和YOLOv4-tiny模型相比,改進模型在中間檢測到了兩個小番茄,成功解決了現有模型對小目標番茄識別準確率低的問題。

圖4 不同模型檢測小番茄的可視化結果 Fig.4 Visualization results of different models to detect small tomatoes
表4是在不同的IoU閾值下識別成熟番茄的平均精度均值(mAP)對比,與YOLOv3、YOLOv4和YOLOv4-tiny模型相比,YOLOv4-tiny-X模型的mAP在IoU閾值為0.5時分別提高25.7、0.6和1.3個百分點;在IoU閾值為0.75時,分別提高26.8、0.4和1.6個百分點。盡管文獻[17]在IoU閾值為0.5時識別成熟番茄的平均精度均值高達99.74%,但高IoU閾值產生更小的邊界框,有利于采摘機器人手臂的精確定位。YOLOv4-tiny-X模型在IoU閾值為0.75時平均精度均值為98.3%,高于文獻[17]的67.19%。

表4 不同模型識別成熟番茄的平均精度均值對比 Table 4 Comparison of mean average precision of different models for recognizing ripe tomatoes (%)
圖5是不同模型對包含遮擋番茄圖片的識別結果,與YOLOv4、YOLOv5m、YOLOv5l 模型相比,改進模型無漏檢、誤檢,其他三個模型都有不同程度的漏檢,其中,YOLOv4和YOLOv5l模型漏檢了5個未成熟番茄,YOLOv5m模型漏檢了3個未成熟番茄。值得注意的是,YOLOv4、YOLOv5m、YOLOv5l 模型漏檢的都是被遮擋的番茄,改進模型以較高的識別準確率識別出了被遮擋的番茄,因此YOLOv4-tiny-X模型成功的解決了現有模型對遮擋番茄識別準確率低的問題。

圖5 不同模型檢測被遮擋番茄的可視化結果 Fig.5 Visualization results of different models to detect occluded tomatoes
圖6 是YOLOv4-tiny-X模型的實時識別結果,為了更好地觀察模型的實時識別效果,圖中隱藏了邊界框的標簽和置信度,可以看出,改進模型能夠在復雜環境中準確的識別出所有被遮擋番茄和小番茄。

圖6 YOLOv4-tiny-X模型復雜環境下實時識別可視化結果 Fig.6 Visualization results of real-time recognition results of the YOLOv4-tiny-X model in the complex environment
目前先進的神經網絡模型權重文件過大,實時檢測速度慢,對遮擋番茄和小番茄的識別準確率不高。
1)本文提出了一種基于改進YOLOv4-tiny的神經網絡模型,通過在頭部網絡部分增加第三個檢測頭(y3)來提高小目標識別準確率;將CBAM模塊融入到骨干部分,以提高被遮擋番茄的識別準確率;采用密集連接結構來加強全局特征信息的融合;在主干網絡部分使用Mish激活函數來確保深層卷積中提取特征的準確性。
2)本文采用紅風鈴番茄數據集進行標注和試驗,本文方法適用于成熟期為紅果的小番茄。對于成熟期為紅果的大番茄,本文方法也具有一定的適用性。成熟期為其他顏色的番茄使用本文方法時需重新標注訓練。
3)試驗結果表明,與YOLOv3、YOLOv4、YOLOv4-tiny、YOLOv5m和YOLOv5l模型相比,YOLOv4-tiny-X模型在保證極高檢測速度的前提下,具有最高的平均精度均值,平均精度均值分別提高了30.9、0.2、0.7、5.4和4.9個百分點,改進模型的平均精度均值為97.9%,識別速度為111幀/s,實時識別的可視化結果表明,面對復雜的環境,改進的神經網絡模型具有穩定性,可為番茄采摘車的成熟度識別系統開發提供參考。