?

基于改進YOLOX 的自然環境下核桃識別算法研究

2024-03-09 08:40鐘正揚云利軍楊璇璽陳載清
河南農業科學 2024年1期
關鍵詞:步長核桃卷積

鐘正揚,云利軍,楊璇璽,陳載清

(1.云南師范大學信息學院,云南 昆明 650500;2.云南省教育廳計算機視覺與智能控制技術工程研究中心,云南 昆明 650500;3.云南省林業調查規劃院生態分院衛星林業應用中心,云南 昆明 650500)

核桃作為云南省第一大木本經濟作物,截至2020 年底,全省種植面積達28 670 km2[1],產業綜合產值412.36 億元,核桃種植已經成為廣大群眾增收致富的重要產業。傳統的人工采摘方式耗時長、效率低,且伴有一定危險性,不能很好地滿足當下采摘需求,使用機器人代替人工進行核桃采摘作業是未來的發展趨勢。核桃的識別作為自動化采摘的首要任務,其識別精度將直接影響采摘的效果。因此,高精度、高速度的核桃識別方法對采摘工作至關重要。針對近背景色果實識別問題,國內外研究學者提出了很多解決方法。袁國勇等[2]提出利用黃瓜果實與果梗葉片在顏色深度上的差異,分別提取RGB 顏色分量信息,采用Bayes 分類判別模型進行果實的判別并達到73%以上的分割正確率。袁挺等[3]提出利用黃瓜果實、莖、葉在各光譜波段的分光反射特性來區分近色系目標和背景,并利用果實的灰度特征,使用P參數閾值法進行圖像分割,對黃瓜果實的識別準確率為83.3%。章云等[4]提出利用2R-G-B 色差模型將核桃從背景中提取出來,采用最佳閾值函數進行圖像分割,最后經形態學濾波后采用Canny 算子進行邊緣檢測,對山核桃果實的有效識別率可達86.7%。傳統機器視覺方法雖然可以基本實現果實識別,但太過于依賴工程師對圖片中重要特征的提取,不僅需要長時間的調試和誤差處理,在復雜場景下的準確率也明顯下降。卷積神經網絡(CNN)在目標檢測領域的異軍突起,為實現高精度、高速率的果實識別提供了新方法。樊湘鵬等[5]提出在Faster R-CNN 模型框架下使用VGG16特征提取器并加入批歸一化處理和感興趣區域校準算法,對核桃園林中青皮核桃識別與定位的平均精確率為97.56%;王梁等[6]提出一種基于Mask-RCNN 的自然場景下油茶果目標與檢測算法,對油茶果目標識別的平均檢測精度為89.42%;郝建軍等[7]在YOLOv3 模型的基礎上,使用Mobile Net-V3作為骨干網絡,并輔以預訓練模型、錨框縮放調整以及Mixup 數據增強等方法,對青皮核桃平均檢測精度可達94.52%?,F有的目標檢測網絡多以串行的方式不斷對特征圖進行下采樣以增大感受野,圖片中的小目標由于所占像素較少,特征信息隨著網絡層數的加深而逐漸丟失,影響了網絡對小目標檢測的準確度。本研究利用多層特征融合模塊將Swin Transformer 提取的特征信息與主干網絡的特征圖進行特征融合,以減少小目標特征信息的丟失。在此基礎上引入Repblock 模塊和Transition Block 模塊進一步提升模型的整體性能,最終獲得一個檢測精度高、速度快且參數量適中的核桃檢測算法。

1 材料和方法

1.1 數據采集

試驗所需核桃圖像采集于云南省鳳慶縣正義村核桃示范點,采集時間為2022 年9 月2 日。采集設備為大疆Phantom 4 Pro 無人機,無人機鏡頭有效像素為2 000 萬,利用無人機在自然光照條件下對多棵山核桃樹上的成熟待采摘果實進行多角度環繞拍攝,無人機鏡頭距離核桃1~2 m。采集到的圖像尺寸為5 472 像素×3 648 像素(寬高比為3∶2),共采集圖像1 471 張,包括順光、逆光、密集小目標、遮擋等多種果實場景,圖像存儲格式為JPG。

1.2 數據預處理

