呂金銳付 燕倪美玉曹為剛杜子濤
(1. 太原城市職業技術學院,山西 太原 030027;2. 西安科技大學,陜西 西安 710054;3. 浙江金華科貿職業技術學院,浙江 金華 321019;4. 河北工業大學,天津 300401)
番茄果實營養價值高,富含維生素和礦物質,是人們日常生活中不可缺少的部分。隨著生活水平的提高,人們對番茄品質提出了更高的要求,而番茄分類過程是保證品質的重要環節[1]。近年來,基于人工智能的檢測算法層出不窮,深度學習在目標檢測中逐漸成為主流[2]。因此,將深度學習應用于番茄成熟度檢測具有重要的實際意義。
目前,食品品質檢測方法主要有機器視覺檢測、光譜成像檢測及電子鼻檢測等[3-6]。機器視覺以其無損、經濟等特點被廣泛應用于食品工業中,但應用于番茄成熟度檢測方面的研究較少。黃玉萍等[7]提出了一種用于番茄成熟度檢測的支持向量機判別模型,與常規模型相比,該模型具有較高的檢測精度和較好的判別效果。馬翠花等[8]提出了一種用于番茄成熟度的檢測方法,將密集和稀疏重構相結合,與常規檢測方法相比,該方法具有較高的檢測精度。王俊平等[9]提出了一種用于番茄成熟度檢測的多源信息融合方法,與單一檢測方法相比,該方法提高了番茄成熟度識別的準確性,準確率達98.30%。龍潔花等[10]提出了一種用于番茄成熟度檢測的改進Mask R-CNN模型,該模型對不同成熟度的番茄果實具有較好的識別性能,識別精度在90%以上。上述方法可以實現番茄成熟度的檢測,但在實際應用中的特征提取過程較為復雜,檢測精度和效率有待進一步提高。
在此基礎上,研究擬提出一種改進的YOLOv4模型用于番茄成熟度自動檢測,通過MobileNetv3網絡、平均池化、注意力機制CBAM優化,以期降低模型的復雜性以及提高計算效率和準確性,并通過試驗驗證所提模型的可行性,旨在為深度學習技術在食品檢測中的應用提供一定的參考。
番茄圖像采集系統如圖1所示。首先,采用相機拍攝樣本圖像,發送給計算機進行圖像預處理以提高圖像識別和分類的精度,并結合文獻[11-13],采用中值濾波和對比度拉伸的預處理方法。圖像預處理后通過改進的YOLO4模型進行成熟度檢測。

1. 相機 2. 光源 3. 樣品臺 4. 燈箱
YOLOv4網絡結構主要由輸入層、骨干網絡層、頸部層和輸出層組成[14]。輸入層主要負責輸入待檢測輸出圖像,骨干網絡層在不同圖像細粒度上聚合,形成圖像特征的卷積神經網絡,頸部網絡層主要包括SPPnet、FPNet和PAnet,主要是一系列混合和組合圖像特征的網絡層[15]。輸出層輸出檢測結果。YOLOv4的網絡結構如圖2所示。

圖2 YOLOv4網絡結構
(1) 輸入層在數據處理中增加了一些新方法,如Mosaic數據增強技術。
(2) 骨干網絡由特征金字塔池化網絡(SPP)和路徑聚合層(PANT)構成[16]。SPP層的作用是利用不同尺度的池化核,對從骨干網輸入的特征進行池化疊加操作,擴大網絡的接受范圍。由4個最大池化組成(1×1、5×5、9×9、13×13)。原理圖如圖3所示。

