祁金文
(塔里木大學(xué)信息工程學(xué)院 新疆維吾爾自治區(qū)阿拉爾市 843300)
蘋(píng)果是我國(guó)重要農(nóng)作物,根據(jù)國(guó)家統(tǒng)計(jì)局統(tǒng)計(jì),2020年我國(guó)蘋(píng)果產(chǎn)量高達(dá)4406.61 萬(wàn)噸,同比增長(zhǎng)3.87%,蘋(píng)果產(chǎn)量繼續(xù)保持穩(wěn)中有增的態(tài)勢(shì)。在水果種植采收期間,采摘作業(yè)占蘋(píng)果生產(chǎn)作業(yè)的三分之二以上。為降低蘋(píng)果采摘成本,提高生產(chǎn)效率,通過(guò)人工智能與自動(dòng)化技術(shù)的融合,已發(fā)明出適用于水果采摘的機(jī)器人,機(jī)械化采摘是蘋(píng)果采摘的必然趨勢(shì)。如何使機(jī)器人代替人工采摘,已成為21 世紀(jì)農(nóng)業(yè)自動(dòng)化領(lǐng)域新的研究方向。
水果采摘機(jī)器人需要對(duì)蘋(píng)果目標(biāo)完成識(shí)別和定位才能夠進(jìn)行采摘任務(wù),識(shí)別和定位的準(zhǔn)確率和速度直接影響采摘效率,深度學(xué)習(xí)不受環(huán)境干擾的特性使其被眾多學(xué)者所青睞,成為最適合用于目標(biāo)檢測(cè)識(shí)別的方法之一,所以此次研究將使用深度學(xué)習(xí)進(jìn)一步研究蘋(píng)果目標(biāo)的識(shí)別方法。
YOLOv5是YOLO 目 標(biāo) 檢 測(cè) 家 族(YOLOv1、YOLOv2、YOLOv3、YOLOv4) 中 的 最 新 成 員,YOLOv5 增加了新的策略使得檢測(cè)速度和精度都取得重大提升。由于YOLOv5 算法的基本原理都一樣,所以此次研究選用YOLOv5s 算法進(jìn)行網(wǎng)絡(luò)模型優(yōu)化和改進(jìn)。
YOLOv5 的網(wǎng)絡(luò)結(jié)構(gòu)主要部分為Backbone,Neck,Output。
Focus 模塊:Focus 結(jié)構(gòu)主要作用是保持特征提取過(guò)程中圖像的完整信息,F(xiàn)ocus 結(jié)構(gòu)是 YOLOv5 中特有的結(jié)構(gòu),主要作用是保持在特征提取過(guò)程中圖像的完整信息,F(xiàn)ocu模塊執(zhí)行的重要步驟是切片操作。
Backbone 模塊:用于提取圖像的深度語(yǔ)義信息,通過(guò)多尺度融合提取不同深度特征來(lái)豐富語(yǔ)義信息。由于檢測(cè)任務(wù)要求模型在更大的尺度上識(shí)別目標(biāo),融合不同層次的特征圖,保留和積累更多不同接受域的特征,獲得信息豐富的特征圖就顯得尤為重要。
Neck 模塊:采用FPN+PAN 的結(jié)構(gòu),圖像特征經(jīng)過(guò)一系列的混合和組合的網(wǎng)絡(luò)層,最終將其傳遞到預(yù)測(cè)層。FPN 可向下傳遞高層的強(qiáng)語(yǔ)義特征,通過(guò)增強(qiáng)語(yǔ)義信息來(lái)增強(qiáng)整個(gè)金字塔,形成自頂向下的增強(qiáng)模式,但不可以傳遞定位信息。PAN 將低層的強(qiáng)定位特征向上傳遞,在FPN 之后形成倒金字塔金字塔,PAN 與FPN 進(jìn)行互補(bǔ)。
2.2.1 數(shù)據(jù)增強(qiáng)
在YOLOv5 原有的數(shù)據(jù)增強(qiáng)算法基礎(chǔ)上增加Gamma 變換、MotionBlur 圖像增強(qiáng)方法
Gamma 變化可以有效的保存圖像的灰度值,提高數(shù)據(jù)利用的效率和多樣性。
MotionBlur 模糊圖像可以模擬部分拍攝場(chǎng)景的運(yùn)動(dòng)模糊,使網(wǎng)絡(luò)具有較強(qiáng)的識(shí)別模糊圖像邊界的能力,增加后期蘋(píng)果采摘機(jī)器人的實(shí)時(shí)圖像識(shí)別系統(tǒng)的準(zhǔn)確率。
本文在經(jīng)過(guò)Gamma 變換、模糊變換和修改算法原有的顏色空間增強(qiáng)、翻轉(zhuǎn)拼接形成Mosaic 數(shù)據(jù)增強(qiáng),Mosaic 數(shù)據(jù)增強(qiáng)的流程如圖1 所示。
圖1: Mosaic 數(shù)據(jù)增強(qiáng)的流程圖
2.2.2 基于輕量化改進(jìn)的YOLOv5
研究提出將YOLOv5 的特征提取網(wǎng)絡(luò)中的標(biāo)準(zhǔn)卷積更換為輕量化的GhostNet 網(wǎng)絡(luò),通過(guò)少量計(jì)算就能獲取大量特征圖。
首先將普通卷積的激活函數(shù)改為SiLU,SiLU 處處可導(dǎo),連續(xù)光滑。另外還有一個(gè)特點(diǎn)就是SiLU 并非一個(gè)單調(diào)的函數(shù)。SiLU 激活函數(shù)具有ReLU 激活函數(shù)的特點(diǎn)可以避免梯度消失,同時(shí)具有一定的隱性正則效果。
在GhostNet 網(wǎng)絡(luò)通過(guò)使用較少的參數(shù)來(lái)生成更多的特征;原來(lái)的卷積分為兩步,第一步還是卷積,使用1*1 的卷積核;第二步是用3*3 的卷積核將第一步生成的特征圖通過(guò)線性變化,來(lái)生成剩余的特征圖。最后將兩步的輸出通道結(jié)合輸出。在YOLO 算法中達(dá)到即插即用的效果。將YOLOv5 算法中主干網(wǎng)絡(luò)和檢測(cè)頭部所有的卷積操作都替換為GhostNet網(wǎng)絡(luò)。
如表1 所示在輸入輸出都相同時(shí),GhostNet 相比Conv大幅度減少了前向計(jì)算和反向傳播的計(jì)算時(shí)間,從而進(jìn)一步減少網(wǎng)絡(luò)訓(xùn)練所需時(shí)間。改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。
圖2: 改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)圖
表1: 網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)量對(duì)比
2.2.3 基于RepVGG 改進(jìn) YOLOv5
Ding, Xiaohan 等提出一種簡(jiǎn)單而強(qiáng)有力的CNN 架構(gòu)RepVGG,在推理階段,具有類似VGG 的推理架構(gòu),而在訓(xùn)練階段具有多分支拓?fù)浣Y(jié)構(gòu),訓(xùn)練和推理結(jié)構(gòu)的解耦是通過(guò)一種結(jié)構(gòu)參數(shù)重構(gòu)技術(shù)(structural re-parameterization)來(lái)實(shí)現(xiàn)的。類似VGG 的推理架構(gòu)卷積計(jì)算速度快,單路架構(gòu)運(yùn)算效率高、省內(nèi)存,單路架構(gòu)靈活性好有益于模型剪枝。在ImageNet 數(shù)據(jù)集上,RepVGG 的精度超過(guò)了80%,這是plain 模型第一次達(dá)到這么高的精度。RepVGG 是一種簡(jiǎn)單的架構(gòu),與最先進(jìn)的技術(shù)相比,能夠良好的均衡速度和精度。
RepVGG 是一種類VGG 的架構(gòu),在推理階段它僅僅采用3*3 卷積與ReLU,且未采用MaxPool。對(duì)于分類任務(wù),采用GAP+全連接層作為輸出頭。對(duì)于每個(gè)階段的層數(shù)按照如下三種簡(jiǎn)單的規(guī)則進(jìn)行設(shè)計(jì):
第一個(gè)前期階段具有更大的圖像分辨率,因而更加耗時(shí),為降低推理過(guò)程時(shí)間延遲只是采用了一個(gè)卷積層。
最后一個(gè)階段由于具有更多的連接通道,為節(jié)省參數(shù)量,因此僅設(shè)計(jì)一個(gè)卷積層。
在倒數(shù)第二個(gè)階段,類似ResNet,RepVGG 放置了更多的層。
此次模型改進(jìn)主要還是借鑒RepVGG 重參化的思想,將原有的3×3 卷積替換成RepvggBlock,借助殘差網(wǎng)絡(luò)的思想對(duì)yolov5s的3×3conv進(jìn)行重構(gòu),分出一條1×1conv的旁支。在訓(xùn)練過(guò)程中使用的是一個(gè)多分支模型,而在部署和推理的時(shí)候,用的是多分支轉(zhuǎn)化為單路的模型,將旁支融合到3×3的卷積中,此時(shí)的模型和原先的yolov5s 模型無(wú)二致。修改后網(wǎng)絡(luò)模型如圖3 所示。
圖3: RepVGG 網(wǎng)絡(luò)改進(jìn) YOLOv5
實(shí)驗(yàn)環(huán)境:操作系統(tǒng):Windows 10 專業(yè)版,GPU 型號(hào):NVIDIA GeForce GTX 1660 ( 6 GB / NVIDIA ),編程工具:Visual Studio Code,編程語(yǔ)言:Python,深度學(xué)習(xí)框架:pytorch,訓(xùn)練數(shù)據(jù)集:自己建立的蘋(píng)果數(shù)據(jù)集。
圖4 為改進(jìn)后的 YOLOv5 網(wǎng)絡(luò)準(zhǔn)確率曲線對(duì)比圖,由圖5 可以看出,訓(xùn)練模型迭代 400 次后改進(jìn)的兩種模型的準(zhǔn)確率有明顯的提升,輕量化網(wǎng)絡(luò)的訓(xùn)練損失更小,在同一驗(yàn)證集上有更好的表現(xiàn),檢測(cè)效果優(yōu)異,絕大部分的蘋(píng)果目標(biāo)樣本都可以被該模型很好的檢測(cè)出來(lái)。
圖4: 準(zhǔn)確率對(duì)比
圖5: 損失率對(duì)比
為了驗(yàn)證YOLOv5 算法的性能,研究選取相同的數(shù)據(jù)集圖像在不同的算法上進(jìn)行識(shí)別速度對(duì)比實(shí)驗(yàn)。最終模型性能對(duì)比結(jié)果如表2 所示。
表2: 模型性能對(duì)比
分析數(shù)據(jù)可以看出改進(jìn)后的兩種YOLOv5 算法相對(duì)于原先的算法在識(shí)別速度和mAP 上都有一定的提升,但是輕量化的YOLO 算法在減少參數(shù)量的同時(shí)mAP 增長(zhǎng)了1.6%,圖像識(shí)別速度也大幅減少,最終選擇輕量化YOLOv5 網(wǎng)絡(luò)來(lái)獲取蘋(píng)果二維坐標(biāo)。
雙目相機(jī)的左側(cè)相機(jī)和右側(cè)相機(jī)共同組成雙目立體視覺(jué),兩個(gè)相機(jī)平行放置,在同時(shí)采集圖像信息時(shí),由于兩個(gè)相機(jī)X 軸存在距離差,所以對(duì)同一個(gè)物體采集到的相同圖像存在像素差,即視差。根據(jù)視差就可以算出物體到雙目相機(jī)的距離。
通過(guò)視差法求解三維坐標(biāo),雙目相機(jī)有左右兩個(gè)攝像頭,兩個(gè)攝像頭在Y 軸和Z 軸的位置一樣,但是因?yàn)閮蓚€(gè)攝像頭間距的原因,導(dǎo)致他們X 軸的位置不一樣。視差等于左相機(jī)X 軸坐標(biāo)減去右相機(jī)X 軸坐標(biāo)的值d,我們還可以得到物體物體的X、Y、Z 的值。公式如下:
如圖6 為雙目相機(jī)平面圖,通過(guò)上圖得到三個(gè)立體視覺(jué)方程式,可以通過(guò)預(yù)先獲取的 f ,b,然后通過(guò)圖像中找到對(duì)應(yīng)點(diǎn)在兩張圖中的坐標(biāo)X 軸差值d,進(jìn)而根據(jù)公式即可求出縱向距離Z 以及橫向距離X 及高度Y,最終得到物體P的三維坐標(biāo)。
圖6: 雙目相機(jī)平面圖
為確定相機(jī)和空間物體之間的距離,即物體P 的位置,我們所要完成立體匹配任務(wù),在每一個(gè)左邊相機(jī)的成像圖中找到右邊相機(jī)成像圖中相對(duì)的成像點(diǎn)。所謂極線約束,當(dāng)空間里的一個(gè)物體分別在兩個(gè)相機(jī)中成像時(shí),左圖像的P1 點(diǎn)和右圖像的投影點(diǎn)P2 都在極線上,這樣可以極大的縮小匹配范圍。
通過(guò)立體匹配與視差圖計(jì)算,我們可獲得蘋(píng)果質(zhì)量中心在左相機(jī)圖像和右相機(jī)圖像中的對(duì)應(yīng)坐標(biāo)點(diǎn)。蘋(píng)果果實(shí)的三維信息可進(jìn)一步通過(guò)相似三角形運(yùn)算獲得。為了降低實(shí)驗(yàn)的復(fù)雜性,此次實(shí)驗(yàn)只對(duì)蘋(píng)果的三維空間定位做了分析,通過(guò)對(duì)表中數(shù)據(jù)的統(tǒng)計(jì),蘋(píng)果與雙目相機(jī)之間的實(shí)際距離和測(cè)量距離的平均差值是15.9mm。從數(shù)據(jù)中可以看出隨著測(cè)量距離的增加誤差也越來(lái)越大。如表3 所示,實(shí)驗(yàn)結(jié)果表明此次研究所使用的蘋(píng)果空間定位計(jì)算方法平均相對(duì)誤差在2.41%左右,表明該方法真實(shí)可行。
表3: 蘋(píng)果三維空間定位數(shù)據(jù)
針對(duì)蘋(píng)果目標(biāo)的識(shí)別,結(jié)合深度學(xué)習(xí)在圖像識(shí)別領(lǐng)域的優(yōu)異表現(xiàn),提出了基于輕量化改進(jìn)YOLOv5 的蘋(píng)果目標(biāo)識(shí)別方法,該網(wǎng)絡(luò)是通過(guò)修改特征提取網(wǎng)絡(luò)、運(yùn)用模糊圖像數(shù)據(jù)增強(qiáng)方法,最終實(shí)現(xiàn)了準(zhǔn)確率和檢測(cè)速度的提升,并使用雙目相機(jī)進(jìn)行蘋(píng)果三維空間定位誤差在15.9mm 左右,可以更好的識(shí)別和定位蘋(píng)果果實(shí),一定程度上解決了蘋(píng)果目標(biāo)識(shí)別和定位準(zhǔn)確率不高的問(wèn)題,但仍需要進(jìn)行以下探索:
(1)模型訓(xùn)練速度的優(yōu)化,在模型訓(xùn)練速度方面,是否可以使用更加先進(jìn)的并行處理方式,減少模型的訓(xùn)練時(shí)長(zhǎng)。
(2)最終模型要移植到硬件終端上,后期還需要進(jìn)行模型剪枝,降低訓(xùn)練結(jié)果權(quán)重的大小。