無人機環繞拍攝過程中會產生一定數量的重復圖片,為了降低這部分圖片對模型訓練的干擾,通過人工篩選的方式將這部分圖片篩選出來并進行刪除。由于無人機原始拍攝圖像分辨率為5 472像素×3 648 像素,遠大于正常深度學習訓練圖像的大小,因此按照原始圖像的寬高比(3∶2)對原始圖像進行裁剪,裁剪后的圖像大小為684 像素×456 像素,人工篩選出不清晰圖片以及不包含核桃圖片并進行刪除,最終得到包含核桃果實圖片2 680 張。對數據集圖片按照9∶1的比例隨機劃分訓練驗證數據和測試數據,并將訓練驗證數據按照9∶1 的比例隨機劃分訓練數據和驗證數據,最終得到訓練集圖片2 170 張、驗證集圖片242 張及測試集圖片268張。選擇LabelImg 軟件作為數據集標注軟件,采取人工標注的方式按照PASCAL VOC2007 的標準對數據集中核桃果實進行框選,對遮擋面積超過核桃60%的核桃不作標注,同時針對少數遮擋面積百分比不明確的情況,在標注時會結合LabelImg 軟件提供的核桃邊界坐標對遮擋面積進行判定。標注信息包含目標框的位置坐標以及類別信息,存儲為xml格式,共標記核桃樣本10 173個。

1.3 相關算法

1.3.1 YOLOX-S 算法 目前,目標檢測算法主要分為以Faster R-CNN[8]為代表的Two-Stage 目標檢測算法及以YOLO 和SSD[9]為代表的One-Stage 目標檢測算法。YOLOX 算法[10]由曠視科技研究院于2021 年提出,共有5 種標準模型,YOLOX-S 在保持高性能、高實時性的同時相較于其他標準模型更具輕量化,利于部署到計算資源有限的移動設備或邊緣設備上,其網絡結構如圖1 所示。YOLOX-S 的輸入端在采用了和YOLOv5 一樣的Mosaic[11]數據增強的基礎上,還引入了一種額外的增強策略Mixup[12]對圖片進行預處理,高效的數據增強方式使得模型在無預訓練權重的情況下依舊有較好的檢測效果。在主干網絡和頸部2 個部分,沿用了YOLOv5 的CSPDarknet 結構及PANet 結構[13],不同的是,在YOLOX-S 中采用了SiLU 函數替代LeakyReLU 函數作為激活函數。在頭部部分,YOLOX-S 使用Decoupled Head 作為檢測部分并采用了Achor free、Multi positives 和SimOTA 的方式對頸部輸出的3 個尺度的特征圖進行檢測。

圖1 YOLOX-S網絡結構Fig.1 Network structure diagram of YOLOX-S

1.3.2 Swin Transformer 算法 Swin Transformer 由LIU 等[14]提出,是一種采用滑動窗口機制和層次結構的Transformer 網絡。Swin Transformer 網絡結構分為圖像處理、Swin Transformer Stage 2 個部分,其網絡結構如圖2所示。

圖2 Swin Transformer網絡結構Fig.2 Network structure of Swin Transformer

圖像處理部分通過Patch Partition 層實現,輸入的像素分辨率圖像先經過Patch Partition 轉化為Patches 分辨率圖像。Swin Transformer Stage 部分包括 4 個 Stage,由 Linear Embedding 層、Swin Transformer Block 層和Patch Merging 層組成。除第1 個Stage 由Linear Embedding 層和Swin Transformer Block 層組成外,其余的均由Patch Merging 層和Swin Transformer Block 層組成。Linear Embedding層主要實現的是Patches分辨率圖像維度的變換,即轉換為所需要的維度。Patch Merging 層類似于CSPdarknet 中的Focus 層,作用是使圖像的分辨率減半,通道數加倍,從而在Transformer 中實現層次結構。在Swin Transformer 中,Swin Transformer Block 都是成對出現的,由窗口多頭注意力(Windows multi-head self-attention,W-MSA)和滑動窗口多頭注意力(Shifted windows multi-head self-attention,SW-MSA)組成,如圖3所示。

圖3 Swin Transformer Block結構Fig.3 Swin Transformer Block structure

1.4 核桃識別算法

基于YOLOX-S 算法,本研究在主干特征提取網絡中引入基于Swin Transformer 的多層特征融合模塊(Multi-layer feature fusion with swin transformer,MFFWS),通過Swin Transformer 特有的多頭注意力機制對核桃特征進行提取,并與主干特征提取網絡中得到的特征圖進行特征融合,引入Repblock 模塊代替原有的CSP 模塊并使用Transition Block 模塊進行主干部分的下采樣操作,改進后的網絡結構如圖4所示。