圖3 SPP模塊結構
(3) 頸部網絡可通過解碼操作預測頸部網絡獲得的特征[17]。
(4) 輸出層輸出3個不同尺度的特征圖。
為了提高整個模型的性能,在YOLOv4模型的基礎上進行改進,用于番茄成熟度的自動檢測。通過優化MobileNetv3網絡、平均池化、注意力機制CBAM來降低模型復雜度和提高計算效率和準確性。
2.2.1 MobileNetv3網絡 在實際的檢測環境中,計算資源非常有限,試驗將輕量級網絡MobileNetv3替換YOLOv4骨干網CSPDarkNet53,實現了輕量化設計[18]。
MobileNetv3于2019年發布,其結合了v1的深度可分離卷積、v2的Inverted Residuals和Linear Bottleneck、SE模塊,利用NAS(神經結構搜索)檢索網絡的構成和參數。
MobileNetv3基于MobileNetv2將3×3的深度卷積替換為5×5大小深度卷積,雖然swish激活函數可有效提高網絡精度,但其計算量增加,不適合網絡輕量化。考慮到輕量化網絡的實際應用,引入HS激活函數來替代swish函數,非線性激活函數在高層特征表現得更好,在保持精度的同時減少參數量和計算量[19]。v3去除了尾部的卷積層且尾部的兩層卷積不使用批量化處理,有效降低了運算量。
HS激活函數如式(1)所示。
(1)
式中:
x——輸入向量;
ReLU6——激活函數。
在MobileNetv3結構中,YOLOv4骨干網中的5個CSP殘差單元模塊被MB(mobilenentv3_block)模塊取代。
2.2.2 SPP模塊優化 SPP模塊采用最大池化操作提高網絡訓練速度和防止過度擬合[20]。當識別對象與背景圖像相似時,最大池化可能會丟失目標信息,從而導致模型漏檢或誤檢。
針對上述問題,文中基于YOLOv4結構,對其SPP模塊進行優化,通過平均池化(9×9)替換最大池化(9×9)以保留更多信息。結構如圖4所示。

圖4 SPP模塊優化結構
2.2.3 注意力機制CBAM模塊 CBAM模塊是一種空間與信道相融合的混合域注意力機制模塊,其優點是能夠以微小的計算開銷集成到卷積神經網絡的架構中[21]。在將維度為F∈RC×H×W的特征圖輸入到CBAM的信道注意力結構后,對特征圖的寬度和高度進行兩種不同的池化操作,得到特征映射空間描述張量。用全連接共享網絡和激活函數運算這兩個一維張量,得到信道間的相關聯系,得到信道的注意力特征MC∈RC×l×l。全連接網絡的共享是為了獲得不同信道之間的關聯信息。
在上采樣過程中引入注意力機制CBAM增強特征表達能力,增強深淺層特征融合能力。將兩個一維向量合并到信道壓縮權值,將權值與輸入矩陣相乘,得到調整后的特征映射[22]。在空間維中也進行相同的操作,將得到的空間壓縮值與特征映射相乘,生成最后的特征映射。
改進的YOLOv4網絡結構如圖5所示。

圖5 改進YOLOv4結構
為了驗證試驗方法的優越性,在Python環境下基于Tensorflow深度學習框架進行試驗。相機采用大恒影像公司生產的mer-503-20gc-p,鏡頭為康標達公司生產的m0814-mp2,光源為圓頂光源[23]。系統參數見表1。

表1 系統參數
通過番茄樣本集的訓練對所提模型的初始參數進行調整,試驗參數見表2。

表2 試驗參數
番茄主要來源于某番茄種植基地,拍攝當天為晴天,室內溫度26 ℃,番茄圖像主要通過試驗箱模擬自然條件光采集,共采集500張圖片,通過旋轉、平移、縮放等方式進行擴展,擴展為4 000張圖片,選擇成熟番茄、半熟番茄和綠色番茄作為檢測目標。每個成熟度選擇1 000張,總計3 000張,大小為227像素×227像素,分為訓練集和測試集,且訓練集∶測試集為4∶1。番茄的不同成熟度如圖6所示。

