楊國亮 王吉祥 聶子玲
摘要:針對現(xiàn)有番茄檢測精度低、沒有品質檢測和部署難度高等問題,提出基于YOLOv5s改進的番茄及品質實時檢測方法,并與原始YOLOv5模型及其他經典模型進行對比研究。結果表明,針對番茄大小不同的問題,采用K-Means++算法重新計算先驗錨框提高模型定位精度;在YOLOv5s主干網(wǎng)絡末端添加GAM注意力模塊,提升模型檢測精度并改善魯棒性;應用加權雙向特征金字塔網(wǎng)絡(BiFPN)修改原有結構,完成更深層次的加權特征融合;頸部添加轉換器(transformer),增強網(wǎng)絡對多尺度目標的檢測能力。改進后的YOLOv5s番茄識別算法檢測速度達到72幀/s。在測試集中對番茄檢測均值平均精度(mAP)達到93.9%,分別比SSD、Faster-RCNN、YOLOv4-Tiny、原始YOLOv5s模型提高17.2、13.1、5.5、3.3百分點。本研究提出的番茄實時檢測方法,在保持檢測速度的同時,可降低背景因素干擾,實現(xiàn)復雜場景下對番茄的精準識別,具有非常好的應用前景,為實現(xiàn)番茄自動采摘提供相應技術支持。
關鍵詞:番茄檢測;YOLOv5s;K-means++;GAM注意力模塊;加權雙向特征金字塔
中圖分類號:TP391.41 文獻標志碼:A
文章編號:1002-1302(2023)15-0187-07
基金項目:江西省教育廳科技計劃(編號:GJJ190450、GJJ180484)。
作者簡介:楊國亮(1973—),男,江西宜春人,博士,教授,主要從事人工智能和模式識別研究。E-mail:ygliang30@126.com。
通信作者:王吉祥,碩士研究生,主要從事模式識別研究。E-mail:1661270181@qq.com。
番茄作為世界上非常重要的蔬菜作物,每年全球的總產量可以達到1.7億t,其在蔬菜作物中常常位居前列。我國新鮮番茄的出產量常年居于全球首位,經過加工后的番茄產量則名列全球第二或第三[1]。隨著我國社會老齡化程度的不斷加深,用工難問題也日漸凸現(xiàn)了出來。在番茄生產及銷售鏈中,采摘工作是一個非常重要的環(huán)節(jié),目前采摘工作仍然是以人工采摘為主,無論是工作環(huán)境還是勞動強度都不盡人意,用時和用工成本也居高不下,番茄自動采摘應運而生[2-3]。國內外對果蔬自動采摘的研究大同小異,先通過深度學習進行圖像識和定位,再通過執(zhí)行機構進行采摘[4]。提高對番茄及其品質的檢測,對采摘效率和存儲運輸都有非常重要的意義。
由于計算機科學的進步,基于卷積式神經網(wǎng)絡的深度學習得以蓬勃發(fā)展。和傳統(tǒng)機器學習相比,不論是在工作效率,還是在準確度方面,深度學習方法都有著巨大的優(yōu)越性,使得基于深度學習方法的目標檢測效率得以顯著提高[5-9],同時也在農業(yè)相關方面得到廣泛的應用。目標檢測算法大致分為2種:一種是先生成候選框,再對候選框中的目標進行分類的two-stage目標檢測方法,包括R-CNN[10]、Fast-RCNN[11]、Faster-RCNN[12]等。此類算法魯棒性高,識別錯誤率較低,但其需要運行較長的時間,難以滿足實際生產的實時性要求。例如,張文靜等提出的改進Faster R-CNN算法對番茄的識別方法,檢測每張樣本需要245 ms的時間[13];龍潔花等提出改進 Mask R-CNN 的方法,以CSP-Rest50為骨干,識別準確率達到90%[14]。另一種是不出現(xiàn)候選框的one-stage目標檢測方法,包括SSD[15]和YOLO[16]等。此種方法不僅可以達到第1種方法的準確度,并且識別速度快,完全可以滿足實時性的要求。例如,文斌等針對三七葉片病害改進YOLOv3,提升了病害檢測精度和魯棒性[17];張兆國等提出對YOLOv4模型改良對復雜環(huán)境條件下的馬鈴薯進行測試,其檢測準確率達到91.4%[18];黃彤鑌等針對柑橘識別改進YOLOv5,添加注意力機制改善了遮擋問題[19]。
上述檢測手段不能實現(xiàn)對果蔬真正的實時檢測,檢測效率低下,無法適應實際農業(yè)生產活動的需要,同時針對當前對成熟、未成熟和腐壞的番茄檢測研究較少,本研究將以YOLOv5s算法為前提加以完善,通過融合注意力等新內容,提出一種改進型YOLOv5s的番茄識別方法,通過識別番茄品類自動采摘,降低采摘成本,研究結果將為實現(xiàn)番茄自動采摘提供技術支持。
1 材料與方法
1.1 數(shù)據(jù)集
本試驗所用番茄圖像數(shù)據(jù)集主要來源于公開數(shù)據(jù)集和實地拍攝。為了接近番茄生長的真實環(huán)境,圖像數(shù)據(jù)包括番茄數(shù)量、密集度和遮擋度不同的各種情況,同時為了剔除腐敗的番茄,減少養(yǎng)分的浪費,數(shù)據(jù)集還包括大量的腐敗番茄的圖像。盡可能保證數(shù)據(jù)的準確性,還需要人為進行標注,在標注的同時盡量將框內的背景減小到最小。為更好地模擬真實情況,對圖像數(shù)據(jù)進行線性數(shù)據(jù)增強,通過旋轉、縮放和添加噪聲,增加樣本的多樣性。通過數(shù)據(jù)增強后得到4 428張圖像,將數(shù)據(jù)集以4 ∶1的比例分割為訓練集和驗證集。番茄檢測任務分為以下3類:1類為成熟的番茄(Ripe_tomatoes),指可以進行采摘的番茄;2類為未成熟的番茄(Unripe_Tomatoes),指不能進行采摘的番茄;3類為腐敗的番茄(Diseased),指需要采摘并丟棄的番茄。數(shù)據(jù)集類別標簽數(shù)量見圖1。
1.2 YOLOv5s網(wǎng)絡模型
YOLOv5s網(wǎng)絡模型一般由輸入端、軀干網(wǎng)絡(backbone)、頸部(neck)和頭部(head)4個部分構成(圖2)。輸入端通常由3個部分組成,分別為數(shù)據(jù)增強、圖像錨框運算與縮放。主干網(wǎng)絡主要由卷積(CONV)、卷積層與瓶頸層模塊C3和空間金字塔池化(SPPF)構成,負責圖像特征的獲取。頸部通過金字塔構造實現(xiàn)特征融合。頭部采用CIOU_Loss損失函數(shù)和非極大值抑制(non maxi-mum suppression,簡稱NMS)進行預測。
1.3 模型改進
1.3.1 K-Means++進行錨框優(yōu)化 YOLOv5s網(wǎng)絡的初始先驗錨框是通過COCO數(shù)據(jù)集得到的(表1)。COCO數(shù)據(jù)集共有80個類別,本研究中使用的數(shù)據(jù)集與之存在比較大的差異,最終會影響網(wǎng)絡的整體性能。本研究采用了K-Means++算法對錨框進行聚類分析,相比于K-Means算法,它進一步優(yōu)化了初始點的選取,首先通過隨機選取一個樣本作為聚類中心,隨后再計算每個樣本到達聚類中心的最短距離,然后再計算出每個樣本被選為后一個聚類中心的概率,概率公式為
其中:D(xi)表示第i個樣本與當前已有聚類中心之間的最短距離; n為樣本總數(shù);P表示每個樣本點被選為下一個聚類中心的概率。
通過 K-Means++ 聚類算法,產生不同大小和數(shù)量的先驗錨框,使之盡可能與實際目標框相匹配,從而提高系統(tǒng)檢測的準確度,最終確定的錨框尺寸見表2。
1.3.2 引入Vision Transformer 轉換器(transformer)已成為自然語言處理方面的主流模型,在圖像處理方面更是大放異彩。在目前以卷積神經網(wǎng)絡為核心的電腦視覺技術任務的重大背景下,Vision Transformer(ViT)的應用對卷積神經網(wǎng)絡的地位產生了沖擊。Dosovitskiy等將一個圖像分割成數(shù)個固定大小的圖像塊,并將其編碼成序列向量作為transformer輸入,成功解決圖像處理領域在transformer中的輸入問題。同時經過試驗證明,當預訓練數(shù)據(jù)更豐富時,transformer在圖像處理領域的性能會超越卷積神經網(wǎng)絡[20]。本試驗所用番茄圖像包括尺度不同的目標,故在檢測網(wǎng)絡中融入transformer模塊解決尺度問題,ViT圖像處理流程如圖3所示。
ViT和普通Transformer在輸入上有所區(qū)別,后者將標記嵌入的一維序列作為輸入,而前者在處理二維圖形時,要把圖形x∈H×W×C重塑為一組二維的扁平序列xp∈N×(P2C),表示維度,H和W是原始圖形的高和寬,C是圖形通道數(shù)量,P是每個圖形塊的高寬,N=HW/P2既是圖形塊的總量,又是ViT輸入序列的有效長度。從ViT的每個層中產生一個恒定維度為D的特征向量,通過利用可訓練的線性投影可以把找平的像素塊映射到D維度上,如公式(2)所示。隨后在圖像序列(z0D=xclass)前加入一個具有學習能力的嵌入,其在Transformer編碼器輸出時的狀態(tài)z0L用y作圖像表示,如公式(5)所示。
其中:E表示線性變換;Epos表示在pos處的線性變換;zl表示第幾個圖像序列;zl′表示操作完成后的第幾個序列;MSA表示多頭部自注意力; LN表示歸一化;MLP表示多層感知機。
但Transformer也有不足之處,提取到的特征魯棒性較弱,經過研究證明,卷積神經網(wǎng)絡能夠通過Transformer提高性能。本研究通過將C3模塊中的BottleNeck替換為TransformerBlock實現(xiàn)二者的有機結合構成C3TB,C3和C3TB結構如圖4所示。
1.3.3 添加GAM注意力模塊 注意力機制的添加能使網(wǎng)絡關注到圖像中的關鍵點,有助于提高番茄檢測任務的性能。不論是擠壓激勵網(wǎng)絡(squeeze and excitation network,簡稱SENet),還是之后的卷積注意力模塊(convolutional block attention module,簡稱CBAM),都沒有注意到空間-通道之間的相互作用,而削弱了跨緯度的交互。鑒于上述問題,本研究在Backbone末端使用全局注意力機制(global attention mechanism,簡稱GAM)[21],使網(wǎng)絡關注更重要的區(qū)域,減少背景因素的影響,保留更多的特征信息,提升網(wǎng)絡檢測準確度,GAM模塊整體結構如圖5所示。
輸入特征先經過通道注意力進行校正,再通過空間注意力繼續(xù)校正。圖6是通道注意力結構圖。首先將緯度大小為C×W×H的輸入特征經過三維排列保存3個緯度上的信息,其中C是特征通道數(shù)量,W和H分別是輸入特征的寬和高。隨后將輸出信息通過2層的多層感知器,第1層將C壓縮為C/R,R為壓縮比,再經由第2層恢復到C,最后再經由反三維排列操作,通過Sigmoid激活函數(shù)得到一個新的特征圖。
圖7是空間注意力結構圖,輸入特征緯度大小為C×W×H,通過2個卷積核為7×7的卷積層,實現(xiàn)空間信息的融合,同時進行通道的編碼和解碼操作,然后通過Sigmoid激活函數(shù)得到新的特征圖。
1.3.4 特征金字塔網(wǎng)絡改進 在卷積神經網(wǎng)絡中,圖像特征容易受淺層網(wǎng)絡的影響,而語義特征容易受深層網(wǎng)絡的影響,從而在目標檢測中因卷積神經網(wǎng)絡的這個特性而影響精度。根據(jù)這些現(xiàn)象,特征金字塔網(wǎng)絡(feature pyramid networks,簡稱FPN)隨之被提出,結構如圖8-a所示,通過使不同維度的特征圖中含有盡可能多的語義信息,再通過上采樣把頂層信息與下層信息加以結合,從而實現(xiàn)相應的目的,并且每層都是獨立進行預測。但是FPN這種設計有種缺陷,只增加了特征圖的語義信息,定位信息并不能進行傳輸。為了解決相關問題,又建立了一個由底往頂?shù)慕鹚?,即與FPN操作相反的路徑聚合網(wǎng)絡(path aggregation network,PANet),結構如圖8-b所示。通過2種結構的結合,檢測精度有了明顯的提升。
加權雙向特征金字塔網(wǎng)絡(bidirectional feature pyramid network,簡稱BiFPN)最先在EfficientDet中被提到,通過在輸入與輸出節(jié)點中間增加一個直接相連路徑,可以使得在不提高計算量的前提下,能夠融入更多需要的特性。與PANet中僅有一條自頂向下和一條自底向上路線有所不同的是,把所有雙向路線視作一條特征網(wǎng)絡層,并多次重復同一層來進行更深層次的特性融合,BiFPN如圖8-c所示。在此操作中加快了計算的速度,如公式(6)所示:
式中:權重ωi≥0,ωj≥0;Ii為輸入其中的特征;ε表示學習率;O表示結果。鑒于標量權重沒有邊界,為保證訓練穩(wěn)定,應用softmax實現(xiàn)歸一化運算。把Backbone中P3、P4、P7這3個不同尺度的特征都輸入到BiFPN中,然后即可建立 20×20、40×40、80×80這3個緯度的預測分支。以P6節(jié)點為例說明融合過程,如下所示:
式中:Ptd6表示第6節(jié)點自頂向底的中間特征;Pin6表示第2節(jié)點輸入的特征;Pin7表示第7節(jié)點輸入的特征;Pout5表示第5節(jié)點自底向頂?shù)妮敵鎏卣?;Pout6表示第6節(jié)點自底向頂?shù)妮敵鎏卣?;Resize表示上取樣或下取樣;Conv表示卷積處理。根據(jù)上述優(yōu)勢,把YOLOv5s模型里的金字塔模塊修改為BiFPN,以增強特征融合,并提高測速率。
1.4 試驗環(huán)境
本試驗使用的運行系統(tǒng)為Windows 10,并使用了Pytorch作為深度學習結構,詳細試驗環(huán)境設置見表3。訓練時優(yōu)化器使用隨機梯度下降法(stochastic gradient descent,簡稱SGD),初始的學習率參數(shù)調整為0.01,余弦退火超參數(shù)設置成0.1,動量因子調整為0.937,權重衰減系數(shù)最終確定為0.000 5。網(wǎng)絡圖像輸入大小為640×640,Batchsize設置為16,總訓練300個epoch。此次試驗于2022年11月1日在江西理工大學電氣學院315實驗室完成。
1.5 評價指標
基于量化判斷方法并分析試驗結論,本研究選擇在目標測試中使用的精度(precision,簡稱P)、召回率(recall,簡稱R)和均值平均精度(mean average precision,簡稱mAP)作為相關衡量指標。P是用來表示真正的正樣本在檢測結果為正樣本中所占的比例,R是表示被檢測到的正樣本在真正的正樣本中的占比,mAP表示各個類別平均精度的均值,相關公式如下所示:
式中:TP為正確分配的正樣本,即番茄成熟并且檢測結果正確;FP為分配錯誤的正樣本,即番茄成熟但被檢測為不成熟或者腐敗的;FN為分類錯誤的負樣本;AP表示平均精準度;C為類別數(shù)。
2 結果與分析
2.1 訓練結果
將原始模型與改進后的模型在相同環(huán)境下訓練300輪,mAP曲線對比如圖9所示,橘色曲線為改進前,藍色曲線為YOLOv5s改進后。其中橫坐標為300輪訓練次數(shù),縱坐標為mAP。由圖9可知,在訓練30輪前模型收斂速度極快,經過100輪訓練2個模型都趨于穩(wěn)定,同時改進后的模型在mAP上相較于原模型得到明顯提升,表明模型改進可行。
2.2 對比試驗
為進一步評價本研究中改進方法對番茄的檢驗能力,本試驗將經過優(yōu)化的YOLOv5s與SSD、Faster-RCNN、YOLOv4-tiny以及YOLOv5s目標檢測方法進行比較,并采用相同的數(shù)據(jù)劃分和試驗設置。由表4可知,改進的YOLOv5s算法在均值平均精度和召回率上比其他算法有更好的表現(xiàn),相較于YOLOv5s,分別提升了3.3、5.6百分點,分別達到了93.9%和92.7%。同時,由于本算法召回率的提升,導致會對每幅圖像檢測更多的目標,從而幀率下降了18,但仍快于SSD、Faster-RCNN和YOLOv4-tiny,滿足實時性的要求。
2.3 消融試驗
對經過優(yōu)化的YOLOv5s模型,通過消融對比試驗結果來證明每個改進模塊對模型的優(yōu)化效果,試驗結果見表5。其中改進模型1是通過使用K-means++修改了先驗錨框,從而使該錨框的匹配性提高,均值平均精度也增加了1.3百分點;改進模型2是改變金字塔網(wǎng)結構為加權雙向金字塔網(wǎng)絡,均值平均精度增加1.7百分點;改進模型3是改變主干網(wǎng)絡增加GAM注意力,均值平均精度增加2.5百分點;改進模型4是改變頸部網(wǎng)絡C3結構為C3TB,均值平均精度增加2.1百分點。把4個優(yōu)化方案同時融入到一個模型,均值平均精度相較于原YOLOv5s模型整體增加3.3百分點。
2.4 試驗結果分析
為更好地檢驗經優(yōu)化后的YOLOv5s方法的測試效果,選擇了測試集中的一些圖片進行了檢測,番茄測試效果如圖10所示,圖10-a是原始圖像;圖10-b是原始YOLOv5s算法的檢測結果,其中紅色箭頭表示漏檢的番茄;圖10-c是優(yōu)化后YOLOv5s方法的測試結果。通過圖10-b和圖 10-c 對比可知,原始YOLOv5s算法對圖 10-b 中紅色箭頭所指番茄漏檢,改進后的YOLOv5s算法能準確地檢測出這些目標,并且置信度得到提高,能夠捕捉到關鍵信息進而對遮擋目標也有較好的檢測效果。
3 討論與結論
本研究根據(jù)目前對番茄的傳統(tǒng)檢測方法以及對密集目標漏檢的測量精度較差的情況,給出一個更完善的YOLOv5s檢測模型。通過使用 K-means++ 算法對自制番茄數(shù)據(jù)集提高先驗錨框匹配度、對YOLOv5s主干網(wǎng)絡增加注意力模塊、設計C3TB模塊替換C3模塊、優(yōu)化特征金字塔網(wǎng)絡等提高模型的檢測能力。通過對比試驗證明,完善后的YOLOv5s模型相比于原始的模型,mAP提升了3.3%且置信度更高,對遮擋目標的辨識度提高減少了漏檢,雖然檢測速率有所下降,但本模型精度能夠滿足實際采摘的需求,為番茄自動采摘提供技術支持。
參考文獻:
[1]李君明,項朝陽,王孝宣,等. “十三五”我國番茄產業(yè)現(xiàn)狀及展望[J]. 中國蔬菜,2021(2):13-20.
[2]王海楠,弋景剛,張秀花.番茄采摘機器人識別與定位技術研究進展[J]. 中國農機化學報,2020,41(5):188-196.
[3]王文杰,貢 亮,汪 韜,等. 基于多源圖像融合的自然環(huán)境下番茄果實識別[J]. 農業(yè)機械學報,2021,52(9):156-164.
[4]阮承治,趙德安,陳 旭,等. 雙指型農業(yè)機器人抓取球形果蔬的控制器設計[J]. 中國農機化學報,2019,40(11):169-175.
[5]陳科圻,朱志亮,鄧小明,等. 多尺度目標檢測的深度學習研究綜述[J]. 軟件學報,2021,32(4):1201-1227.
[6]趙立新,邢潤哲,白銀光,等. 深度學習在目標檢測的研究綜述[J]. 科學技術與工程,2021,21(30):12787-12795.
[7]包曉敏,王思琪.基于深度學習的目標檢測算法綜述[J]. 傳感器與微系統(tǒng),2022,41(4):5-9.
[8]邵延華,張 鐸,楚紅雨,等. 基于深度學習的YOLO目標檢測綜述[J]. 電子與信息學報,2022,44(10):3697-3708.
[9]李 萍,邵 彧,齊國紅,等. 基于跨深度學習模型的作物病害檢測方法[J]. 江蘇農業(yè)科學,2022,50(8):193-199.
[10]Girshick R,Donahue J,Darrell T,et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]//2014 IEEE Conference on Computer Vision and Pattern Recognition.Columbus,2014:580-587.
[11]Girshick R.Fast R-CNN[C]//2015 IEEE International Conference on Computer Vision. Santiago,2016:1440-1448.
[12]Ren S Q,He K M,Girshick R,et al. Faster R-CNN:towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence,2017,39(6):1137-1149.
[13]張文靜,趙性祥,丁睿柔,等. 基于Faster R-CNN算法的番茄識別檢測方法[J]. 山東農業(yè)大學學報(自然科學版),2021,52(4):624-630.
[14]龍潔花,趙春江,林 森,等. 改進Mask R-CNN的溫室環(huán)境下不同成熟度番茄果實分割方法[J]. 農業(yè)工程學報,2021,37(18):100-108.
[15]Liu W,Anguelov D,Erhan D,et al. SSD:single shot multiBox detector[C]//European Conference on Computer Vision.Cham:Springer,2016:21-37.
[16]Redmon J,Divvala S,Girshick R,et al. You only look once:unified,real-time object detection[C]//2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas,NV,USA.IEEE,2016:779-788.
[17]文 斌,曹仁軒,楊啟良,等. 改進YOLOv3算法檢測三七葉片病害[J]. 農業(yè)工程學報,2022,38(3):164-172.
[18]張兆國,張振東,李加念,等. 采用改進YoloV4模型檢測復雜環(huán)境下馬鈴薯[J]. 農業(yè)工程學報,2021,37(22):170-178.
[19]黃彤鑌,黃河清,李 震,等. 基于YOLOv5改進模型的柑橘果實識別方法[J]. 華中農業(yè)大學學報,2022,41(4):170-177.
[20]Dosovitskiy A,Beyer L,Kolesnikov A,et al. An image is worth 16x16 words:transformers for image recognition at scale[EB/OL]. 2020:arXiv:2010.11929.https://arxiv.org/abs/2010.11929.
[21]Liu Y C,Shao Z R,Hoffmann N.Global attention mechanism:retain information to enhance channel-spatial interactions[EB/OL]. 2021:arXiv:2112.05561.https://arxiv.org/abs/2112.05561.