趙 輝,李 浩,岳有軍,王紅君
(1.天津理工大學 電氣電子工程學院,天津 300384;2.天津農(nóng)學院 工程技術學院,天津 300384)
利用機器視覺對果實進行識別與空間定位是解決實現(xiàn)果園機械化,智能化管理的關鍵。由于彩色圖片獲取方便,目前很多方法通過提取果實的顏色、紋理、形狀等特征[1-4],或者基于深度學習的方式實現(xiàn)復雜場景下的果實識別與定位[5,6],此外相對于在目標周圍生成識別框體的方法,高效的語義分割網(wǎng)絡[7-9]可以對每個像素進行分類從而獲取目標更精細的形狀信息。
隨著RGB-D相機的普及,基于結構光以及TOF(time of flight)技術能夠高效獲取目標的深度信息進而對果實進行空間定位,Lehnert等[10]將RGB-D相機安裝在機械臂上,通過捕捉甜椒的彩色和深度數(shù)據(jù),結合色差分割以及超橢球擬合算法完成對甜椒的識別與定位,實現(xiàn)室內(nèi)環(huán)境下的甜椒采摘。文獻[11]通過KinectV2相機采集蘋果點云,并利用RANSAC(random sample consensus)算法對蘋果形狀進行估計。由于通過相機標定可以完成彩色圖和深度圖配準,十分便于二維語義分割的結果與三維信息的融合[12,13],在獲取目標空間位置的同時能夠提供更精確的輪廓信息,因此為了提升果實識別與定位的精度與速度,提出一種基于RGB-D相機的蘋果識別與定位方法,利用KinectV2深度相機進行彩色數(shù)據(jù)和深度數(shù)據(jù)的獲取,結合語義分割網(wǎng)絡以及聚類方法,完成蘋果點云的實例分割并對局部點云使用并行化的PROSAC(progressive sample consensus)算法進行形狀擬合,最終獲取果實的中心坐標以及形狀信息,完成識別與空間定位。
KinectV2是微軟于2014年發(fā)布的第二代RGB-D相機,采用TOF技術,相比于第一代能更好適應光照變化,文獻[14]測試了Kinectv2在不同位置的精度分布,數(shù)據(jù)顯示,在距離目標0.5 m-3 m的范圍內(nèi)深度數(shù)據(jù)的精度最高,深度誤差小于2 mm。考慮到深度圖的質(zhì)量以及目標果實在彩色圖像中所占的比例,數(shù)據(jù)采集過程中控制相機與果樹之間的距離為1 m-1.5 m的范圍內(nèi)。KinectV2采集到的彩色圖片尺寸為1920×1080,而深度圖尺寸為512×424,因此使用官方提供的SDK對彩色圖片與深度圖進行配準,配準后的彩色圖像的尺寸與深度圖像一致,如圖1所示。
圖1 彩色圖與深度
本文采用改進的U-NET網(wǎng)絡對采集到的蘋果圖像進行分割,U-NET[8]網(wǎng)絡采用編碼解碼結構,編碼部分逐層提取圖像特征,并減半特征圖的尺寸,解碼部分通過上采樣逐層恢復特征圖至原圖尺寸。解碼器與編碼器之間通過跳躍結構將底層特征與高層特征融合,以此提高分割精度。由于池化層的存在,特征圖每經(jīng)過一次池化,尺寸便縮小為原尺寸的一半,使得網(wǎng)絡對于小物體的分割精度較差,而將池化層去除會縮小神經(jīng)元的感受野,致使網(wǎng)絡不能很好提取圖片的全局特征,針對這一點,使用空洞卷積[15]對原始網(wǎng)絡結構進行改進,空洞卷積核結構如圖2所示。
圖2 原始卷積與空洞卷積
相比于原始卷積,空洞卷積根據(jù)膨脹系數(shù)r,在卷積核單元之間插入r-1個零,以此來達到增大感受野的目的。假設原始卷積核尺寸為K,空洞卷積的卷積核尺寸由式(1)確定
Kd=K+(K-1)(r-1)
(1)
對于3×3的原始卷積核,膨脹系數(shù)為2的卷積核尺寸為5×5,感受野增大至7×7,但參數(shù)數(shù)量與原始卷積核相同,因此空洞卷積能夠在保持參數(shù)數(shù)量不變的同時,增大感受野并維持特征圖尺寸,提升了網(wǎng)絡對小物體的分割精度。改進后的網(wǎng)絡結構如圖3所示。
圖3 DU-Net網(wǎng)絡結構
網(wǎng)絡編碼部分使用預訓練的VGG16網(wǎng)絡進行初始化,去掉第四個池化層并引入一組空洞卷積序列,膨脹系數(shù)設置分別為2,3,5,并在之后使用一層普通的3×3卷積進行平滑處理,以此來減弱網(wǎng)格效應并減半通道數(shù)。解碼部分的上采樣層與池化層對應,采用雙線性插值的方式恢復特征圖尺寸,網(wǎng)絡的最后使用1×1卷積計算像素計算各類別的分數(shù),損失函數(shù)為Softmax交叉熵損失。本次訓練在服務器中進行,服務器系統(tǒng)版本為ubuntu18.04,配置為Intel Xeon(R) CPU E5-2650 v4 @ 2.20 GHZ×48核的處理器,64 GB內(nèi)存,一塊GTX1080TI顯卡,顯存11 GB。訓練集包含1000張分辨率為256×256的小尺寸圖片和1000張分辨率為512×512的大尺寸圖片,如圖4所示。小尺寸圖片包含蘋果數(shù)目較少,且果實較為完整。大尺寸圖片則包含更復雜的場景。測試集尺寸為512×512,共300張。
圖4 部分訓練圖片示例
網(wǎng)絡基于Caffe框架實現(xiàn),網(wǎng)絡參數(shù)的更新方式為隨機梯度下降且動量設置為0.95,學習率隨迭代次數(shù)T的增加按照式(2)進行衰減,其中gamma和power分別設置為0.0001和0.75。
(2)
整個訓練過程分為兩個階段,首先使用小尺寸圖片進行訓練,BatchSize設置為8,網(wǎng)絡的初始學習率設置為0.01,迭代20 000次后利用大尺寸圖片對網(wǎng)絡進行微調(diào),此時BatchSize設置為2,初始學習率為0.001,迭代10 000次后完成訓練,最終測試效果如圖5所示。
圖5 U-Net、DU-Net效果對比
相比于原版U-Net,空洞卷積的引入以及特征圖尺寸的增大使得網(wǎng)絡對小目標的分割精度更高。分別對FCN-8S,原始U-NET以及改進的DU-Net進行測試,使用平均像素精度MPA,和平均交并比MIOU作為衡量指標,測試結果見表1。
表1 FCN,U-Net,DU-Net分割效果對比/%
通過相機的內(nèi)參矩陣可以將深度圖片轉(zhuǎn)化為點云,而配準后彩色圖像與深度圖像尺寸相同,且像素之間存在對應關系,因此可以將語義分割后的彩色圖片映射到點云上,生成語義點云,如圖6(b)所示。利用條件濾波器進行背景濾除,并獲取對應顏色的蘋果點云。對蘋果點云中每個點統(tǒng)計其以1 cm為半徑的范圍內(nèi)所包含的相鄰點的個數(shù),認定相鄰點個數(shù)小于20的點為離群點并加以去除最終得到分割去噪后的蘋果點云。如圖6(c)所示。
圖6 語義點云的生成以及背景去除
八叉樹是一種專門用于描述三維空間的數(shù)據(jù)結構,每一個父節(jié)點的節(jié)點數(shù)目只能有8個或零個。八叉樹算法從最大體素開始劃分,并判斷節(jié)點是否包含數(shù)據(jù)點,若包含則繼續(xù)劃分,直到劃分至最小體素分辨率。八叉樹算法可以將空間點云轉(zhuǎn)換成離散的體素形式,進而確定體素之間的鄰接關系。通過統(tǒng)計點云在各坐標軸上的最大、最小值,并以|Xmax-Xmin|,|Ymax-Ymin|,|Zmax-Zmin|為三邊長度構建初始體素,本文中最小體素分辨率Rvoxel設置為5 mm。
矮砧蘋果果實分布較為密集,對于果實層疊遮擋嚴重的情況,傳統(tǒng)的基于距離以及密度的聚類方法沒有很好利用到點云的幾何信息,很容易將多個蘋果分割成一個。相比于傳統(tǒng)聚類方法。LCCP[16](locally convex connected patches)算法通過體素塊之間的距離以及法線信息分析果實之間的凹凸性關系,能更好分割層疊蘋果。
LCCP算法首先使用超體聚類對點云進行過分割并生成超體素,超體聚類是K-means算法的一種變體,通過在體素空間均勻設置種子點,并且根據(jù)體素間鄰接關系以及相似性對點云進行過分割處理。相似性度量為,顏色、距離、法線度量的組合,如式(3)
(3)
對于相鄰的兩片超體素塊Pi,Pj,LCCP算法采用CC(extended convexity criterion)和SC(sanity criterion)判據(jù)分別針對表面連續(xù)和表面不連續(xù)的情況對鄰接超體素進行凹凸性分析,如果兩片超體素塊之間為凸則認為它們屬于同一個物體。
當表面連續(xù)時,通過CC判據(jù)判斷相鄰體素塊之間的凹凸關系
(4)
(5)
(6)
(7)
(8)
本次實驗將超體素聚類的種子點間距Rseed設置為5 cm,Rvoxel設置為5 mm,即最小體素分辨率。Dc,Ds,Dn分別設置為0,2,4,βT設置為10,LCCP聚類效果如圖7所示。
圖7 LCCP算法聚類效果
由于單一視角獲取的點云數(shù)據(jù)僅能反應果實的局部信息且蘋果果實的形狀近似球體,因此本文采用PROSAC漸近采樣一致性算法對每個聚類進行空間球擬合,確定果實的中心坐標以及形狀信息。
PROSAC為RANSAC的一種變體,在進行采樣之前,PROSAC算法優(yōu)先利用一個評價函數(shù)對點云中每一個點進行評估并將數(shù)據(jù)點按照評價函數(shù)值的大小進行降序排列,評價函數(shù)越高的數(shù)據(jù)點越有可能是內(nèi)點,算法選取前n個評價函數(shù)值最高的數(shù)據(jù)點作為采樣子集Un,采樣點在Un中隨機采樣,最有可能是內(nèi)點的數(shù)據(jù)點被優(yōu)先選取,由內(nèi)點計算出的模型更有可能是正確模型,因此相比于RANSAC,PROSAC收斂更快,計算出的模型更精確。此外,Un的大小隨迭代次數(shù)不斷增大,評價函數(shù)值相對較低的點也會不斷被采樣到,此外Un的大小隨著迭代次數(shù)不斷增大,這樣即使某個內(nèi)點被錯誤的賦予了較低的評價函數(shù)值,也有很大幾率在一定迭代次數(shù)內(nèi)被采樣到,使得生成的模型更加精確。
由于KinectV2采用TOF的方式獲取目標的深度數(shù)據(jù),點云數(shù)據(jù)的分布往往呈現(xiàn)中心密度高,四周密度低的現(xiàn)象,因此以每個點半徑1 cm的范圍內(nèi)相鄰點的數(shù)量作為評價函數(shù)值對數(shù)據(jù)點進行排序,若一點的評價函數(shù)值越高,則說明該點周圍的點云越密集,屬于內(nèi)點的概率就越大。
(9)
每次迭代后記錄模型所包含的內(nèi)點數(shù)量,并以此作為評價模型優(yōu)劣的標準。算法產(chǎn)生正確模型所需的最少迭代次數(shù)Tmin可以通過概率的方式估計,即
(10)
其中,η表示算法最終能得到正確模型的置信度,設置為0.95,m為求解模型所需要最少采樣點數(shù),ε為內(nèi)點在數(shù)據(jù)集中所占比例,每次迭代后,若當前模型包含的內(nèi)點數(shù)量大于之前模型的內(nèi)點數(shù)量,則認為當前模型為最優(yōu)模型,并根據(jù)式(10)更新Tmin,若當前迭代次數(shù)大于Tmin,則算法停止,返回最優(yōu)模型,并利用最小二乘法進一步擬合模型中包含的內(nèi)點,作為最終的模型。
以LCCP算法分割后的蘋果聚類為PROSAC算法的輸入,由于聚類與聚類之間相互獨立,互不影響,十分適合并行化處理,因此采用多線程的方式,對多個聚類同時進行形狀擬合,提升算法效率。
由于枝條遮擋,本應屬于同一個果實的點云可能會被算法歸為不同的聚類,使得一個果實被識別為多個如圖8(a),圖8(b)所示,此外點云數(shù)量過小的聚類更有可能是噪聲或因遮擋而產(chǎn)生的點云殘片,因此不對點云數(shù)量少于100的聚類進行擬合以此減輕噪聲以及遮擋對擬合效果的影響,并且在算法結束之后對所有的球心坐標建立KD-Tree索引,對每個球心進行半徑為2 cm的范圍檢索,若不同球心之間-的距離小于2 cm則認為對應的聚類屬于同一個果實,并將各聚類中的點合并,重新進行擬合,校正后的結果如圖8(c)所示。
圖8 校正錯誤擬合
擬合算法的測試在臺式機上進行,CPU型號為Intel Core I5-4590,線程數(shù)為4。程序基于C++語言編寫,使用PCL點云庫對點云數(shù)據(jù)進行處理并利用openmp對程序進行多線程加速。本文方法將與文獻[11]所用方法進行對比。文獻[11]對于分割后的點云并不進行聚類處理,采樣點直接在整個點云集中選取,通過循環(huán)執(zhí)行RANSAC算法對輸入點云進行球面擬合并再將已被分割的點云剔除,直到剩余點云小于給定閾值時停止。這種方法當果實個數(shù)較少時取得了不錯的效果。但當果實數(shù)量較大,遮擋較嚴重時,該算法的擬合效果較差。根據(jù)式(10),RANSAC與PROSAC算法通過η和內(nèi)點比例ε來估計算法所需的最小迭代次數(shù)Tmin,由于文獻[11]算法并不限制采樣范圍,其內(nèi)點比例約為為ε=ni/N,其中ni為第i個蘋果所包含的點云數(shù)目,N為數(shù)據(jù)點總數(shù),ε隨著果實個數(shù)的增多而逐漸降低,如果要保證一個較高的置信度η(一般取為0.95)則算法所需的迭代次數(shù)會變得非常大。當?shù)?000次時,擬合出現(xiàn)了較大的誤差,如圖9(a)所示,直到迭代3000次時算法才能正確的擬合其中一個蘋果點云,如圖9(b)所示。此外,由于文獻[11]算法是以一種串行的方式執(zhí)行算法,前一次誤差影響到后一次的擬合過程,誤差會逐漸累計,最終產(chǎn)生錯誤的擬合結果,如圖9(c)所示。而本文方法,將采樣范圍限制在每個聚類當中,內(nèi)點比例顯著增大,算法收斂更快,即使在多果的情況下,算法仍舊能夠在有限的迭代次數(shù)內(nèi)實現(xiàn)較好的擬合效果。如圖10(a),圖10(b)分別為迭代50,100次時的擬合效果。由于聚類與聚類之間相互獨立,即使出現(xiàn)擬合錯誤的情況也不會影響其它聚類的擬合效果,此外,由于對點云基于密度進行排序,采樣點總是首先在密度較高的部分進行選取,在果實點云殘缺較為嚴重的情況下,受到離群點的影響較小,因此能很好擬合層疊遮擋嚴重的果實如圖10(c)所示。
相比于串行方式,本文采取并行方式同時對多個果實聚類進行擬合,提升了算法的效率。本次實驗選取15組不同點云數(shù)量的樣本,點云數(shù)目最少為3200,最大為15 900。分別以串行和并行兩種方式執(zhí)行算法。耗時對比如圖11所示。
圖9 文獻[11]算法擬合效果
圖10 本文算法擬合效果
圖11 串行方式與并行方式處理時間對比
為衡量算法對蘋果識別的準確率,本次實驗分別拍攝不同光照程度,果實數(shù)量以及遮擋層疊情況的點云圖像40張,每張點云圖片中果實數(shù)量最少為10,最多為32。利用游標卡尺測量蘋果水平方向,豎直方向,以及兩對角線方向的半徑并求均值作為最終的半徑長度,測得半徑長度最小為4.1 cm,最大為4.8 cm。將半徑閾值設定為Rmin為3 cm,Rmax為6 cm,利用排水法測量每個蘋果的體積。將數(shù)據(jù)集按照果實數(shù)量以及遮擋程度分為果實數(shù)量較少,果距較大,層疊程度輕微以及果實數(shù)量大于20個,且層疊遮擋嚴重兩個集合,分別對文獻[11]算法與本文算法進行測試,設每個聚類中點云數(shù)量為Ni,算法擬合聚類所得到的內(nèi)點數(shù)量為ni,球半徑為R,若滿足
(11)
則認為當前聚類被算法成功擬合,果實被正確識別。算法的準確率為正確識別的果實數(shù)量與果實總量的比值,測量結果見表2。
由于光照以及葉片遮擋會影響蘋果圖像的分割精度,使得最終每個聚類包含的點云數(shù)目差異較大,本次實驗統(tǒng)計算法在不同點云數(shù)目下的半徑均方根誤差以及體積均方根誤差,以此衡量算法對殘缺點云的擬合效果,見表3。由表3可知,當聚類所包含的點云數(shù)量大于500時,算法擬合精度較高,隨著點云數(shù)量減少,往往會產(chǎn)生誤差較大擬合結果,但半徑均方根誤差較為穩(wěn)定,對點云數(shù)量不足200的情況,最大半徑誤差不超過1 cm,因此本文算對光照,遮擋等影響有較強的魯棒性,可以完成復雜環(huán)境下果實的識別與定位。
表2 識別準確率對比/%
表3 不同點云數(shù)目下的擬合效果
本文首先利用擴張卷積對原始U-Net網(wǎng)絡進行改進,提升了網(wǎng)絡對小目標的分割精度,采用二維向三維映射的方式生成語義點云,完成蘋果區(qū)域的點云分割,基于LCCP算法對蘋果點云進行實例化分割,并使用多線程的PROSAC算法對局部點云進行擬合,實驗結果表明,本文算法能夠高效地對空間果實進行識別,對多果實且存在層疊遮擋的情況亦能取得不錯的效果,能夠?qū)埲秉c云進行較為精確的擬合以此獲取果實的形狀與位置信息。