圖6 番茄不同成熟度圖像
將采集到的圖片運用旋轉、平移、縮放、鏡像等方式進行數據增強,并對增強后的圖片進行標注。
選擇常用的精度(P)、召回率(R)、平均精度(AP)、平均精度均值(mAP)、每秒檢測幀數(FPS)對模型進行評估。
(1) 精度(P):預測結果中實際包含的正樣本數。預測結果只有兩種可能:正確的預測(TP)和錯誤的預測(FP),并按式(2)計算精度[24]。
(2)
(2) 召回率(R):所有正樣本都有兩種可能的預測結果。正確預測數(TP)和未預測數(FN),如式(3)所示。
(3)
(3) 平均精度(AP):平均精度為準確率在召回率上的積分,只計算單一類別精度值,如式(4)所示[25]。
(4)
(4) 平均精度均值(mAP):mAP是對所有的AP求平均值,如式(5)所示。
(5)
式中:
APi——第i個類別的平均準確度;
n——類別的數量。
(5) 運行速度:通過每秒檢測圖像幀數評估模型的速度。
為了測試模型的可行性,比較MobileNetv3網絡、最大池化及注意力機制CBAM優化改進前后的性能以提高計算效率和準確性,結果見表3。

表3 優化后的試驗結果對比
由表3可知,YOLOv4在番茄成熟度檢測中mAP值為81.33%,引入MobileNetv3網絡、平均池化、注意力機制CBAM后,YOLOv4在番茄成熟度檢測中mAP值分別為80.00%,87.17%,90.81%。試驗方法的mAP值最優,達到92.50%。與未改進前的YOLOv4模型相比,試驗模型的mAP值提高了13.73%,FPS提高了97.34%,參數量降低了79.13%。雖然試驗模型的FPS和參數量比YOLO4+MobileNetv3模型的稍差,但其mAP值提高顯著,表明試驗模型可以較好地均衡檢測mAP值和效率。這是因為輕量網絡MobileNetv3網絡替換了CSPDarkNet53網絡,降低了模型的復雜性。SPP模塊采用平均池化代替最大池化,提高了算法對小目標的檢測精度。在上采樣過程中引入注意力機制CBAM增強特征表達能力,增強了深淺層特征融合能力。
為進一步測試模型的可行性,將試驗方法與YOLOv4模型進行對比分析,將時延結果繪制成對應的P-R曲線圖(圖7、圖8)。

圖7 YOLOv4模型對應的PR曲線

圖8 試驗模型對應的PR曲線
由圖7和圖8可知,與YOLOv4模型相比,試驗方法在番茄成熟度的檢測中PR曲線更穩定,隨著召回率的上升,檢測精度的下降速度也更緩慢,說明對模型進行MobileNetv3網絡、平均池化、注意力機制CBAM等優化,可提高對番茄成熟度的檢測性能。
為了測試模型的有效性,將試驗方法與文獻[26]的YOLOv4-MobileNetv3-SE(頸部PANet 結構中加入 SE 模塊)和文獻[27]的YOLOv5s模型進行對比,結果見表4。

表4 不同方法試驗結果對比
由表4可知,試驗方法在番茄成熟度的檢測中mAP值為92.50%,與文獻[26]和文獻[27]的相比分別提高了4.52%和2.97%。試驗方法在番茄成熟度檢測中的檢測幀數為37.1 FPS,相比文獻[26]和文獻[27]的分別提高了0.27%和13.67%。試驗方法的番茄成熟度檢測參數量為48.0 M,相比文獻[26]和文獻[27]的分別降低了8.57%和2.23%。這是因為試驗模型中加入了注意力機制CBAM使模型提取的特征信息更加豐富,加入CSPDarkNet53網絡降低了模型的復雜度,引入平均池化提高了小目標的檢測精度,所以試驗模型的綜合性能較優。
研究將改進的YOLOv4模型用于番茄成熟度的自動檢測,通過MobileNetv3網絡、平均池化及注意力機制CBAM 3個方面的優化以提高其性能。結果表明,與常規方法相比,試驗所提方法在番茄成熟度檢測中具有較高的檢測平均精度均值和效率,且模型參量較少。與改進前的YOLOv4模型相比,平均精度均值提高了13.73%,每秒檢測幀數提高了97.34%,參數降低了79.13%。相比于文獻[26]和文獻[27],平均精度均值分別提高了4.52%和2.97%,每秒檢測幀數分別提高了0.27%和13.67%,參數分別降低了8.57%和2.23%,具有一定的實用價值。但試驗數據集為自制,具有一定的局限性,后期將逐步完善和優化現有模型以實現番茄成熟度和缺陷的同時檢測。