?

一種輕量型果園環境果實檢測方法

2024-01-13 11:22商高高韓江義倪萬磊
關鍵詞:剪枝損失精度

商高高, 姜 錕, 韓江義, 倪萬磊

(江蘇大學 汽車與交通工程學院, 江蘇 鎮江 212013)

果實的準確檢測是實現自主采摘機器人自動作業的關鍵[1].計算機視覺技術是實現低成本、快速響應果實檢測的重要途徑和發展方向[2].傳統視覺果實檢測通過提取顏色、形狀、紋理等特征,利用SVM、 AdaBoost、HOG、貝葉斯分類器等方法進行果實檢測[3-6].傳統的視覺識別方法在檢測速度、精度、魯棒性上還有較大的提升空間.隨著深度學習理論的不斷創新,越來越多的學者使用卷積神經網絡檢測果園作物[7].文獻[8]使用反向傳播與隨機梯度下降算法對 Faster RCNN進行改進,并進行端到端的訓練,對奇異果檢測平均精度為89.3%,檢測速度為0.274 s.文獻[9]采用Resnet50作為Faster RCNN的特征提取網絡,實現對兩種不同成熟度椰子的檢測,平均準確率為89.4%,平均檢測時間為3.124 s.Faster RCNN算法雖能實現一定精度的果實識別,但是屬于兩階段模型,推理時間較長.文獻[10]提出的SSD單階段檢測算法逐漸在果實檢測中應用,將圖像量綱一化到統一大小后直接放入一個卷積神經網絡中回歸預測出目標物體的類別和位置信息.彭紅星等[11]將SSD深度學習模型中的VGG16輸入模型替換為ResNet-101模型,并運用遷移學習方法和隨機梯度下降算法優化SSD深度學習模型,得到了89.53%的平均準確率.由于SSD檢測算法在檢測精度上仍有一定的欠缺,文獻[12]提出的單階段檢測YOLO系列算法得到廣泛推廣與改進, YOLO系列算法通過不斷的優化,精度高于SSD算法.文獻[13]采用DenseNet方法對YOLOv3網絡中的低分辨率特征層進行改進,用于檢測光照波動、蘋果重疊和枝葉復雜背景下不同生長階段的蘋果,實現了0.896的F1得分,平均檢測時間為0.304 s.蔡舒平等[14]提出了一種改進型的YOLOv4 目標檢測模型對果園障礙物進行分類和識別,準確率和召回率分別為 96.92%和 91.43%,視頻流檢測速度為 58.5 幀/s.易詩等[15]采用CSPResNest50作為YOLOv4的特征提取網絡,采用遞歸的金字塔進行特征的融合,所得到的模型精度為94.6%,視頻檢測速度為51 幀/s.文獻[16]在YOLOv5s中的骨干結構加入注意力模塊,對損失函數優化并將其部署人工智能 (AI)邊緣系統,在AI邊緣系統的檢測速度為28幀/s.自主采摘機器人對果實識別的實時性要求較高,且要易于在低算力設備中部署.但是上述卷積神經網絡方法仍存在精度與檢測速度不平衡、模型龐大冗余等問題.

文中以YOLOv4為基礎,引入焦點損失函數(Focal Loss)加強模型對負樣本的挖掘能力,并提出一種混合剪枝方法剔除模型不重要參數,加快檢測速度.通過多種試驗驗證其有效性,為自主采摘機器人提供可靠的視覺系統.

1 果實識別模型

1.1 YOLOv4算法

YOLOv4[17]是基于YOLOv3[18]的優化網絡模型.YOLOv4網絡結構如圖1所示.CSPDarknet53作為YOLOv4的特征提取網絡來提取圖像特征,是在Darknet53中引入跨局部特征融合網絡(cross stage partial network, CSPNet)[19]結構得到的.跨局部特征融合網絡等組件結構如圖2所示,將兩個階段的特征跨層融合,有效強化了網絡的學習能力,解決了推送過程中檢測算法需要大量計算的問題.特征提取網絡將得到的3個不同尺寸的特征輸入頸部網絡,頸部網絡除了有空間金字塔池網絡 (spatial pyramid pooling network, SPPNet)[20]外還有路徑增強網絡(path aggregation network, PANet)[21],空間金字塔池網絡主要是將不同大小的卷積特征轉化為相同長度的池化特征,路徑增強網絡則是在特征金字塔網絡 (feature pyramid networks, FPNet)[22]的基礎上加入下采樣連接底層特征與高層特征,加強多尺度語義信息的融合.此外,在數據預處理中引入了馬賽克數據增強,并對激活函數和邊界框損失函數等進行了優化.