1.4.1 引入基于Swin Transformer 的多層特征融合模塊 YOLOX-S 使用CSPDarknet 結構作為主干特征提取網絡,以串行的方式不斷對特征圖進行下采樣以增大感受野。但圖片中的小目標本身所占像素較少,隨著網絡層數的不斷加深,特征信息逐漸丟失,使得高層特征圖中小目標的特征信息越來越少,影響了小目標檢測的準確度。特征金字塔網絡(Feature pyramid network,FPN)[15]中通過將低層高分辨率的特征圖與高層強語義的特征圖進行特征融合,即Concat 操作,提高了對小目標的識別性能。因此,基于FPN 的思想設計了結合Swin Transformer的多層特征融合模塊,用于替換YOLOX-S 主干特征提取網絡中的CSP模塊,其具體結構如圖5所示。

圖5 多層特征融合模塊結構Fig.5 Structure of multi-layer feature fusion module

MFFWS 模塊的總體結構借鑒了ResNet[16]中殘差結構的思想。MFFWS 模塊共有2個輸入,分別對應Backbone 中有效特征層的輸入和經過修改的Swin Transformer 的輸出,經過修改后的Swin Transformer 結構如圖6 所示。修改后的Swin Tansformer 只保留了3 個Stage,并且為了減少計算量,每個Stage 中的Swin Transformer Block 的數量均設為2。整個網絡共有3個輸出,分別與CSPDarknet中的3 個有效特征層一一對應。如圖5 所示,來自Backbone 中有效特征層的輸入流會通過1個CBS模塊來實現下采樣,下采樣后的特征圖會被劃分為兩部分。其中第一部分的特征圖會通過切片操作將特征圖的維度一分為二,為減少運算量,僅其中1個分割特征圖會通過CSP 模塊提取更多的語義特征,另1個分割特征圖參照殘差結構的設計思想與通過CSP 模塊的分割特征圖進行跳躍連接,得到第1 個分支的特征圖;而第二部分的特征圖僅會通過1 個卷積核大小為1×1、步長為1 的卷積進行通道的壓縮。最后,來自Swin Transformer 的輸入流會通過1個卷積核為1×1、步長為1 的卷積進行通道的壓縮,并和第二部分的特征圖進行堆疊作為第2 個分支的特征圖。將2 個分支的特征圖進行堆疊,經過1 個卷積核大小為1×1、步長為1 的卷積進行通道的壓縮并作為最終的輸出。

圖6 修改后Swin Transformer網絡結構Fig.6 Modified Swin Transformer structure

1.4.2 Repblock 模塊 Repblock 模塊于YOLOv6[17]中被提出,相較于CSP 中的CBS 卷積模塊,在Repblock 中使用RepVGG 作為卷積模塊。如圖7 所示,Repblock由1個RepVGG模塊和RepVGG Unit模塊組成。其中RepVGG Unit 模塊由X 個RepVGG 模塊組成。

圖7 Repblock模塊結構Fig.7 Repblock module structure

RepVGG 模塊取自于RepVGG[18]網絡,其基本思想就是在進行網絡訓練時引入特殊的殘差結構進行輔助訓練。如圖8 所示,共有3 個分支,第1 個分支為1 個卷積核大小為3×3、步長為1 的卷積加1 個批歸一化層;第2 個分支為1 個卷積核大小為1×1、步長為1的卷積加1個批歸一化層;第3個分支當且僅當輸入通道等于輸出通道時才有效,由1 個批歸一化層組成。3 個分支的結果會進行相加并經過SiLU 激活函數作為最終的輸出。而在預測時,則將這個殘差結構等效于一個普通的3×3卷積以降低網絡的復雜度。1.4.3 Transition Block 模塊 Transition Block 模塊取自YOLOv7[19],常用的下采樣方式為步長為2的最大池化或卷積核大小為3×3、步長為2 的卷積。Transition Block 模塊對這2 種方式進行了整合,其中1 個分支為1 個步長為2 的最大池化加1 個卷積核大小為1×1、步長為1 的卷積,另1 個分支為1 個卷積核大小為1×1、步長為1的卷積加1個卷積核大小為3×3、步長為2 的卷積,2 個分支的結果會進行堆疊并作為最終的輸出,從而在實現下采樣的同時完成了通道數的翻倍。其結構如圖9所示。

