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