圖1 YOLOv4網絡結構圖

圖2 YOLOv4組件結構圖

1.2 損失函數的改進

為了提高復雜背景下果實檢測能力,文中采用Focal Loss優化YOLOv4的置信度損失[23].Focal Loss通過調節正負樣本的損失權重來提高模型對困難樣本的挖掘能力,有利于提高模型精度.在原始YOLOv4中置信度損失L采用的是二值交叉熵(BCE)損失:

(1)

采用Focal Loss的置信度損失LFocal為

(2)

式中:γ為權重因子,作用是減少預測概率高的樣本損失,降低模型對于易分樣本的關注,提高對難分樣本關注.當γ=0時,α為平衡因子,平衡正負樣本損失.當γ>0時,α為超參數,與γ一起調節損失函數.在文中,α取值為0.25,γ取值為2.不同損失函數值的比較如表1所示,當真實值為1時,對于預測結果為0.95的簡單樣本,采用Focal Loss能以較大的比例降低簡單樣本的損失;當預測結果為0.50時,損失值會降低到原始值的0.062 5倍,對于預測結果為0.03的復雜樣本,Focal Loss僅會把原來的損失降為0.24,相當于提高了困難樣本損失權重.

表1 不同損失函數值的比較

所以,在YOLOv4算法中,模型總的損失函數為

L=LCIoU+Lobj+LFocal-conf,

(3)

(4)

(5)

(6)

(7)

(8)

1.3 剪枝算法

深度卷積神經網絡中存在顯著冗余,僅僅使用很少一部分權值就足以預測剩余的權值[24].而柑橘類數據集的數據特征相對單一,不需要太多的參數來擬合數據[25].為進一步降低模型的復雜性和參數,能在自主采摘機器人上部署,文中采用剪枝算法對模型進行優化.

剪枝算法可分為非結構化剪枝和結構化剪枝,非結構化剪枝得到的是稀疏分布的卷積核,參數矩陣非結構化,在計算過程中會造成內存獲取的不規則性,影響硬件工作效率,降低計算速度[26],因此采用結構化剪枝.結構化剪枝先用系數正則化訓練得到各個粒度的γ權重系數,然后根據選定的粒度進行結構剪枝.剪枝的粒度主要包括通道和層,其示意圖如圖3、4所示.通道剪枝算法使用Batch Normalization (BN)層的γ系數來評估輸入通道的貢獻評分,根據γ系數的分布和通道剪枝算法的剪枝率進行剪枝.層剪枝則針對每一個層連接的前一個Conv-BN-Mish(CBM)層進行評分,對各層的γ均值進行排序,根據選定閾值進行層剪枝.

圖3 通道剪枝示意圖

圖4 層剪枝示意圖

為使模型剪枝效果達到最佳,文中提出一種新的混合剪枝策略,其主要步驟如下: ① 稀疏訓練:采用稀疏尺度因子的方法來確定需要剪枝的參數,將L1正則化約束規則應用于文中模型的BN層系數,并不斷將其推向0,則尺度因子趨近于0時所對應的卷積核將對網絡推理貢獻越小,可以對其進行優化.稀疏訓練時的損失函數為

(9)

式中:第1項為網絡的訓練損失,x、y分別為訓練的輸入、輸出,W為網絡中的訓練參數;第2項為BN層γ系數的L1正則約束項,λ是懲罰因子.② 混合剪枝:在完成稀疏訓練后,可以以一定的剪枝速率進行通道、層混合剪枝,生成占用更少存儲空間的縮減模型.對于通道剪枝引入全局閾值來決定一個特征信道是否需要被修剪,引入安全閾值防止過度剪枝[27].對于每個層連接的卷積層,把對應的閾值合并進行剪枝,同時對激活函數的激活偏移值進行修正,降低剪枝時的精度損失.然后對通道剪枝模型的通道γ進行排序評分,進行通道層面的剪枝策略.③ 模型微調:完成剪枝后模型的精度可能會受到影響,因此需要再進行一次微調訓練,微調修剪后的模型.主要目的是克服剪枝后模型精度損失過大的問題,有效恢復損失的精度.使用與YOLOv4正常訓練相同的訓練參數,對剪枝后進行再訓練.