圖8 RepVGG結構Fig.8 RepVGG structure

圖9 Transition Block模塊結構Fig.9 Transition Block module structure

1.5 試驗環境

試驗在基于Python 語言和PyTorch 框架搭建的深度學習環境下進行算法的訓練和測試,具體試驗環境如表1所示。

表1 試驗環境配置Tab.1 Experimental environment configuration

1.6 訓練參數設置

迭代輪次(Epoch)的值設為300,批訓練大?。˙atch_size)設置為2。使用SGD 優化器對學習率進行優化,優化器使用的動量參數值設置為0.937,優化器權重衰減值設為5e-4。初始學習率設為5e-5,最大學習率和最小學習率分別設為5e-4和5e-6,使用線性學習率熱身優化策略在前4個迭代輪次線性增加到最大學習率,在達到最大學習率后使用余弦退火衰減策略[20]來降低學習率,最后15 個迭代輪次將學習率設為最小學習率,具體學習率變化曲線如圖10所示。為了增強圖像的多樣性,在訓練前對訓練集進行隨機數據增強,隨機數據增強的方式包括隨機縮放、翻轉和色域變換。前210 迭代輪次還會對訓練集隨機進行Mosaic 數據增強,其中Mosaic 增強的概率設為50%,在進行Mosaic 增強的前提下有50%的概率會再進行Mixup數據增強。數據增強后會將圖像按照原先寬高比縮放為640 像素×640 像素,并更新預測框的位置信息,圖像多余部分會添加灰度條。

圖10 學習率變化曲線Fig.10 Learning rate variation curve

1.7 評價指標

使用訓練得到的權重對測試集進行評估,評價指標包括精準率(Precision,P)、召回率(Recall,R)、平均精度(Average precision,AP)以及每秒識別圖像數量(Frames per second,FPS)。精準率、召回率和平均精度的計算表達式如公式(1)—(3)所示:

式中,TP為正樣本被正確識別的數量,即被正確識別的核桃數量;FP為負樣本被誤檢為正樣本的數量,即背景被誤檢為核桃的數量;TN為負樣本被正確識別的數量,即被正確識別出是背景的數量;FN為未被檢測出的正樣本數量,即未被正確識別的核桃數量。

平均精度包括AP50 和AP 2 種,均采用Pascal VOC2012 的方式計算,AP50 表示IOU 的值取0.5 時的平均精度;AP 表示IOU 的值從0.5 取到0.95 且步長為0.05時的平均精度。

2 結果與分析

2.1 不同網絡模型對比

將改進后的YOLOX-S(Improved YOLOX-S)與當前部分主流算法進行性能對比。為了更直觀地比較不同網絡模型在訓練過程中的檢測效果,每間隔50 輪選取最好的平均精度AP50 值進行繪圖,不同網絡模型在測試集上的平均精度AP50 值如圖11所示,具體數據如表2 所示。從表2 可以看出,與Faster R-CNN 相比,YOLO 系列的算法擁有更高的平均精確度、更小計算量以及更快的檢測速度,由此可見,YOLO 系列的目標檢測算法更適合于自然環境下核桃的識別;與原始的YOLOX-S 相比,改進后的YOLOX-S 算法在AP50 和AP 上分別提升了0.62、0.55 百分點,但由于改進后的YOLOX-S 算法在主干特征提取網絡中添加了Swin Transformer 模塊,在檢測速度上有一定的下降,檢測速度為46 f∕s。

表2 不同網絡模型比較結果Tab.2 Comparision results of different network models

圖11 不同網絡模型測試結果Fig.11 Test results of different network models

2.2 消融試驗結果

為了驗證本研究改進的每一個部分對模型性能的提升效果,在保證配置環境及初始訓練參數一致的情況下,使用YOLOX-S 作為基線模型進行消融試驗,逐步添加各個改進方法,消融試驗共設4組(表3),第1組為原始YOLOX-S算法(G1);第2組為在主干特征提取網絡添加多層特征融合模塊(G2);第3 組是在第2 組的基礎上將CSP 模塊更換為Repblock 模塊(G3);第4 組是在第3 組的基礎上使用Transition Block 完成主干特征提取網絡部分的下采樣(G4)。

