胡建易
(江西理工大學(xué),江西 贛州 341000)
近年來,隨著全球人口的增加和農(nóng)業(yè)現(xiàn)代化進(jìn)程的加速,農(nóng)業(yè)自動化技術(shù)已成為農(nóng)業(yè)領(lǐng)域研究的重要方向之一,受到了廣泛的關(guān)注,其中自動化采摘技術(shù)是一個重要方向。該技術(shù)能夠?qū)崿F(xiàn)農(nóng)作物的高效、迅速、易于操作的采摘,提高農(nóng)業(yè)生產(chǎn)效率,降低勞動力成本。隨著現(xiàn)代農(nóng)業(yè)的進(jìn)步,人們越來越追求高效、安全、精度高的蘋果采摘系統(tǒng)。本研究采用三目視覺技術(shù),以實(shí)現(xiàn)蘋果采摘系統(tǒng)的高效、安全、高精度自動化。
雙目視覺系統(tǒng)最主要的優(yōu)點(diǎn)在于其可以獲得三維信息,由此可以確定蘋果的位置和大小,使得采摘機(jī)器人能夠準(zhǔn)確地識別蘋果,達(dá)到最佳采摘效果。在該系統(tǒng)中,使用了基于深度學(xué)習(xí)的圖像處理算法,使得機(jī)器人能夠準(zhǔn)確識別蘋果的位置和大小,同時保持高精度。此外,在處理過程中根據(jù)實(shí)際情況進(jìn)行了補(bǔ)充和優(yōu)化,提高了系統(tǒng)的魯棒性。但雙目視覺會因?qū)嶋H硬件原因造成一定的空間位置誤差,為了使采摘更加準(zhǔn)確,在機(jī)械抓取裝置上增加了一個攝像頭來輔助精準(zhǔn)抓取,實(shí)現(xiàn)三目視覺采摘。
YOLOv8 是2023 年1 月由Ultralytics 發(fā)布的一款新的檢測模型,集合了之前提出的諸如YOLOX、YOLOv6、YOLOv7 和PPYOLOE 等算法的相關(guān)設(shè)計,尤其是Head 標(biāo)簽分配和Loss 部分以及PP-YOLOE非常相似。YOLOv8 集百家所長達(dá)到了實(shí)時檢測界的一個新高度。由于YOLOv8 具有高精度、速度快等優(yōu)勢,將為目標(biāo)檢測領(lǐng)域帶來新的沖擊。本文將YOLOv8 應(yīng)用于蘋果采摘中,利用其視覺識別能力自動檢測和定位蘋果。同時,為了使自動采摘機(jī)器人可以快速完成蘋果采摘,本文采用了蟻群算法進(jìn)行路徑規(guī)劃。
本系統(tǒng)主要由計算機(jī)、三目視覺(雙目視覺+OV7725 攝像頭)、執(zhí)行機(jī)構(gòu)等構(gòu)成,計算機(jī)配置采用的是13th Gen Intel (R) Core (TM) i9-13980HX 2.20 GHz 處理器,內(nèi)存64.0 GB,顯卡為NVIDIA Geforce RTX 4080 Laptop GPU,編程語言采用python。核心板采用STM32F103ZET6 單片機(jī),編程語言采用C。執(zhí)行機(jī)構(gòu)上掛載的攝像頭采用OV7725,超聲波模塊采用HC-SR04。雙目視覺采用Intel RealsenseT265,執(zhí)行采摘機(jī)構(gòu)采用的是三維的機(jī)械夾取裝置,夾爪上安裝有壓力傳感器。計算機(jī)與ARM 之間采用串口通信。系統(tǒng)框圖見圖1。
圖1 系統(tǒng)連接圖
整個采摘流程如下:首先由計算機(jī)和雙目視覺識別計算出各個蘋果的坐標(biāo)值,根據(jù)坐標(biāo)值應(yīng)用蟻群算法計算出最優(yōu)采摘路徑,然后將坐標(biāo)值和采摘路徑通過串口傳給ARM 核心板,ARM 板收到信息后執(zhí)行采摘任務(wù),采摘裝置先通過橫軸和縱軸移動到第一個待采摘蘋果的(x,y)位置,然后根據(jù)蘋果的z 坐標(biāo)值讓采摘裝置向前延伸靠近蘋果,當(dāng)接近蘋果時開啟OV7725 攝像頭和超聲波進(jìn)行位置微調(diào)矯正,當(dāng)?shù)竭_(dá)位置后夾爪開始抓取,待夾爪上壓力傳感器超過一定數(shù)值就可以將蘋果進(jìn)行采摘,然后返回到釋放蘋果的位置進(jìn)行釋放,完成一個采摘過程。流程圖見圖2。
圖2 采摘流程圖
本研究采用了雙目視覺技術(shù)來實(shí)現(xiàn)對蘋果的自動識別和定位。雙目視覺技術(shù)借助2 個相機(jī)同時獲取圖像信息,形成2 個視角的立體影像,進(jìn)而獲取目標(biāo)物體的深度信息。本研究中采用的雙目視覺設(shè)備具有高精度、高分辨率和復(fù)雜場景下的抗干擾性等特點(diǎn),能夠有效提高蘋果采摘系統(tǒng)的性能和準(zhǔn)確度。
雙目立體視覺相機(jī)深度值計算原理如下(理想情況):
由圖3、4 幾何關(guān)系可得如下等式:
圖3 側(cè)視圖
圖4 俯視圖
進(jìn)而得到物體的坐標(biāo)值:
可以發(fā)現(xiàn)如果要計算深度z,必須要知道:
(1)相機(jī)焦距f,左右相機(jī)距離基線b。這些參數(shù)可以通過先驗(yàn)信息或者相機(jī)標(biāo)定得到。
(2)視差k。知道左相機(jī)的每個像素點(diǎn)(xL,yL)和右相機(jī)中像素點(diǎn)(xR,yR)的對應(yīng)關(guān)系,就解決了雙目視覺的核心問題。
其中,f 為焦距,b 為2 個相機(jī)間的距離,ps 為單個像素點(diǎn)的寬度,d 為視差距,k 為像素視差。
圖5 為像素視差等于3 的情況,即k=3。
圖5 物體在兩個相機(jī)中的成像
像素大小指的是圖像傳感器中單個像素的尺寸大小,通常用μm 表示。在立體視覺系統(tǒng)中,由于使用了2 個攝像機(jī),因此圖像傳感器中的像素大小必須相同。隨著像素大小的縮小,立體視覺系統(tǒng)的深度范圍將變得更大。視差是指在兩個攝像機(jī)圖像之間的像素位置的差異,它可以通過計算兩個攝像機(jī)中相同像素之間的距離差來得到。例如,如果左視圖圖像中一個像素在位置(1,30)處,而相同位置的像素在右視圖圖像中的位置為(4,30),那么視差值(差值)將為4-1=3。視差值與深度呈反比例關(guān)系。
Ultralytics 公司從YOLOv5 到Y(jié)OLOv8 的升級,精度上YOLOv8 相比YOLOv5 高出一大截,但速度略有下降。簡單總結(jié)下YOLOv8 在結(jié)構(gòu)算法上相比YOLOv5 的升級。
1.2.1 骨干網(wǎng)絡(luò)部分
選用梯度流更豐富的C2f 結(jié)構(gòu)替換了YOLOv5中的C3結(jié)構(gòu),為了輕量化也縮減了骨干網(wǎng)絡(luò)中最大stage 的blocks 數(shù),同時不同縮放因子N/S/M/L/X 的模型不再是共用一套模型參數(shù),M/L/X 大模型還縮減了最后一個stage 的輸出通道數(shù),這樣可減少參數(shù)量和計算量。
1.2.2 Neck 部分
同樣是C2f 模塊替換C3模塊,為了輕量化刪除了Neck 結(jié)構(gòu)中top-down 階段的兩個上采樣卷積。
1.2.3 Head 部分
換成了目前主流的Decoupled-Head 解耦頭結(jié)構(gòu),將分類分支和定位分支分離,緩解了分類和回歸任務(wù)的內(nèi)在沖突。
1.2.4 標(biāo)簽分配和Loss 部分
從Anchor-Based 換成了Anchor-Free,采用了TAL (Task Alignment Learning) 動態(tài)匹配,并引入了DFL(Distribution Focal Loss)結(jié)合CIoU Loss 做回歸分支的損失函數(shù),使得分類和回歸任務(wù)之間具有較高的一致性。
1.2.5 訓(xùn)練策略
訓(xùn)練的數(shù)據(jù)增強(qiáng)部分最后10 epoch 關(guān)閉Mosaic增強(qiáng)更有利于模型收斂的穩(wěn)定,同時訓(xùn)練epoch 數(shù)從300 增大到500,使得模型訓(xùn)練更充分。
YOLO 算法的第一步是分割圖片,它將圖片分割為(a×a)個grid,每個grid 的大小都相等。然后基于grid 生成bounding box,其中confidence 的計算公式是:
要使用YOLOv8 算法首先要了解其整個步驟,圖6 展示了YOLOv8 算法從電腦環(huán)境配置直至驗(yàn)證效果的整個應(yīng)用過程。
圖6 YOLOv8 算法的應(yīng)用過程
20 世紀(jì)90 年代,一位來自意大利的學(xué)者首次提出了蟻群最優(yōu)路徑規(guī)劃算法。該算法通過觀察螞蟻尋找食物的行為,發(fā)現(xiàn)雖然單只螞蟻并沒有很強(qiáng)的規(guī)律性,但是多只螞蟻行動時會形成一定的規(guī)律。在不同的環(huán)境下,蟻群可以高效地尋找到到達(dá)食物源的最短路徑。當(dāng)螞蟻行走時,會釋放一種叫做“信息素”的化學(xué)物質(zhì)。螞蟻會感知到這種“信息素”,并向濃度更高的路徑方向前進(jìn)。由于螞蟻在路上留下的“信息素”,整個蟻群逐漸形成了一個正反饋機(jī)制。經(jīng)過一段時間后,整個蟻群會沿著最短路徑到達(dá)食物源。其具體算法步驟如下:
1.3.1 初始化各參數(shù)
計算之初需要初始化各種參數(shù),例如螞蟻數(shù)量m、Alpha 信息素因子、Beta 啟發(fā)函數(shù)因子、ROU 信息素?fù)]發(fā)因子、Q 信息素常數(shù)、T 最大迭代次數(shù)等。在運(yùn)用蟻群算法時,為了選擇最佳的參數(shù),需要一定的經(jīng)驗(yàn)或者試錯。參數(shù)設(shè)置建議如下:當(dāng)螞蟻數(shù)量設(shè)置得過多時,路徑上的信息素會變得趨同,正反饋?zhàn)饔脮幌魅?,從而?dǎo)致收斂速度減慢;如果將螞蟻數(shù)量m設(shè)置得過小,可能會導(dǎo)致一些路徑從未被探索,導(dǎo)致信息素濃度為0,過早收斂,降低全局最優(yōu)解的可行性。根據(jù)經(jīng)驗(yàn)螞蟻數(shù)量=目標(biāo)數(shù)×1.5。本系統(tǒng)是根據(jù)檢測到的蘋果數(shù)量來確定螞蟻數(shù)量。
設(shè)定信息素常量Q 時需要謹(jǐn)慎考慮,如果設(shè)置過大,會限制蟻群的搜索范圍,導(dǎo)致算法過早地陷入局部最優(yōu)解;如果設(shè)置過小,路徑上的信息含量差別會減小,容易導(dǎo)致算法進(jìn)入混沌狀態(tài)。因此,需要合理選擇Q 值,以保證算法具有全局搜索能力。在本系統(tǒng)中,常量信息素一般按照經(jīng)驗(yàn)取值在[10,100],本系統(tǒng)的取值為36;而最大迭代次數(shù)t 的設(shè)置則需要注意避免設(shè)置過大導(dǎo)致算法運(yùn)行時間過長,同時也要避免設(shè)置過小導(dǎo)致可選路徑減少,使得種群容易受限于局部最優(yōu)解。一般而言,最大迭代次數(shù)的取值范圍在[100,500],本系統(tǒng)的取值為213。信息素因子是指在螞蟻搜索過程中,路徑上的信息素對螞蟻群搜索起到指導(dǎo)作用的相對重要程度。若將該參數(shù)設(shè)置過大,則會讓螞蟻更傾向于選擇之前走過的路徑,減弱算法的隨機(jī)性;而過小則會減小蟻群的搜索范圍,使算法早期就陷入局部最優(yōu)解。通常,信息素因子的取值范圍為1~4,本系統(tǒng)的取值為2.5。
啟發(fā)函數(shù)因子是指在引導(dǎo)蟻群搜索過程中,啟發(fā)式信息對搜索的相對重要程度。如果該參數(shù)設(shè)置過大,可以提高搜索的收斂速度,但也有可能導(dǎo)致算法陷入局部最優(yōu)解;反之,如果該參數(shù)設(shè)置得過小,搜索過程中的隨機(jī)性就會增強(qiáng),難以找到最優(yōu)解。一般經(jīng)驗(yàn)值將該參數(shù)的取值范圍定為[0,5],本系統(tǒng)取值為3.2。
信息素?fù)]發(fā)因子則是表示信息素的揮發(fā)消失水平的參數(shù)。當(dāng)該參數(shù)值設(shè)置過大時,信息素將很快就消失,這樣會導(dǎo)致一些較優(yōu)路徑被排除在搜索范圍外;若該參數(shù)值設(shè)定過小,則各路徑上的信息素含量差別很小,因此算法的收斂速度也會降低。通常經(jīng)驗(yàn)值將該參數(shù)的取值范圍定為[0.2,0.5],本系統(tǒng)的取值為0.24。
1.3.2 構(gòu)建解空間
為了實(shí)現(xiàn)每只螞蟻的隨機(jī)分布,我們將它們分別放置在不同的起始位置上,并為每只螞蟻k(k 范圍為1~m)計算下一個要訪問的蘋果,直到每只螞蟻都訪問完所有的蘋果,螞蟻在構(gòu)建路徑的每一步中,根據(jù)輪盤賭法選擇下一個要到達(dá)的蘋果。我們使用概率來表示每個路徑的選擇概率:
其中,i、j 分別表示每段路徑的起點(diǎn)和終點(diǎn),τ 表示時間t 由i 到j(luò) 的信息素濃度,η 的值等于路徑長度d的倒數(shù),allowedk表示未訪問過的節(jié)點(diǎn)的集合。
根據(jù)當(dāng)前路徑ij 上的信息素濃度和啟發(fā)式函數(shù),就可以確定從起點(diǎn)i 選擇終點(diǎn)j 的概率。通過對公式進(jìn)行分析,可以得知兩個地點(diǎn)之間距離越短,且信息素濃度越大的路徑被選擇的概率應(yīng)該相對較大。
1.3.3 更新信息素
每只螞蟻將會經(jīng)過一條路徑,我們將計算出這條路徑的長度L,并記錄歷史記錄中的最優(yōu)路徑長度,也就是最短路徑。同時,會更新每個蘋果路徑上的信息素濃度。信息素的更新方式如式(8)所示:
也就是說,在第t+1 次循環(huán)后,若路徑連接蘋果i 和蘋果j,則路徑上的信息素含量將會更新。我們使用一種信息素更新機(jī)制,具體是將路徑上的信息素含量在t 次循環(huán)后乘以信息素殘留系數(shù),并加上新增信息素。這里的新增信息素是指所有螞蟻在從蘋果i 到蘋果j 的路徑上所留下的信息素之和。
1.3.4 判斷是否達(dá)到終止條件
在蟻群算法中,判斷是否達(dá)到最大迭代次數(shù)被作為算法的停止條件。圖7 蟻群算法具體流程圖。
圖7 蟻群算法具體流程
本研究研制了一種基于三目視覺的采摘系統(tǒng),其應(yīng)用于采摘蘋果。該系統(tǒng)采用了YOLOv8 算法,對蘋果進(jìn)行了準(zhǔn)確的識別和定位,并采用蟻群算法優(yōu)化采摘路徑。在人工數(shù)據(jù)集測試中,該系統(tǒng)的蘋果定位準(zhǔn)確率達(dá)到了95%以上,并且每張圖像的檢測時間為10~100 ms。同時進(jìn)行了70 次蘋果采摘實(shí)驗(yàn),每次采摘的時間為10 s 內(nèi),一次采摘一個蘋果,綜合采摘成功率達(dá)到了93%。圖8 為模擬采摘實(shí)物圖。
圖8 模擬采摘實(shí)物圖
本文研究了一種采用三目視覺、YOLOv8 和蟻群算法相結(jié)合的蘋果采摘系統(tǒng),實(shí)現(xiàn)了YOLOv8 和蟻群算法的協(xié)同工作,從而能夠自動化地識別和定位蘋果,并找到最佳的采摘路徑,實(shí)現(xiàn)蘋果的自動化采摘。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)的采摘效率和準(zhǔn)確性都比較理想。因此,該系統(tǒng)為農(nóng)業(yè)領(lǐng)域?qū)崿F(xiàn)自動化采摘提供了一種新的思路和解決方案,具有一定的應(yīng)用價值和推廣前景。