2 試 驗

2.1 數據集

本研究收集了江蘇省江心洲果園成熟的柑橘果實數據集.采集設備為微軟公司生產的Kinect V2,彩色攝像機參數分辨率為1 920(水平)×1 080(垂直)像素,視場角為70°(水平)×60°(垂直).開發了用C++編寫的專門軟件,通過鍵盤按鍵來收集和保存數據.在數據采集過程中,模擬了多個自主采摘機器人的采收場景,包括正光、背光、晴天、多云等光照條件下的拍攝,以及重疊的果實被果實的枝葉遮擋、密集分布和相機抖動場景.柑橘樹冠層外緣與相機的距離為0.5~1.5 m.數據采集示意圖如圖5所示.實際在果園拍攝的照片數量為1 200張.對訓練圖像進行對比度受限自適應直方圖均衡化(CLAHE)預處理,通過動態調節亮度分布來提高圖像的對比度,放大圖像中的噪聲.

圖5 數據采集示意圖

在試驗階段,會使用不同的算法對采集到的數據進行檢測.為了方便其他算法使用該數據集的數據,使用GitHub的開源圖像標注工具LabelImg對處理后的圖像進行標注,生成PASCAL VOC數據集.按8 ∶1 ∶1的比例將數據集劃分為訓練集、測試集和驗證集.

2.2 網絡的訓練

試驗使用配備i7-10700F CPU,內存為16 GB, NVIDIA GTX 2070S型號GPU的計算機.程序運行中調用CUDA、CUDNN 和OpenCV 等第三方庫.考慮到訓練期間GPU內存的限制,訓練批次大小設置為4.訓練參數:輸入尺寸416×416像素;初始學習率0.24×10-3;權重衰減0.01,采用余弦退火衰減;最終學習率0.24×10-6;種類1.訓練集上每迭代一次就在驗證集上測試一輪平均準確率和召回率,并保存一次模型.訓練結束后,利用測試集對模型的性能進行評價.

3 試驗結果與討論

本研究通過多項試驗驗證所提出方法在檢測目標時的可靠性.先對改進的部分進行試驗,并與其他檢測模型進行比較.然后,將改進后的模型與其他主流的檢測模型進行對比,并對模型的檢測結果進行分析與討論.

3.1 模型的基礎訓練結果

利用Focal Loss來改進置信度損失函數,圖6為召回率隨訓練迭代次數的變化曲線,圖7為準確率隨訓練迭代次數的變化曲線,圖8為平均精度均值(mean average precision,MAP)隨訓練迭代次數的變化曲線.通過試驗結果可以看出,采用Focal Loss后各項指標均能更快地達到穩定且更高的水平,既提高了模型的檢測能力,也縮短了模型達到最佳檢測能力的訓練時間.且召回率較原來的模型有明顯的提高,說明模型對困難樣本的挖掘能力有明顯提高.

圖6 召回率曲線

圖7 準確率曲線

圖8 MAP曲線

3.2 模型剪枝結果

為確定最佳的剪枝參數,對稀疏訓練得到的模型進行多種方法的剪枝,并與原有的模型進行對比,其詳細的結果如表2所示.層剪枝在參數上面的減少十分有限,但是精度也是影響最低的,參數量降低了10.18%,精度僅下降0.03%,幾乎不變.通道剪枝由于是對每一個通道的權重都重新排序,所以參數量的下降十分可觀,參數量降低了94.31%,精度下降2.46%.文中的混合剪枝策略與原有模型相比參數量降低了95.30%,精度僅下降1.36%,且經過模型微調后精度僅下降0.60%,模型壓縮為原來的5.25%.單獨對模型進行層剪枝或者通道剪枝與原有的模型相比雖能一定程度上減小模型參數,但效果無法達到最佳.文中提出的混合剪枝策略不僅能有效減小模型的參數,并且精度下降最小.模型經過微調后,模型的精度逐漸恢復到剪枝之前,很好地平衡了模型的大小與精度.

