黃家才,汪濤,張鐸,唐安,高芳征
(南京工程學(xué)院工業(yè)中心,南京市,211167)
草莓作為最早一批引入中國的水果,國內(nèi)現(xiàn)有產(chǎn)地面積已經(jīng)突破一百多千公頃,產(chǎn)量更是達到百萬噸量級,我國已然成為全國最大的草莓生產(chǎn)國,滿足國內(nèi)草莓消費需求的同時還出口給周邊國家[1]。隨著全世界對草莓需求的不斷增加,國內(nèi)草莓產(chǎn)地面積也隨之逐步增加,但是成熟草莓的采摘工作仍然依靠人工[2]。困擾草莓采摘機器人發(fā)展的主要因素在于作業(yè)環(huán)境的復(fù)雜度。準確識別草莓對象較為困難,同時由于草莓果肉嬌嫩易損的特點,采摘機器末端的力度極難把控,會造成果肉損傷或采摘失敗的結(jié)果[3]。
近年來,基于草莓采摘機械化需求的增加,科研工作者在各方面對草莓機器人進行了深入研究[4-8]。謝志勇等[5]提出了一種基于RGB彩色模型和CIE-XYZ顏色模型的草莓圖像色調(diào)分割方法,并對分割后的圖像進行形態(tài)學(xué)處理,如膨脹、腐蝕等,消除了孔洞現(xiàn)象。趙利平等[6]在圖像處理的基礎(chǔ)上,提出一種融合GA的三點定位算法,解決了夜間工作環(huán)境下蘋果定位困難的問題。張繼成等[7]利用神經(jīng)網(wǎng)絡(luò)中的殘差網(wǎng)絡(luò),通過對草莓多角度的拍攝,提取豐富特征從而降低復(fù)雜背景的影響。李輝熠等[8]沿著機器學(xué)習(xí)的設(shè)計思路,構(gòu)建具有西紅柿特征的分類器,提出了一種基于多角度圖像特征的西紅柿識別方法。
上述工作都是在相對簡單的采摘環(huán)境下進行的研究,在復(fù)雜的實際場景中應(yīng)用效果不明顯,魯棒性相對較差[9-10],本文采用神經(jīng)網(wǎng)絡(luò)作為草莓識別手段,選擇自主制作真實環(huán)境下草莓養(yǎng)殖的數(shù)據(jù)集用以訓(xùn)練,針對復(fù)雜環(huán)境搭建了合適的訓(xùn)練模型;同時,針對草莓果肉易損的特點,在識別的基礎(chǔ)上提出了一種基于圖像處理方案的果柄識別方法;最后融合雙目測距結(jié)果以及測距傳感器數(shù)據(jù),得到果柄的三維坐標(biāo)。
草莓果柄葉識別流程如圖1所示。
圖1 系統(tǒng)流程圖Fig. 1 System flowchart
首先對收集到的圖片進行處理,制作針對實際復(fù)雜采摘環(huán)境下的數(shù)據(jù)集;然后送入輕量化后的神經(jīng)網(wǎng)絡(luò)訓(xùn)練測試以達到良好的預(yù)測模型;之后利用該模型預(yù)測實際場景下的草莓位置;接著提取神經(jīng)網(wǎng)絡(luò)預(yù)測到的草莓位置區(qū)域,并對其通過圖像處理的手段分割出果肉與果柄葉的區(qū)域;隨后在果柄葉區(qū)域的基礎(chǔ)上找到合適的采摘點位置;最后通過相機與測距模塊數(shù)據(jù)融合的手段,計算出實際采摘點的空間位置。
本文為了使模型達到更好的識別效果,特別選取實際采摘環(huán)境下的圖片作為數(shù)據(jù)源,通過網(wǎng)絡(luò)爬取和實景拍攝的手段獲取大量圖片[11],其中網(wǎng)絡(luò)爬取的圖片需要人工進行二次篩選,刪除理想環(huán)境下的草莓圖片避免污染數(shù)據(jù)集。
實際環(huán)境圖像拍攝于江蘇省農(nóng)博園,園內(nèi)含有大片壟地草莓以及高架草莓,圖片采集了實際采摘中可能遇到的各種情形的草莓生長狀態(tài),包含了足夠的正面樣本和負面樣本。拍攝圖像包括了各種復(fù)雜情況,如遮擋、重疊以及草莓聚集場景等,總共1 513張圖片。
本文從上述手段獲取的圖像中篩選出了1 800張(其中500張來自網(wǎng)絡(luò),1 300張來自實際取景),使用LabelImg工具手動標(biāo)注并保存為VOC數(shù)據(jù)格式。
YOLOv4是一種卷積神經(jīng)網(wǎng)絡(luò),與常規(guī)神經(jīng)網(wǎng)絡(luò)相比,該網(wǎng)絡(luò)各層中的神經(jīng)元都是三維向量(長、寬、高),可以有效解決展開圖像丟失空間信息的問題,即使存在大量參數(shù)也不會出現(xiàn)訓(xùn)練效率低下、訓(xùn)練結(jié)果過擬合的情況。
近年來,關(guān)于卷積神經(jīng)網(wǎng)絡(luò)的研究不斷取得突破,衍生出各種優(yōu)秀的檢測算法[12]。這些算法主要分別為兩類:一類是以區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(R-CNN,Region-Conventional Neural Network)為首的two-stage(兩段式)算法;另一類的代表算法是YOLO(You Only Look Once)、SSD(Single Shot MultiBox Detector)這類one-stage(一段式)算法[13]。前者需要首先利用算法產(chǎn)生Region Proposal(候選區(qū)域),然后在該區(qū)域上對各部分實現(xiàn)分類回歸;后者則是只需要通過一個卷積網(wǎng)絡(luò)識別不同的目標(biāo)類別與位置。
YOLO系列網(wǎng)絡(luò)作為one-stage算法的代表,其核心思想是利用整張圖作為網(wǎng)絡(luò)的輸入,直接在輸出層回歸Bounding box(預(yù)測框)的位置和Bounding box所屬的類別。該算法采用一個單獨的CNN模型實現(xiàn)end-to-end的目標(biāo)檢測,首先將輸入圖片尺寸統(tǒng)一壓縮成608 dpi×608 dpi,然后輸入卷積神經(jīng)網(wǎng)絡(luò),之后通過網(wǎng)絡(luò)反復(fù)計算得到不同區(qū)域不同大小的Boundingbox,最后利用非極大值抑制算法處理獲得預(yù)測目標(biāo)的信息。
考慮到草莓識別數(shù)量多,同時過多的卷積層會增加計算量影響檢測速度,本文從快速性角度出發(fā)在YOLOv4算法的基礎(chǔ)上替換了原有的BackBone(主干)網(wǎng)絡(luò),即使用VGG16(Visual Geometry Group)網(wǎng)絡(luò)替換原始的CSPDarknet53,由原來的53層卷積層下降為16層卷積層,替換后計算量顯著較少。
如圖2所示為改進后的YOLOv4網(wǎng)絡(luò)結(jié)構(gòu),主要包括輸入端、BackBone、Neck以及預(yù)測端四個部分。其中輸入端主要負責(zé)將訓(xùn)練集的圖像尺寸縮放至608 dpi×608 dpi的大小,BackBone將圖像送入16層卷積神經(jīng)網(wǎng)絡(luò)在不同細粒度上聚合并形成特征,Neck將不同細粒度形成的特征進行拼接融合形成更加豐富準確的圖像特征,Head(預(yù)測端)對圖像進行預(yù)測,生成Boundingbox并預(yù)測對象。BackBone輸出了三種尺度(76 dpi×76 dpi、38 dpi×38 dpi和19 dpi×19 dpi)的特征圖像,分別作為Neck的輸入?yún)⑴c圖像特征混合,具體做法是將小尺度的圖像通過上采樣的方法擴大尺度與相同尺度的圖像進行拼接。不同于以往的混合手段,YOLOv4中圖像特征的拼接方式保留了更加豐富的特征信息,一定程度上提升了目標(biāo)識別的準確性,同時降低了計算量,從而更適應(yīng)于移動端站署。
圖2 改進YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)Fig. 2 Improved YOLOv4 network structure
圖3中,A點為預(yù)測目標(biāo)的中心點,P框為YOLO算法的先驗框(Anchorbox),B框為神經(jīng)網(wǎng)絡(luò)計算得出的預(yù)測框,下標(biāo)w、h分別為對應(yīng)框的寬和高,Cx和Cy為A點所在grid(網(wǎng)格)的左上角坐標(biāo),tx和ty是A點距離所在grid邊界的相對距離,σ(x)一般使用Sigmoid函數(shù)處理,其計算公式如式(1)所示,目的是將數(shù)值限制在(0,1)的范圍以減少計算量。
圖3 Boundingbox計算示意圖Fig. 3 Boundingbox calculation schematic
(1)
本文借鑒遷移學(xué)習(xí)的思想,將已經(jīng)訓(xùn)練完成的算法模型作為本文學(xué)習(xí)任務(wù)的起點,這些模型都是基于大型數(shù)據(jù)集訓(xùn)練,通過遷移學(xué)習(xí)的手段導(dǎo)入已經(jīng)發(fā)布的性能較好的模型建立自己的模型所用時間更短。
本文模型訓(xùn)練任務(wù)部署在戴爾Precision 5820 Twoer工作站,該硬件平臺具有64 G運行內(nèi)存,英偉達RTX3090顯卡以及酷睿i9-10920X中央處理器。神經(jīng)網(wǎng)絡(luò)算法的完整過程包括訓(xùn)練和測試兩個階段,測試的目的在于表征一個模型在訓(xùn)練完成后對含有標(biāo)注信息的數(shù)據(jù)集進行預(yù)測,并評價預(yù)測準確度。選擇精度(P,Precision)、召回率(R,Recall)、全類平均正確率(mAP,mean Average Precision)以及F1分數(shù)作為測試指標(biāo)。其中F1分數(shù)是一個綜合性的指標(biāo),表達式分別如式(2)~式(5)所示。
(2)
(3)
(4)
(5)
式中:TP——本身是正確且識別結(jié)果判定也是正確的樣本;
FP——本身是錯誤判定是正確的樣本;
FN——本身是正確判定是錯誤的樣本。
測試集效果指標(biāo)如圖4所示。當(dāng)置信度閾值為0.5時,對應(yīng)的精確度為94.70%,召回率為78.57%,F1值為0.86,可以看出該模型對檢測目標(biāo)有著很好地識別效果。
(a) P曲線
(b) R曲線
(c) mAP曲線
(d) F1曲線圖4 效果指標(biāo)曲線圖Fig. 4 Performance indicator graph
將采摘草莓時的施力點放在果柄葉的位置,可以防止采摘時草莓果肉受外力的破壞,同時對果柄葉的識別還可以降低采摘機器人執(zhí)行末端的要求。但由于采摘草莓時復(fù)雜環(huán)境的影響,不管是傳統(tǒng)圖像處理還是神經(jīng)網(wǎng)絡(luò)技術(shù)都很難將果柄葉準確識別出來[14]。因此本文首先使用YOLOv4神經(jīng)網(wǎng)絡(luò)技術(shù)提取出完整草莓在圖像中的區(qū)域作為待處理區(qū)域,之后對該區(qū)域進行圖像處理,通過聚類區(qū)域特征劃分出草莓果肉、果柄葉以及背景區(qū)域。
提取神經(jīng)網(wǎng)絡(luò)檢測出的目標(biāo)框作為ROI(Region of Interest)區(qū)域,并將多余的區(qū)域剔除,即使用RGB模型中的黑色(0,0,0)進行填補。
如圖5所示,僅將含有草莓的區(qū)域提取出來,完全地剔除了多余的背景,以降低背景的復(fù)雜程度。接著將提取到的ROI區(qū)域圖進行圖像處理,包括圖像預(yù)處理、區(qū)域分割、去噪。圖像處理流程如圖6所示。
(a) 原圖
(b) ROI提取圖5 區(qū)域提取前后圖對比Fig. 5 Region extraction plot comparison
圖6 圖像處理流程Fig. 6 Image processing process
根據(jù)果肉和果柄葉的區(qū)別選取劃分指標(biāo),并確定二值化閾值。由于成熟果肉和果柄葉有明顯的顏色區(qū)別,因此將特征點放在顏色通道上。計算機將顏色分為RGB、HSV、YCrCb等空間模型,本文使用OpenCV庫對同一張圖片在不同顏色模型通道上做了試驗,結(jié)果顯示在RGB模型上區(qū)別更加明顯。
如圖7所示,在確定RGB三色特征作為劃分指標(biāo)以后,本文選定閾值對圖像進行二值化處理,初步劃分出草莓果肉、草莓果柄葉以及背景三個區(qū)域,再使用合適的濾波算法以及形態(tài)學(xué)處理算法對三個區(qū)域?qū)崿F(xiàn)準確劃分。處理結(jié)果如圖8所示。對果肉區(qū)域和果柄葉區(qū)域相接的邊緣做圓弧線性擬合得到線段L,之后沿著該圓弧圓心和弧線中點的方向逐漸腐蝕果柄區(qū)域(移動線段L′),最后得到如圖8(b)所示的采摘點P。
(a) R通道
(b) G通道
(c) B通道圖7 RGB通道分割Fig. 7 RGB channel splitting
(a) 果肉區(qū)域
(b) 果柄葉區(qū)域圖8 圖像區(qū)域分割Fig. 8 Image area segmentation
同時還需要對識別到的果肉區(qū)域進行邊緣輪廓檢測,并繪制最大內(nèi)切圓,如圖9所示。由于草莓本身的形狀特征,本文利用繪制的最大內(nèi)切圓的直徑近似為草莓剖面最大徑向尺寸。
(a) 輪廓檢測
在采摘草莓的過程中,對果柄葉的準確定位可以極大程度降低對果肉的損害。在理想環(huán)境下單純采用視覺測距的手段,在近距離的情況下,可以達到3 mm的誤差[15]。
本文通過雙目視覺定位以及激光傳感器融合的方法[16],獲取果柄葉的空間坐標(biāo)。定位流程圖如圖10所示。
圖10 果柄葉定位流程圖Fig. 10 Stem leaf positioning flowchart
本文采用雙目相機與傳感器聯(lián)合定位的方法,即在果柄葉遭到遮擋的情況下,使用雙目相機對果肉的測量數(shù)據(jù)進行補償?shù)姆椒ㄌ岣叨ㄎ痪?。機械結(jié)構(gòu)如圖11所示。
圖11 機械結(jié)構(gòu)示意圖Fig. 11 Schematic diagram of the structure
為了獲取準確的三維坐標(biāo),首先需要建立雙目相機和測距傳感器的空間變換矩陣,在保證雙目相機與測距傳感器在同一平面的前提下,由于相機、傳感器與機械臂均可看作剛體,相對位置不會改變,因此只需要求解平移矩陣即可。
基于雙目相機的三維空間坐標(biāo)測算方法,是使用三角測量的數(shù)學(xué)模型,利用兩幅圖像對同一個目標(biāo)點的觀測角度不同,求解出該目標(biāo)點的空間坐標(biāo)。
如圖12所示為雙目測距原理,點P為需要測量的目標(biāo)點,OL與OR分別為雙目相機的左右光心,PL與PR分別為P在左右相機成像平面上映射的像素點(坐標(biāo)信息已知),XL與XR分別為PL與PR像素點在圖像坐標(biāo)系的橫坐標(biāo)(P點在Z軸左邊為負數(shù),右邊為正數(shù)),f代表相機焦距,Baseline(B)為左右相機光心的物理距離,Z為P到相機的深度值,X為P到相機左相機視野中心的距離。
假設(shè)PL到PR點的距離為D,則
D=B-(XL-XR)
(6)
根據(jù)三角形相似的原理可得
(7)
(8)
(9)
由式(7)~式(9)可得
(10)
因此,只需要獲取視差值(XR-XL),就能夠獲取到目標(biāo)點的深度信息。本文通過雙目測距的方法,獲取到果肉區(qū)域的內(nèi)接圓心的深度數(shù)據(jù),然后加上由圖像中內(nèi)接圓半徑的長度轉(zhuǎn)化所得的空間距離r得到相機平面到果柄葉的垂直距離dc。
雙目測距的原理也就是目標(biāo)點到圖像像素點之間的轉(zhuǎn)換關(guān)系,此關(guān)系可以通過數(shù)學(xué)工具轉(zhuǎn)換為成像模型,該模型本質(zhì)上是三維世界目標(biāo)點到平面世界的投影,即多個坐標(biāo)系之間的轉(zhuǎn)換,包括世界坐標(biāo)系(Ow,Xw,Yw,Zw)、相機坐標(biāo)系(Oc,Xc,Yc,Zc)、像素坐標(biāo)系(Op,U,V)以及圖像坐標(biāo)系(Oi,X,Y)。成像原理如圖13所示。
圖13 相機成像原理Fig. 13 Camera imaging principles
圖13中圖像坐標(biāo)系中的p點是世界坐標(biāo)系中的P點在相機中的投影,建立P點到p點的坐標(biāo)轉(zhuǎn)換需要以下步驟。
1) 世界坐標(biāo)系到相機坐標(biāo)系。坐標(biāo)系之間的相互轉(zhuǎn)換可以看作剛體變換,因此可以通過平移旋轉(zhuǎn)矩陣表示兩者之間的關(guān)系。
假設(shè)(tx,ty,tz)為坐標(biāo)原點之間在三個坐標(biāo)軸下的平移距離,(α,β,γ)為坐標(biāo)軸之間的旋轉(zhuǎn)角度,(xc,yc,zc)為相機坐標(biāo)系下的P點坐標(biāo),P點的相機坐標(biāo)(xc,yc,zc)與P點的世界坐標(biāo)(xw,yw,zw)以及相機的外部參數(shù)(R,T)的關(guān)系式如式(11)所示。
(11)
將其改為齊次方程,得到式(12)。
(12)
其中相機外部參數(shù)(R,T)的計算公式如式(13)所示。
(13)
2) 相機坐標(biāo)系到圖像坐標(biāo)系。如圖13所示,改變換關(guān)系可以看作透視投影的過程,假設(shè)像素坐標(biāo)系下投影點p的坐標(biāo)為(xi,yi),則由三角形相似所構(gòu)建的矩陣如式(14)所示。
(14)
改為齊次方程有
(15)
3) 圖像坐標(biāo)系到像素坐標(biāo)系。如圖13所示,假設(shè)像素坐標(biāo)系下點Oi的坐標(biāo)為(uo,vo),投影點p的坐標(biāo)為(u,v),dx與dy分別為對像素值xi與yi的微分,則p的圖像坐公式如式(16)所示。
(16)
轉(zhuǎn)化為齊次方程如式(17)所示。
(17)
聯(lián)系式(11)、式(14)和式(16)可得式(18)。
(18)
(19)
上述方程中,相機內(nèi)部參數(shù)(fx,fy,uo,vo)以及外部參數(shù)(R,T)均可通過相機標(biāo)定得到。
根據(jù)相機與測距傳感器的相對位置關(guān)系以及像素與空間距離的比例系數(shù),可以尋找到圖像中測量點的像素坐標(biāo)。識別到果柄葉區(qū)域中采摘點的像素坐標(biāo)以后,對齊采摘點與測量點的像素坐標(biāo),具體做法是以測量點為原點建立坐標(biāo)系,按照采摘點在該坐標(biāo)系下的位置計算平移距離并發(fā)送指令使執(zhí)行末端平移到指定位置。此時,傳感器獲取到的數(shù)據(jù)則是執(zhí)行末端到采摘點的直線距離ds,也是相機平面到采摘點的垂直距離。
利用雙目相機測到的距離以及傳感器獲取的數(shù)據(jù),假設(shè)融合之后的深度信息為d,所建立公式如式(20)所示。
d=αds+(1-α)dc
(20)
式中:α——距離數(shù)據(jù)的因子,值域為(0,1)。
考慮到遮擋情況,令x=|dc-ds|,則α的公式如式(21)所示。
(21)
式中:x——雙目測距與傳感器數(shù)據(jù)誤差絕對值。
當(dāng)x較小時,則判定為無遮擋或遮擋不嚴重的情況,就以雙目相機測算的距離作為補償提高傳感器數(shù)據(jù)的精確度。當(dāng)x較大時,則認為完全遮擋的情況,傳感器數(shù)據(jù)的置信度指數(shù)級降低。
實際場景下,輕量化YOLOv4網(wǎng)絡(luò)模型的預(yù)測結(jié)果如圖14所示(包括高架和壟地兩種種植方式的草莓識別),可以看到改進后的算法對成熟草莓的檢測效果十分理想,圖14中不管在高架還是壟地培植的草莓,可采摘的成熟草莓均能被檢測出來,而尚未成熟的草莓則沒有被列為識別對象,由此可以看出該模型的優(yōu)越性。
(a) 高架草莓
(b) 壟地草莓圖14 識別結(jié)果圖Fig. 14 Identify the result plot
在提高識別效果和效率的前提下,本文還設(shè)計了不同程度遮擋下的定點測量試驗。在普通光照條件下,選取30顆帶有果柄葉的草莓,模擬實際采摘環(huán)境進行放置,平均分成三組對果柄葉遮擋程度的測量試驗,分別為遮擋、部分遮擋與完全遮擋。
本文設(shè)計的試驗硬件設(shè)備采用了實感相機和基于VL53L0X設(shè)計的Gravity測距傳感器。在保證不同程度的遮擋均能識別出草莓的條件下,試驗結(jié)果如表1所示。
表1 不同程度遮擋實驗結(jié)果Tab. 1 Different degrees obscure experimental results
可以看出,在不同程度的遮擋條件下,當(dāng)實際距離在100 mm之內(nèi)時,所測得的距離誤差可以控制在2 mm以內(nèi);當(dāng)實際距離在250 mm之內(nèi)時,所測得的距離誤差不超過5 mm,此時的條件滿足實際采摘環(huán)境下的要求。
同時在實際場景下,針對不同遮擋程度的情況,草莓果柄葉定位試驗的效果如圖15所示。圖中分別框出了改進YOLOv4模型所成功識別到的草莓和經(jīng)過區(qū)域分割計算后得到的采摘點位置,并提供了相應(yīng)的采摘點坐標(biāo)數(shù)據(jù)。試驗結(jié)果表明,對遮擋程度不高的成熟果實,本方法也能較為準確地定位果柄葉的位置,且測得距離與實際距離的偏差可以通過修改刀具參數(shù)補足。
針對草莓果肉極易損傷的特點,本文將采摘點放在草莓果柄葉上,提出了一種基于神經(jīng)網(wǎng)絡(luò)和傳統(tǒng)圖像處理技術(shù)相結(jié)合的技術(shù)方案,實現(xiàn)了在復(fù)雜的實際采摘場景下的草莓果柄識別與定位,所提方法具有以下優(yōu)點。
1) 本文搭建的基于YOLOv4的神經(jīng)網(wǎng)絡(luò),檢測率達到80%以上,同時輕量化的改進提高了每幀圖像的草莓識別速度,在同一PC端分別使用YOLOv4和改進后的輕量化的模型對5 000張照片進行檢測,后者用時比前者快了30%,即使是在實際復(fù)雜的采摘環(huán)境下,也能滿足實際檢測需求。
2) 將草莓所在區(qū)域劃分為ROI區(qū)域后,剔除了多余且復(fù)雜背景的影響,顯著降低了后續(xù)圖像處理的難度。在分割出明顯的果肉和果柄葉區(qū)域后,進一步通過圖像處理計算出原圖中采摘點的坐標(biāo)。采用雙目相機和激光測距相結(jié)合的方法,將誤差控制在5 mm以內(nèi),也提高了草莓采摘的成功率。
3) 本文設(shè)計的方案在降低硬件成本和機械設(shè)計難度的前提下,使用雙目相機和測距傳感器數(shù)據(jù)融合的方式,提高草莓果柄葉定位精度,降低了采摘時對草莓果肉的損壞程度。