孫寶霞,鄭鎮(zhèn)輝,胡文馨,郭文韜,熊俊濤*
(1. 廣東機(jī)電職業(yè)技術(shù)學(xué)院電氣技術(shù)學(xué)院,廣州 510515; 2. 華南農(nóng)業(yè)大學(xué)數(shù)學(xué)與信息學(xué)院,廣州 510642)
龍眼是我國華南地區(qū)重要的熱帶亞熱帶果樹之一,已成為我國華南地區(qū)農(nóng)村經(jīng)濟(jì)的支柱產(chǎn)業(yè),在推進(jìn)農(nóng)業(yè)產(chǎn)業(yè)結(jié)構(gòu)的調(diào)整、增加農(nóng)民收入方面發(fā)揮著重要的作用[1]。近些年來,我國龍眼產(chǎn)量呈波動上升態(tài)勢,但依然存在龍眼管理成本高、機(jī)械化程度低等問題。目前龍眼的采摘依賴人工操作來實(shí)現(xiàn)。隨著農(nóng)業(yè)機(jī)械化的發(fā)展,將農(nóng)業(yè)機(jī)器人應(yīng)用到龍眼采摘過程中,能夠大幅降低勞動成本,提高龍眼經(jīng)濟(jì)效益。
果實(shí)的檢測與定位是采摘機(jī)器人的關(guān)鍵技術(shù)之一,其精確度和準(zhǔn)確度是機(jī)器人成功采摘的關(guān)鍵。目前,水果檢測與定位已有眾多研究,但以龍眼為研究對象的成果則較少,如Pathaveerat等[2]提出利用HSB (hue、saturation、brightness,色相、飽和度、亮度)顏色模型和霍夫圓檢測來分割出龍眼果實(shí)。Wang等[3]利用小波變換和K均值聚類對荔枝進(jìn)行識別,實(shí)驗(yàn)表明該識別方法能夠很好地對抗光照變化,對無遮擋和部分遮擋的荔枝平均識別率分別為98.8%和97.5%。Liu等[4]提出一種在Cr-Cb(色調(diào)-飽和度)坐標(biāo)中構(gòu)建多橢圓邊界模型的方法來獲取柑橘的輪廓信息,正確率達(dá)90.8%。以上方法基于果實(shí)的顏色和紋理特征進(jìn)行檢測,其環(huán)境適應(yīng)性低,魯棒性較弱,不適合用于與枝條顏色和紋理相近的龍眼果實(shí)。
近年來,深度學(xué)習(xí)算法已成功應(yīng)用到農(nóng)業(yè)視覺領(lǐng)域中,并取得較好的效果。Bargoti等[5]利用Faster-RCNN檢測蘋果、芒果和杏仁,且蘋果和芒果檢測網(wǎng)絡(luò)的F1得分大于0.9。但RCNN(regions with CNN features)系列算法檢測速率較低,相對而言,YOLO(you only look once)系列算法則能彌補(bǔ)這一缺陷。熊俊濤等[6]提出利用YOLOv2對航拍綠色芒果圖像進(jìn)行檢測,測試集識別正確率為90.64%,平均檢測時間為每幅圖0.08 s。Tian等[7]提出一種改進(jìn)的YOLOv3模型用于檢測不同生長階段的蘋果,測試結(jié)果表明,該模型優(yōu)于Faster-RCNN和VGG16(visual geometry group),平均檢測時間為每張圖0.304 s。
隨著RGB-D設(shè)備的成熟,許多研究者將水果的深度信息應(yīng)用到水果檢測與定位中。Barnea等[8]結(jié)合三維表面特征和反射效果來檢測感興趣區(qū)域,再通過SVM來檢測甜椒,其運(yùn)行時間為197 s,檢測精度為55%。Nguyen等[9]提出對蘋果點(diǎn)云數(shù)據(jù)進(jìn)行聚類的方法,同時實(shí)現(xiàn)蘋果檢測和定位。范永祥等[10]基于RGB-D SLAM手機(jī)構(gòu)建了森林樣地調(diào)查系統(tǒng),在18塊半徑為7.5 m的圓形樣地中進(jìn)行了測試,坡向估計(jì)具有較大的RMSE,是由于當(dāng)坡度較小時,即使SLAM系統(tǒng)估計(jì)位姿有較小漂移,仍會導(dǎo)致該值產(chǎn)生較大偏差,但整體而言坡向仍是無偏的。
本研究的龍眼果實(shí)體積較小,與枝條顏色同是淺棕色,在檢測和定位上有一定難度,但其形狀呈規(guī)則圓形,利用深度學(xué)習(xí)算法能夠較好地學(xué)習(xí)該特征。因此,本研究提出一種自然環(huán)境下龍眼的檢測和定位算法,通過RGB-D相機(jī)采集龍眼的彩色和深度圖像,利用YOLOv5對彩色圖像進(jìn)行識別,并結(jié)合深度圖像進(jìn)行定位。結(jié)果表明,該方法有較高檢測率,能為龍眼的自動采摘機(jī)器人提供技術(shù)支持。
本研究所用視覺傳感器為kinect v2,將一臺微軟kinect v2傳感器與一臺Win10筆記本電腦相連,使用Microsoft Visual C++2017、OpenCV3.4.1圖像處理庫實(shí)現(xiàn)圖像采集功能。kinect v2搭載了紅外光源、紅外攝像頭和彩色攝像頭。紅外攝像頭拍攝的圖像分辨率為512×424 px,視場角為70.6°×60.0°,有效拍攝距離為500~4 500 mm。彩色攝像機(jī)分辨率為1 920 pixel×1 080 pixel,視場角為84.1°×53.8°。本研究利用這兩個攝像頭分別獲取深度圖像和彩色圖像。
高世科等[11]在進(jìn)行光照強(qiáng)度對碟狀體生長的影響試驗(yàn)時,設(shè)置2個組: NL1為自然光組(1 405 lx),WL2為弱光組(黑色塑料布罩住光源,光照度為605 lx)。因此,試驗(yàn)設(shè)置強(qiáng)烈光組(2 005 lx)、中等光組(1 405 lx)和暗淡光組(605 lx)進(jìn)行圖像采集。
參照《龍眼種質(zhì)資源描述規(guī)范和數(shù)據(jù)標(biāo)準(zhǔn)》[12]和NY/T 1305—2007《農(nóng)作物種質(zhì)資源鑒定技術(shù)規(guī)程 龍眼》進(jìn)行果實(shí)數(shù)量類別劃分,將果實(shí)數(shù)量分為較少(穗粒數(shù)50以下)、中等(穗粒數(shù)50~200)、較多(穗粒數(shù)200以上)3組。
試驗(yàn)圖像于2020年7月拍攝于廣州市天河區(qū)果樹研究所。拍攝距離為500~1 200 mm,并從不同的光照度下進(jìn)行拍攝,共拍攝920幅龍眼圖像作為本研究的數(shù)據(jù)集。根據(jù)果樹數(shù)量和光照強(qiáng)度的不同進(jìn)行了圖像分類,不同情況下的龍眼圖像統(tǒng)計(jì)見表1。對表1中所有圖像打上人工標(biāo)簽,并對每種龍眼圖像分別隨機(jī)抽取80%的數(shù)據(jù),共736副圖像作為本研究模型的訓(xùn)練集,剩余的184副圖像作為測試集。
表1 各類龍眼圖像統(tǒng)計(jì)Table 1 Statistical table of various longan images
總體研究技術(shù)流程圖如圖1所示。
圖1 檢測與定位算法流程圖Fig. 1 Flow chart of detection and location algorithm
首先利用視覺傳感系統(tǒng)采集大量花果圖片,并對圖片進(jìn)行圖像配準(zhǔn)和深度分割預(yù)處理。然后對預(yù)處理后的圖片進(jìn)行打標(biāo),并輸入目標(biāo)檢測神經(jīng)網(wǎng)絡(luò)中訓(xùn)練。網(wǎng)絡(luò)訓(xùn)練完成后能夠識別并獲取圖像中目標(biāo)的位置信息,然后根據(jù)位置信息計(jì)算出目標(biāo)的圖像坐標(biāo),再結(jié)合深度圖像中的信息最終計(jì)算出目標(biāo)的三維坐標(biāo)。
本研究圖像預(yù)處理流程包含圖像配準(zhǔn)和深度分割兩個步驟。由于深度圖像和彩色圖像用不同分辨率和視場角的攝像頭拍攝所得,因此在對圖像進(jìn)行目標(biāo)檢測前需要先進(jìn)行圖像配準(zhǔn),在深度圖像和彩色圖像兩者坐標(biāo)之間建立對應(yīng)關(guān)系,使坐標(biāo)對齊。本研究利用kinect v2軟件開發(fā)工具包里提供的“MapDepthFrameToColorSpace”函數(shù)調(diào)整彩色圖像以匹配深度圖像。由于圖像的背景會干擾目標(biāo)檢測的效果,并且考慮到機(jī)械臂的活動范圍和kinect的有效拍攝范圍,本研究對配準(zhǔn)后的圖像進(jìn)行了深度分割。對不同深度的圖片進(jìn)行多次預(yù)試驗(yàn),對比不同的圖像效果,最終選擇圖片的有效深度在500~1 200 mm。
YOLO算法最早由Redmon等[13]提出,后來經(jīng)過改進(jìn)發(fā)展成YOLOv4[14]和YOLOv5[15]。YOLOv5能夠在保證時效性的同時有著較高的檢測準(zhǔn)確率。對于Faster-RCNN,其檢測過程分成兩步,首先提取出候選框,然后對候選框進(jìn)行分類和回歸。而YOLOv5網(wǎng)絡(luò)將檢測問題轉(zhuǎn)換為回歸問題。它不需要提議區(qū)域,直接通過回歸生成每個類的邊界框坐標(biāo)和概率。因此在檢測速度上,基于回歸的YOLOv5比基于候選區(qū)的Faster-RCNN要快很多。
YOLOv5由名為Darknet-53的基礎(chǔ)網(wǎng)絡(luò)和檢測網(wǎng)絡(luò)構(gòu)成。其中Darknet-53包含了52個卷積層和1個全連接層,其結(jié)構(gòu)如圖2所示,該網(wǎng)絡(luò)以416×416分辨率的圖像作為輸入,輸出3種不同尺度的特征(13×13,26×26,52×52),然后送到檢測網(wǎng)絡(luò)中進(jìn)行回歸,得到多個預(yù)測框,最后運(yùn)行非極大抑制算法,保留置信度最高的預(yù)測框作為目標(biāo)最終的檢測框。
YOLOv5模型檢測過程為:首先將整個圖像縮放到416×416分辨率,并用S×S個網(wǎng)格劃分圖像,圖中的檢測目標(biāo)由目標(biāo)中心點(diǎn)所在的單元格負(fù)責(zé)檢測,每個單元格預(yù)測多個邊界框的坐標(biāo)信息和置信度信息。
在檢測過程中,同一個目標(biāo)會得到多個候選邊框和相應(yīng)的置信得分,因此YOLOv5使用非極大值抑制(non-max suppression,NMS)[16]算法來消除冗余邊框,選出最佳的候選框作為目標(biāo)的檢測框。
YOLOv5通過計(jì)算單元格預(yù)測值和真實(shí)值的誤差平方和作為模型的損失。損失函數(shù)由邊界框位置誤差、置信度誤差和分類誤差三部分組成,用公式表示為:
圖2 龍眼檢測網(wǎng)絡(luò)結(jié)構(gòu)Fig. 2 Structure diagram of longan detection network
(1)
3個誤差用公式分別表示為:
(2)
(3)
(4)
YOLOv5模型能夠獲取并輸出多個目標(biāo)的大小和位置信息。本研究定位方法如圖3所示。
圖3 龍眼定位方法Fig. 3 Method of longan location
圖3中紅色框?yàn)閅OLOv5模型的輸出框,黃點(diǎn)為輸出框的中心點(diǎn)。為了提高算法的實(shí)時性,簡化計(jì)算過程,將輸出框的中心點(diǎn)作為龍眼的質(zhì)心,通過以圖像最左上角像素點(diǎn)為原點(diǎn)建立像素坐標(biāo)系,獲取中心點(diǎn)的像素坐標(biāo)并映射到深度圖的像素坐標(biāo)系中,則該點(diǎn)在深度圖的像素值即為龍眼到相機(jī)平面的距離。以kinect的紅外攝像頭為原點(diǎn)建立相機(jī)坐標(biāo)系XcYcZc(圖3中紅色箭頭方向),其中Zc為相機(jī)的光軸,則龍眼的三維坐標(biāo)(xd,i,yd,i,zd,i)用公式表示為:
(5)
式中:Idep為深度圖像;(ui,vi)為圖像像素坐標(biāo);(Cx,Cy,fx,fy)為紅外攝像頭的內(nèi)參矩陣,本研究通過張正友相機(jī)標(biāo)定法計(jì)算所得。
本試驗(yàn)的軟硬件平臺配置如下:操作系統(tǒng)為Ubuntu16.04;深度學(xué)習(xí)框架為Pytorch;CPU i7-8700,3.2 GHz主頻,六核十二線程;內(nèi)存32 GB;顯卡為GeForce GTX3090。本研究在YOLOv5模型的預(yù)訓(xùn)練權(quán)重YOLOv5-l的基礎(chǔ)上訓(xùn)練龍眼識別網(wǎng)絡(luò),設(shè)置的學(xué)習(xí)率為0.001,迭代次數(shù)為5 000次。
在實(shí)際的龍眼拍攝環(huán)境中,每張圖像包含的果實(shí)個數(shù)和受到光照的強(qiáng)度往往不同,針對該現(xiàn)象,對龍眼數(shù)量差異較大的圖像進(jìn)行分類,并在不同的光照條件下進(jìn)行測試,部分圖像測試結(jié)果經(jīng)局部放大2.5倍后如圖4所示,分別為圖像果實(shí)個數(shù)較少、中等、較多時的測試結(jié)果。在串果稀少的圖像中,目標(biāo)對象較為完整,大部分果實(shí)都能被正確檢測。而串果較多的圖像中,存在部分果實(shí)過小、粘連和相互遮擋的情況,精確率有所降低。此外,模型在光照度強(qiáng)烈和中等環(huán)境下能取得較好的檢測效果;而光照暗淡環(huán)境下由于存在較多陰影,影響了龍眼的檢測效果。
對圖4中龍眼和輸出框的個數(shù)進(jìn)行人工統(tǒng)計(jì),其統(tǒng)計(jì)結(jié)果如表2所示。
圖4 檢測結(jié)果Fig. 4 Testing results
表2 人工統(tǒng)計(jì)結(jié)果與本研究算法檢測結(jié)果的對比Table 2 Comparison of results of manual statistics with calculation results
選取精確率(precision,P)和召回率(recall,R)來評價(jià)圖像整體的檢測效果,并用精確率和召回率的調(diào)和平均值,即F1分?jǐn)?shù)(F1-score,F(xiàn)1)來衡量模型的性能。
精確率、召回率、F1值、mAP(mean average precision)作為評估指標(biāo),經(jīng)常用到分類效果的評測上,且只考慮正樣本的指標(biāo)。精確率是以預(yù)測結(jié)果為判斷依據(jù),預(yù)測為正例的樣本中預(yù)測正確的比例,即相對正例的預(yù)測結(jié)果而言,正例預(yù)測的準(zhǔn)確度;召回率是以實(shí)際樣本為判斷依據(jù),實(shí)際為正例的樣本中,被預(yù)測正確的正例占總實(shí)際正例樣本的比例,實(shí)際為正例的樣本中,即評估所有實(shí)際正例是否被預(yù)測出來的覆蓋率占比多少;由于單獨(dú)用精確率或召回率不能全面評估模型好壞,所以結(jié)合F1分?jǐn)?shù)來評估模型的性能;mAP是各類別AP的平均值。以上評估指標(biāo)皆為越大越好。
精確率、召回率和F1分?jǐn)?shù)用公式表示為:
(6)
(7)
(8)
式中:TP表示正確檢測的龍眼框選數(shù)目;FP表示錯誤檢測的框選數(shù)目;FN表示漏檢測的龍眼數(shù)目。
不同圖像的YOLOv5測試結(jié)果如表3所示。最終模型的平均精確率為96.55%,平均召回率為92.02%,F(xiàn)1(F1-score)為0.942。
表3 不同圖像的YOLOv5測試結(jié)果Table 3 Test results of different images using YOLOv5
圖6 不同條件下的框選結(jié)果對比Fig. 6 Comparison of box selection under different conditions
本研究所用方法對于部分粘連龍眼未能有效檢測,如圖5所示,圖中藍(lán)圈里面的粘連龍眼能正確檢測,而黃圈里面的則未能正確檢測。明顯看出,圖5a中黃圈的龍眼比藍(lán)圈的龍眼體積更小,因而導(dǎo)致黃圈內(nèi)一整串果實(shí)未能有效檢測,即使是黃圈內(nèi)僅有的一個紅色輸出框,也是錯誤地框著兩個互相粘連的龍眼;而圖5b中,整體光照暗淡,且黃圈內(nèi)的龍眼由于受到背光的影響,比起藍(lán)圈內(nèi)的更模糊,且目標(biāo)顏色普遍泛白,顏色信息失真,相比藍(lán)圈內(nèi)的更加難以檢測。綜上,對于粘連龍眼,在檢測龍眼體積較小和環(huán)境光照不良情況下,會更容易導(dǎo)致龍眼漏檢。
圖5 粘連龍眼檢測結(jié)果Fig. 5 Test results of overlapping longans
為了更直觀體現(xiàn)本研究檢測算法的優(yōu)越性,筆者設(shè)計(jì)了對比試驗(yàn),在與YOLOv5同樣的試驗(yàn)硬件配置下搭建Tensorflow框架和Darknet框架,并在不同復(fù)雜場景下擴(kuò)充龍眼數(shù)據(jù)集來訓(xùn)練YOLOv5、YOLOv4和Faster-RCNN 3個不同果實(shí)檢測模型。重新構(gòu)造后的數(shù)據(jù)集一共包含2 219張龍眼圖像,按照70%,15%,15%的比例隨機(jī)拆分為訓(xùn)練集、驗(yàn)證集、測試集。試驗(yàn)結(jié)果以對比的形式顯示,分別使用YOLOv5、YOLOv4和Faster-RCNN 3個算法測試隨機(jī)抽取的兩張測試圖像,效果如圖6所示。
由圖6可知,在多果遠(yuǎn)距離檢測的情況下,3種算法都能有效檢測圖像中大多數(shù)的龍眼,但Faster-RCNN算法存在將重疊果實(shí)識別成單個果實(shí)的缺陷(圖6a);同時YOLOv4則出現(xiàn)將背景樹葉誤識別為龍眼的情況(圖6b);而YOLOv5則可以很好地克服其他兩種算法存在的問題(圖6c)。此外,在多果背光遮擋檢測的情況下,YOLOv4和Faster-RCNN算法存在漏識別龍眼的不足,而YOLOv5則可以成功將圖像中被遮擋的龍眼識別出來。
最終Faster-RCNN、YOLOv4與YOLOv5 3種檢測模型的測試結(jié)果如表4所示,在龍眼果實(shí)的檢測上,YOLOv4和YOLOv5的檢測時間明顯較Faster-RCNN短,且檢測速率明顯比Faster-RCNN快,此外YOLOv5的精確度遠(yuǎn)比Faster-RCNN和YOLOv4高,可以滿足果園復(fù)雜環(huán)境下龍眼精準(zhǔn)檢測的需求。
表4 模型測試結(jié)果對比Table 4 Comparison of three model test results
由于平均誤差和標(biāo)準(zhǔn)偏差可能受到大誤差的影響,本研究將定位精度量化為由檢測算法估計(jì)的坐標(biāo)(xd,i,yd,i,zd,i)與真實(shí)位置坐標(biāo) (xg,i,yg,i,zg,i) 之間的中值誤差(median error, MEDE)和中值絕對偏差(median absolute deviation, MEDAD),以x軸方向?yàn)槔霉奖硎救缦拢?/p>
MEDE=median{|xd,i-xg,i|}
(9)
MEDAD=median{||xd,i-xg,i|-MEDE|}
(10)
式中:median()為取集合中元素的中值,同理可得y軸和z軸方向上的中值誤差和中值絕對偏差。
試驗(yàn)過程主要是在500~1 200 mm范圍內(nèi)設(shè)定kinect相機(jī)和龍眼果實(shí)的不同距離,每隔50 mm利用kinect相機(jī)對多個方位的龍眼果實(shí)進(jìn)行三維定位,計(jì)算用kinect所得的龍眼三維坐標(biāo)與激光測距儀測量的實(shí)際龍眼三維坐標(biāo)之間的中值誤差,并繪制出誤差曲線。龍眼真實(shí)位置的測量場景見圖7,分別用激光測距儀和游標(biāo)卡尺測出龍眼的z軸和x、y軸的坐標(biāo)。誤差曲線見圖8,可以看出3個坐標(biāo)的誤差都隨著深度變化不同程度地上升,其中z軸坐標(biāo)的誤差上升得最快,在深度值較大時明顯高于x軸和y軸的誤差。
圖7 坐標(biāo)測量場景Fig. 7 Coordinate measurement scene
隨機(jī)挑選多個果實(shí)的中值誤差和中值絕對偏差的計(jì)算結(jié)果見表5,在x、y和z軸方向上的中值誤差分別為5,6和10 mm,深度方向上的誤差略大,但3個方向上的中值誤差都不超過10 mm,能夠被采摘機(jī)器人接受。
此外,本研究在處理器為Inter(R) Core(TM)i5-6500 @ 3.20 GHz、內(nèi)存為8 GB的計(jì)算機(jī)平臺上對60張龍眼圖像進(jìn)行定位,最終算法的平均運(yùn)行時間為0.071 s。
圖8 不同坐標(biāo)的深度誤差曲線Fig. 8 Curves of depth error for different coordinates
表5 誤差計(jì)算結(jié)果Table 5 Error calculation results
檢測與定位是采摘機(jī)器人的關(guān)鍵技術(shù)之一。針對目前對龍眼果實(shí)進(jìn)行檢測與定位的研究較少,本研究通過RGB-D相機(jī)獲取龍眼彩色和深度圖像,隨后在圖像配準(zhǔn)和深度分割后,利用YOLOv5檢測模型對龍眼果實(shí)進(jìn)行檢測,并結(jié)合深度圖像獲取果實(shí)的三維坐標(biāo)。試驗(yàn)驗(yàn)證了該方法的有效性與可行性。
1)相比Faster-RCNN,YOLOv5能夠更加有效地檢測龍眼果實(shí),平均檢測時間、精確率、召回率、F1分?jǐn)?shù)分別為0.024 s、96.55%、92.02%、0.942。在果實(shí)數(shù)稀少、中等和較多的情況下精確率分別為98.37%,97.86%和95.57%,召回率分別為93.92%,92.15%,91.57%。而在光照強(qiáng)烈、中等和暗淡的環(huán)境下精確率分別為98.06%,96.34%和95.27%,召回率分別為93.03%,93.37%和89.68%,能夠適應(yīng)不同果實(shí)數(shù)量和中高強(qiáng)度光照的情況,具有一定的魯棒性。
2)構(gòu)建了深度誤差曲線,且測量了龍眼果實(shí)在x、y和z軸方向上定位的中值誤差分別為5,6和10 mm,中值絕對偏差分別為3.7,3.3和5.1 mm,最終定位算法平均運(yùn)行時間為0.071 s,滿足采摘機(jī)器人的采摘需求。
3)驗(yàn)證了YOLOv5模型對龍眼果實(shí)識別的精確性和實(shí)時性,但仍存在識別效果不理想的情況,主要原因是龍眼在光照暗淡的環(huán)境下果實(shí)輪廓不明顯。后續(xù)的研究將考慮利用低光照圖像增強(qiáng)技術(shù)來提升識別效果。
4)本研究設(shè)計(jì)了對比試驗(yàn),在與YOLOv5同樣的試驗(yàn)硬件配置下搭建Tensorflow框架和Darknet框架,并在不同復(fù)雜場景下擴(kuò)充龍眼數(shù)據(jù)集來訓(xùn)練YOLOv5、YOLOv4和Faster-RCNN 3個不同果實(shí)檢測模型,可以滿足果園復(fù)雜環(huán)境下龍眼精準(zhǔn)檢測的需求。