表2 不同剪枝方法試驗結果對比

為直觀地觀察剪枝模型與原有模型的參數區別,進行了BN層γ參數的可視化.圖9為普通訓練模型每次迭代的γ參數分布,由圖可以看出最終訓練后每個通道上的γ參數較大且基本服從正態分布.圖10為稀疏訓練γ參數分布,隨著稀疏訓練的進行,剪枝層大部分通道γ參數分布在0附近,意味著各個通道和層的權重系數已重新計算.圖11為在進行剪枝操作參數微調后γ參數分布,部分較重要通道的γ參數分布得到調整,說明模型精度得到一定恢復.

圖9 普通訓練后γ參數分布

圖10 稀疏訓練后γ參數分布

圖11 模型微調后γ參數分布

圖12、13為整體改進后算法與原有算法檢測結果對比圖.在圖12簡單場景中,改進后的算法雖然模型參數較小但都能檢測出果園環境的大部分柑橘果實.在圖13密集場景中,通過對比可以觀察出,在一些遮擋嚴重的部分,文中所提出的方法檢測能力更強,因此文中提出的方法是有效的.

圖12 簡單場景檢測結果對比

圖13 密集場景檢測結果對比

3.3 不同目標檢測算法的比較

為了進一步驗證本方法對柑橘識別的有效性, 與Faster RCNN、SSD、YOLOv3和YOLOv4等檢測算法進行對比.利用訓練集分別對5種算法進行訓練,通過測試集對其進行評估.其準確率和召回率曲線如圖14所示, 該曲線是評價目標檢測算法性能的重要指標,其與坐標軸包裹的面積為MAP,且一般認為算法的曲線越靠近圖的右上角,整體性能越好.從圖14可以看出改進的YOLOv4曲線位置在其他模型曲線的右上方,說明改進的YOLOv4不僅具有比其他算法更高的檢測精度,而且整體性能也更好.

圖14 準確率和召回率曲線比較

檢測性能參數如表3所示,文中提出的改進的YOLOv4較Faster RCNN、SSD、YOLOv3、YOLOv4等在MAP上分別提高了2.34%、7.98%、3.75%和1.18%,參數量分別減小了92.60%、86.64%、95.11%和95.22%,模型尺寸分別縮小到3.76%、13.06%、3.66%和4.84%.在同等試驗條件下,文中所提出的算法的檢測速度是YOLOv4的4.03倍, YOLOv3的4.76倍,SSD的3.12倍, Faster RCNN的5.31倍. 因此文中提出的算法與現有的主流目標檢測模型相比在檢測速度上有較為明顯的提升,精度也有一定的提升,進一步驗證該算法的有效性.

表3 算法檢測結果比較

4 結 論

提出了一種果園環境柑橘果實實時檢測方法,該方法減少了原有YOLOv4的參數,并實現了速度與精度的平衡.Focal Loss在二分類檢測任務中能提高模型負樣本的挖掘能力.提出了一種混合剪枝方法解決了機器人計算平臺計算資源有限,無法滿足算法實時性要求的問題.試驗結果表明,提出的方法檢測精度和速度都優于原有的YOLOv4,MAP從93.04%提升到94.22%,增加1.18%,網絡的參數量減少了95.22%,模型尺寸為原來的4.84%,檢測速度為原來的4.03倍.相較于Faster RCNN、SSD、YOLOv3等主流算法其檢測效果和檢測速度都更佳.該方法更能滿足柑橘實時檢測系統的要求,為實現機器人的智能采摘提供了視覺基礎.

猜你喜歡
剪枝損失精度
人到晚年宜“剪枝”
胖胖損失了多少元
基于YOLOv4-Tiny模型剪枝算法
玉米抽穗前倒伏怎么辦?怎么減少損失?
基于DSPIC33F微處理器的采集精度的提高
剪枝
GPS/GLONASS/BDS組合PPP精度分析
一般自由碰撞的最大動能損失
損失
改進的Goldschmidt雙精度浮點除法器
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合