表3 消融試驗結果對比Tab.3 Comparison of ablation test results

從表3 可以看出,與G1 相比,G2 在主干特征提取網絡中添加MFFWS 模塊,AP50 提高了0.32 百分點,這是因為核桃大小不一,較小核桃的特征信息隨著網絡層數的加深逐漸丟失,通過Swin Transformer 進行特征提取并進行特征融合可以使其特征信息在高層特征圖得到保留,使網絡對核桃的識別效果變好;但AP 卻有所下降,這主要是因為其在IOU 閾值大于0.75 時的平均精確率過低,說明加入MFFWS 模塊使得模型對難以定位物體檢測效果不佳。與G2 相比,G3 的AP50 提高了0.21 百分點,AP 提高了0.94 百分點,說明加入Repblock 模塊進一步提高了模型對于難以定位物體的檢測效果。與G3 相比,G4 的AP50 提高了0.09 百分點,參數量減少了1.76 M,說明使用Transition Block 可以提高精度同時還可以有效減少參數量。

2.3 可視化結果分析

改進后的YOLOX-S 算法和YOLOX-S 檢測結果的對比圖如圖12所示,改進后的YOLOX-S算法有效提升了被遮擋環境下核桃的識別效果(圖12C1);對于近背景色的核桃目標,YOLOX-S 算法存在大量漏檢情況,而改進后的YOLOX-S 算法可以檢測出部分目標(圖12C2);如圖12B3、C3 所示,由于光照導致部分樹葉顏色與核桃一致,YOLOX-S 算法錯誤地將其識別為核桃目標,而改進后的YOLOXS 算法通過添加多層特征融合模塊,加強了網絡對小目標特征信息的學習,可以最大限度地減少背景的負面影響,從而降低誤檢率。改進后的YOLOXS 算法相比原始YOLOX-S 對核桃具有更好的檢測效果。

圖12 YOLOX-S改進前后檢測結果對比Fig.12 Comparison of detection results before and after YOLOX-S improvement

3 結論與討論

針對核桃體積小且與背景色相似情況,本研究提出了一種基于改進YOLOX 的自然環境下核桃識別算法。首先,在主干特征提取網絡中加入多層特征融合模塊,通過Swin Transformer 特殊的多頭注意力機制提取出不同特征圖下的核桃語義信息,并將提取到的語義信息與CSPDarknet 中的特征圖進行融合,改善了原高層特征圖中小目標信息較少的問題,在提升模型檢測精度的同時降低檢測目標的誤檢率;其次,將CSP 模塊替換為Repblock 模塊,提升了模型對難以定位物體的檢測效果;最后,引入Transition Block 模塊,將池化和卷積2 種下采樣方式結合,進一步提高網絡的檢測精度,減少參數量。結果表明,相較于其他模型,使用改進后的YOLOX-S 算法可以改善核桃識別中漏檢和誤檢情況,對于核桃的識別有著更好的表現,AP50 達到了96.72%。

目前,對于自然環境下的核桃識別依舊存在許多不足,其中最艱巨的挑戰是核桃的遮擋問題。盡管本研究提出的方法在識別遮擋核桃方面取得了一定的改進,但仍需進一步提高算法的性能,以滿足農業生產需要。此外,受光照影響,部分核桃呈現出與樹葉相近的顏色,增加了算法區分它們的難度。后續會針對光照因素進行研究,尋找最佳的光照條件,從而避免光照因素所帶來的干擾。最后,增加Swin Transformer 模塊使模型在檢測速度方面有一定的下降,還具有可提升的空間。在后續的研究工作中,將不斷對算法進行優化,實現對核桃準確和快速識別的最終目標,為后續的核桃產業智能化提供良好的識別技術方案。

猜你喜歡
步長核桃卷積
基于Armijo搜索步長的BFGS與DFP擬牛頓法的比較研究
小核桃變身“致富果”
基于3D-Winograd的快速卷積算法設計及FPGA實現
從濾波器理解卷積
可賞可食可入藥的核桃
基于傅里葉域卷積表示的目標跟蹤算法
黃龍核桃
基于逐維改進的自適應步長布谷鳥搜索算法
一種新型光伏系統MPPT變步長滯環比較P&O法
一種基于卷積神經網絡的性別識別方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合