呂金銳付 燕倪美玉曹為剛杜子濤
(1. 太原城市職業(yè)技術(shù)學(xué)院,山西 太原 030027;2. 西安科技大學(xué),陜西 西安 710054;3. 浙江金華科貿(mào)職業(yè)技術(shù)學(xué)院,浙江 金華 321019;4. 河北工業(yè)大學(xué),天津 300401)
番茄果實營養(yǎng)價值高,富含維生素和礦物質(zhì),是人們?nèi)粘I钪胁豢扇鄙俚牟糠?。隨著生活水平的提高,人們對番茄品質(zhì)提出了更高的要求,而番茄分類過程是保證品質(zhì)的重要環(huán)節(jié)[1]。近年來,基于人工智能的檢測算法層出不窮,深度學(xué)習(xí)在目標檢測中逐漸成為主流[2]。因此,將深度學(xué)習(xí)應(yīng)用于番茄成熟度檢測具有重要的實際意義。
目前,食品品質(zhì)檢測方法主要有機器視覺檢測、光譜成像檢測及電子鼻檢測等[3-6]。機器視覺以其無損、經(jīng)濟等特點被廣泛應(yīng)用于食品工業(yè)中,但應(yīng)用于番茄成熟度檢測方面的研究較少。黃玉萍等[7]提出了一種用于番茄成熟度檢測的支持向量機判別模型,與常規(guī)模型相比,該模型具有較高的檢測精度和較好的判別效果。馬翠花等[8]提出了一種用于番茄成熟度的檢測方法,將密集和稀疏重構(gòu)相結(jié)合,與常規(guī)檢測方法相比,該方法具有較高的檢測精度。王俊平等[9]提出了一種用于番茄成熟度檢測的多源信息融合方法,與單一檢測方法相比,該方法提高了番茄成熟度識別的準確性,準確率達98.30%。龍潔花等[10]提出了一種用于番茄成熟度檢測的改進Mask R-CNN模型,該模型對不同成熟度的番茄果實具有較好的識別性能,識別精度在90%以上。上述方法可以實現(xiàn)番茄成熟度的檢測,但在實際應(yīng)用中的特征提取過程較為復(fù)雜,檢測精度和效率有待進一步提高。
在此基礎(chǔ)上,研究擬提出一種改進的YOLOv4模型用于番茄成熟度自動檢測,通過MobileNetv3網(wǎng)絡(luò)、平均池化、注意力機制CBAM優(yōu)化,以期降低模型的復(fù)雜性以及提高計算效率和準確性,并通過試驗驗證所提模型的可行性,旨在為深度學(xué)習(xí)技術(shù)在食品檢測中的應(yīng)用提供一定的參考。
番茄圖像采集系統(tǒng)如圖1所示。首先,采用相機拍攝樣本圖像,發(fā)送給計算機進行圖像預(yù)處理以提高圖像識別和分類的精度,并結(jié)合文獻[11-13],采用中值濾波和對比度拉伸的預(yù)處理方法。圖像預(yù)處理后通過改進的YOLO4模型進行成熟度檢測。
1. 相機 2. 光源 3. 樣品臺 4. 燈箱
YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)主要由輸入層、骨干網(wǎng)絡(luò)層、頸部層和輸出層組成[14]。輸入層主要負責輸入待檢測輸出圖像,骨干網(wǎng)絡(luò)層在不同圖像細粒度上聚合,形成圖像特征的卷積神經(jīng)網(wǎng)絡(luò),頸部網(wǎng)絡(luò)層主要包括SPPnet、FPNet和PAnet,主要是一系列混合和組合圖像特征的網(wǎng)絡(luò)層[15]。輸出層輸出檢測結(jié)果。YOLOv4的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)
(1) 輸入層在數(shù)據(jù)處理中增加了一些新方法,如Mosaic數(shù)據(jù)增強技術(shù)。
(2) 骨干網(wǎng)絡(luò)由特征金字塔池化網(wǎng)絡(luò)(SPP)和路徑聚合層(PANT)構(gòu)成[16]。SPP層的作用是利用不同尺度的池化核,對從骨干網(wǎng)輸入的特征進行池化疊加操作,擴大網(wǎng)絡(luò)的接受范圍。由4個最大池化組成(1×1、5×5、9×9、13×13)。原理圖如圖3所示。
圖3 SPP模塊結(jié)構(gòu)
(3) 頸部網(wǎng)絡(luò)可通過解碼操作預(yù)測頸部網(wǎng)絡(luò)獲得的特征[17]。
(4) 輸出層輸出3個不同尺度的特征圖。
為了提高整個模型的性能,在YOLOv4模型的基礎(chǔ)上進行改進,用于番茄成熟度的自動檢測。通過優(yōu)化MobileNetv3網(wǎng)絡(luò)、平均池化、注意力機制CBAM來降低模型復(fù)雜度和提高計算效率和準確性。
2.2.1 MobileNetv3網(wǎng)絡(luò) 在實際的檢測環(huán)境中,計算資源非常有限,試驗將輕量級網(wǎng)絡(luò)MobileNetv3替換YOLOv4骨干網(wǎng)CSPDarkNet53,實現(xiàn)了輕量化設(shè)計[18]。
MobileNetv3于2019年發(fā)布,其結(jié)合了v1的深度可分離卷積、v2的Inverted Residuals和Linear Bottleneck、SE模塊,利用NAS(神經(jīng)結(jié)構(gòu)搜索)檢索網(wǎng)絡(luò)的構(gòu)成和參數(shù)。
MobileNetv3基于MobileNetv2將3×3的深度卷積替換為5×5大小深度卷積,雖然swish激活函數(shù)可有效提高網(wǎng)絡(luò)精度,但其計算量增加,不適合網(wǎng)絡(luò)輕量化??紤]到輕量化網(wǎng)絡(luò)的實際應(yīng)用,引入HS激活函數(shù)來替代swish函數(shù),非線性激活函數(shù)在高層特征表現(xiàn)得更好,在保持精度的同時減少參數(shù)量和計算量[19]。v3去除了尾部的卷積層且尾部的兩層卷積不使用批量化處理,有效降低了運算量。
HS激活函數(shù)如式(1)所示。
(1)
式中:
x——輸入向量;
ReLU6——激活函數(shù)。
在MobileNetv3結(jié)構(gòu)中,YOLOv4骨干網(wǎng)中的5個CSP殘差單元模塊被MB(mobilenentv3_block)模塊取代。
2.2.2 SPP模塊優(yōu)化 SPP模塊采用最大池化操作提高網(wǎng)絡(luò)訓(xùn)練速度和防止過度擬合[20]。當識別對象與背景圖像相似時,最大池化可能會丟失目標信息,從而導(dǎo)致模型漏檢或誤檢。
針對上述問題,文中基于YOLOv4結(jié)構(gòu),對其SPP模塊進行優(yōu)化,通過平均池化(9×9)替換最大池化(9×9)以保留更多信息。結(jié)構(gòu)如圖4所示。
圖4 SPP模塊優(yōu)化結(jié)構(gòu)
2.2.3 注意力機制CBAM模塊 CBAM模塊是一種空間與信道相融合的混合域注意力機制模塊,其優(yōu)點是能夠以微小的計算開銷集成到卷積神經(jīng)網(wǎng)絡(luò)的架構(gòu)中[21]。在將維度為F∈RC×H×W的特征圖輸入到CBAM的信道注意力結(jié)構(gòu)后,對特征圖的寬度和高度進行兩種不同的池化操作,得到特征映射空間描述張量。用全連接共享網(wǎng)絡(luò)和激活函數(shù)運算這兩個一維張量,得到信道間的相關(guān)聯(lián)系,得到信道的注意力特征MC∈RC×l×l。全連接網(wǎng)絡(luò)的共享是為了獲得不同信道之間的關(guān)聯(lián)信息。
在上采樣過程中引入注意力機制CBAM增強特征表達能力,增強深淺層特征融合能力。將兩個一維向量合并到信道壓縮權(quán)值,將權(quán)值與輸入矩陣相乘,得到調(diào)整后的特征映射[22]。在空間維中也進行相同的操作,將得到的空間壓縮值與特征映射相乘,生成最后的特征映射。
改進的YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。
圖5 改進YOLOv4結(jié)構(gòu)
為了驗證試驗方法的優(yōu)越性,在Python環(huán)境下基于Tensorflow深度學(xué)習(xí)框架進行試驗。相機采用大恒影像公司生產(chǎn)的mer-503-20gc-p,鏡頭為康標達公司生產(chǎn)的m0814-mp2,光源為圓頂光源[23]。系統(tǒng)參數(shù)見表1。
表1 系統(tǒng)參數(shù)
通過番茄樣本集的訓(xùn)練對所提模型的初始參數(shù)進行調(diào)整,試驗參數(shù)見表2。
表2 試驗參數(shù)
番茄主要來源于某番茄種植基地,拍攝當天為晴天,室內(nèi)溫度26 ℃,番茄圖像主要通過試驗箱模擬自然條件光采集,共采集500張圖片,通過旋轉(zhuǎn)、平移、縮放等方式進行擴展,擴展為4 000張圖片,選擇成熟番茄、半熟番茄和綠色番茄作為檢測目標。每個成熟度選擇1 000張,總計3 000張,大小為227像素×227像素,分為訓(xùn)練集和測試集,且訓(xùn)練集∶測試集為4∶1。番茄的不同成熟度如圖6所示。
圖6 番茄不同成熟度圖像
將采集到的圖片運用旋轉(zhuǎn)、平移、縮放、鏡像等方式進行數(shù)據(jù)增強,并對增強后的圖片進行標注。
選擇常用的精度(P)、召回率(R)、平均精度(AP)、平均精度均值(mAP)、每秒檢測幀數(shù)(FPS)對模型進行評估。
(1) 精度(P):預(yù)測結(jié)果中實際包含的正樣本數(shù)。預(yù)測結(jié)果只有兩種可能:正確的預(yù)測(TP)和錯誤的預(yù)測(FP),并按式(2)計算精度[24]。
(2)
(2) 召回率(R):所有正樣本都有兩種可能的預(yù)測結(jié)果。正確預(yù)測數(shù)(TP)和未預(yù)測數(shù)(FN),如式(3)所示。
(3)
(3) 平均精度(AP):平均精度為準確率在召回率上的積分,只計算單一類別精度值,如式(4)所示[25]。
(4)
(4) 平均精度均值(mAP):mAP是對所有的AP求平均值,如式(5)所示。
(5)
式中:
APi——第i個類別的平均準確度;
n——類別的數(shù)量。
(5) 運行速度:通過每秒檢測圖像幀數(shù)評估模型的速度。
為了測試模型的可行性,比較MobileNetv3網(wǎng)絡(luò)、最大池化及注意力機制CBAM優(yōu)化改進前后的性能以提高計算效率和準確性,結(jié)果見表3。
表3 優(yōu)化后的試驗結(jié)果對比
由表3可知,YOLOv4在番茄成熟度檢測中mAP值為81.33%,引入MobileNetv3網(wǎng)絡(luò)、平均池化、注意力機制CBAM后,YOLOv4在番茄成熟度檢測中mAP值分別為80.00%,87.17%,90.81%。試驗方法的mAP值最優(yōu),達到92.50%。與未改進前的YOLOv4模型相比,試驗?zāi)P偷膍AP值提高了13.73%,FPS提高了97.34%,參數(shù)量降低了79.13%。雖然試驗?zāi)P偷腇PS和參數(shù)量比YOLO4+MobileNetv3模型的稍差,但其mAP值提高顯著,表明試驗?zāi)P涂梢暂^好地均衡檢測mAP值和效率。這是因為輕量網(wǎng)絡(luò)MobileNetv3網(wǎng)絡(luò)替換了CSPDarkNet53網(wǎng)絡(luò),降低了模型的復(fù)雜性。SPP模塊采用平均池化代替最大池化,提高了算法對小目標的檢測精度。在上采樣過程中引入注意力機制CBAM增強特征表達能力,增強了深淺層特征融合能力。
為進一步測試模型的可行性,將試驗方法與YOLOv4模型進行對比分析,將時延結(jié)果繪制成對應(yīng)的P-R曲線圖(圖7、圖8)。
圖7 YOLOv4模型對應(yīng)的PR曲線
圖8 試驗?zāi)P蛯?yīng)的PR曲線
由圖7和圖8可知,與YOLOv4模型相比,試驗方法在番茄成熟度的檢測中PR曲線更穩(wěn)定,隨著召回率的上升,檢測精度的下降速度也更緩慢,說明對模型進行MobileNetv3網(wǎng)絡(luò)、平均池化、注意力機制CBAM等優(yōu)化,可提高對番茄成熟度的檢測性能。
為了測試模型的有效性,將試驗方法與文獻[26]的YOLOv4-MobileNetv3-SE(頸部PANet 結(jié)構(gòu)中加入 SE 模塊)和文獻[27]的YOLOv5s模型進行對比,結(jié)果見表4。
表4 不同方法試驗結(jié)果對比
由表4可知,試驗方法在番茄成熟度的檢測中mAP值為92.50%,與文獻[26]和文獻[27]的相比分別提高了4.52%和2.97%。試驗方法在番茄成熟度檢測中的檢測幀數(shù)為37.1 FPS,相比文獻[26]和文獻[27]的分別提高了0.27%和13.67%。試驗方法的番茄成熟度檢測參數(shù)量為48.0 M,相比文獻[26]和文獻[27]的分別降低了8.57%和2.23%。這是因為試驗?zāi)P椭屑尤肓俗⒁饬C制CBAM使模型提取的特征信息更加豐富,加入CSPDarkNet53網(wǎng)絡(luò)降低了模型的復(fù)雜度,引入平均池化提高了小目標的檢測精度,所以試驗?zāi)P偷木C合性能較優(yōu)。
研究將改進的YOLOv4模型用于番茄成熟度的自動檢測,通過MobileNetv3網(wǎng)絡(luò)、平均池化及注意力機制CBAM 3個方面的優(yōu)化以提高其性能。結(jié)果表明,與常規(guī)方法相比,試驗所提方法在番茄成熟度檢測中具有較高的檢測平均精度均值和效率,且模型參量較少。與改進前的YOLOv4模型相比,平均精度均值提高了13.73%,每秒檢測幀數(shù)提高了97.34%,參數(shù)降低了79.13%。相比于文獻[26]和文獻[27],平均精度均值分別提高了4.52%和2.97%,每秒檢測幀數(shù)分別提高了0.27%和13.67%,參數(shù)分別降低了8.57%和2.23%,具有一定的實用價值。但試驗數(shù)據(jù)集為自制,具有一定的局限性,后期將逐步完善和優(yōu)化現(xiàn)有模型以實現(xiàn)番茄成熟度和缺陷的同時檢測。