陳境煥,李海艷,林景亮
(廣東工業(yè)大學(xué) 機(jī)電工程學(xué)院,廣州 廣東 510006)
隨著機(jī)器人行業(yè)發(fā)展和進(jìn)步,對(duì)機(jī)器人控制精度要求越來越高[1],而機(jī)器人準(zhǔn)確地感知環(huán)境是機(jī)器人高精度控制的前提。如機(jī)器人抓取零件前,需要感知到零件,定位待抓取部位,再進(jìn)行抓取路徑規(guī)劃。機(jī)器人感知系統(tǒng)一般通過對(duì)圖像或點(diǎn)云處理來獲得視覺信息。隨著激光雷達(dá)(LiDAR)的廣泛使用和點(diǎn)云相對(duì)于圖像攜帶更多深度、位姿和表面特征等信息,點(diǎn)云成為機(jī)器人系統(tǒng)的重要感知數(shù)據(jù)源。從幾何面級(jí)來說,零件點(diǎn)云可以分解成不同的平面和曲面等要素。對(duì)零件點(diǎn)云進(jìn)行面要素分割,可使機(jī)器人系統(tǒng)快速且高精度地定位抓取部位。
傳統(tǒng)點(diǎn)云分割算法一般使用圖形聚類,以獲取法向信息、平滑度和邊界等信息[2],對(duì)點(diǎn)云進(jìn)行分割,這些分割算法適用性不高,且需要較多的人機(jī)交互。近年來,隨著CNN在圖像領(lǐng)域的識(shí)別和分割取得了顯著成效[3],越來越多學(xué)者使用深度學(xué)習(xí)的方法對(duì)點(diǎn)云進(jìn)行分類和分割。因點(diǎn)云具有無序性、不規(guī)則性和稀疏性,這使得常規(guī)的CNN無法有效地提取點(diǎn)云特征。WU Zhi-rong等人[4]將輸入的3D數(shù)據(jù)表示轉(zhuǎn)換為了3D體素網(wǎng)格,在體素網(wǎng)格上應(yīng)用了3D卷積神經(jīng)網(wǎng)絡(luò),但是該方法計(jì)算量大、處理速度慢;SU H等人[5]提出了將三維場(chǎng)景通過不同角度投影轉(zhuǎn)化為多個(gè)視角二維圖像,結(jié)合三維數(shù)據(jù)和二維圖像來進(jìn)行了特征提取;由于需要將多個(gè)角度的三維信息轉(zhuǎn)換成圖像,限制了其應(yīng)用場(chǎng)景,且其處理過程緩慢。
為了解決點(diǎn)云無序性帶來的特征提取問題,斯坦福的QI R C[6]首次提出了用PointNet框架直接對(duì)點(diǎn)云進(jìn)行特征提取。PointNet將點(diǎn)云的每個(gè)點(diǎn)使用多層感知器(MLP)進(jìn)行了升維,然后使用最大池化來獲取點(diǎn)云的特征向量,其在分類和分割任務(wù)上都取得了比較好的結(jié)果。由于PointNet的最大池化得到的是整個(gè)點(diǎn)云的特征向量,使得其難以捕捉點(diǎn)云的局部信息。QI R C[7]對(duì)PointNet進(jìn)行了改進(jìn),提出了PointNet++框架,兼顧了局部特征和全局特征,提高了點(diǎn)云分割的精度和魯棒性,成了深度學(xué)習(xí)點(diǎn)云分割框架的主流方法。基于PointNet++的框架,PointSIFT[8]在點(diǎn)云特征提取過程中加入了方向意識(shí),提高了網(wǎng)絡(luò)的表征能力。而PointCNN[9]則通過學(xué)習(xí)X變換矩陣,提高了網(wǎng)絡(luò)在無序和不規(guī)則點(diǎn)云中的表征能力。由于位于零件面要素交界處的點(diǎn)云本身難以被區(qū)分,而基于PointNet++的分割網(wǎng)絡(luò)缺乏針對(duì)性地提取面要素交界處的特征信息,使得這些點(diǎn)容易被分類錯(cuò)誤。讓網(wǎng)絡(luò)有針對(duì)性地提取面要素交界處的特性,同時(shí)提高網(wǎng)絡(luò)在無序和不規(guī)則點(diǎn)云中的特征提取能力,是實(shí)現(xiàn)零件點(diǎn)云面要素分割的關(guān)鍵。
為了提高零件點(diǎn)云面要素分割精度,本研究基于點(diǎn)云分割網(wǎng)絡(luò),對(duì)Point-SIFT-X網(wǎng)絡(luò)框架和基于曲率的最遠(yuǎn)點(diǎn)采樣算法(C-FPS)進(jìn)行研究。
基于PointNet++框架的點(diǎn)云特征提取和特征傳遞如圖1所示。

圖1 點(diǎn)云特征提取和特征傳遞
該分割框架先用最遠(yuǎn)點(diǎn)采樣算法(FPS)獲得采樣點(diǎn),以每個(gè)采樣點(diǎn)為中心,獲得K個(gè)近鄰點(diǎn),再將中心點(diǎn)和K個(gè)近鄰點(diǎn)作為組合進(jìn)行特征提取。經(jīng)過特征提取層后,點(diǎn)云的數(shù)目變少但是每個(gè)點(diǎn)攜帶高維的特征信息。這種利用卷積處理后,點(diǎn)云數(shù)目變少的過程又稱下采樣。特征傳遞過程中,點(diǎn)云的特征由上一層M個(gè)空間近鄰點(diǎn)進(jìn)行特征插值獲得特征向量。在PointNet++中,插值權(quán)重w根據(jù)點(diǎn)云的空間距離決定。最后利用每個(gè)點(diǎn)的特征向量去決定該點(diǎn)所屬的標(biāo)簽類別,實(shí)現(xiàn)分割任務(wù)。
但是該框架在物體部件的交界處會(huì)出現(xiàn)分割效果不佳的情況,PointNet++型網(wǎng)絡(luò)分割結(jié)果如圖2所示。

圖2 PointNet++型網(wǎng)絡(luò)分割結(jié)果
PointNet++使用最遠(yuǎn)點(diǎn)采樣算法近似于均勻地獲取采樣點(diǎn),而采樣點(diǎn)決定了神經(jīng)網(wǎng)絡(luò)特征提取的位置,進(jìn)而決定特征傳遞過程和分割精度。讓點(diǎn)云分割框架在面要素交界處獲得更多采樣點(diǎn),使得神經(jīng)網(wǎng)絡(luò)提取更多交界處特征,是C-FPS算法的出發(fā)點(diǎn)。此外,Point-SIFT-X分割框架在特征提取前對(duì)組合的點(diǎn)云進(jìn)行X矩陣變換,使點(diǎn)云具有空間轉(zhuǎn)換不變性,再分別對(duì)點(diǎn)云進(jìn)行不同方向的特征提取,增強(qiáng)網(wǎng)絡(luò)對(duì)點(diǎn)云的表征能力。
根據(jù)文獻(xiàn)[10],零件點(diǎn)云的高斯曲率分布和面要素交界處相關(guān),零件點(diǎn)云的幾何面交界處,一般高斯曲率較大。C-FPS算法在點(diǎn)云高斯曲率大的位置獲得更多采樣點(diǎn),其他位置獲得較少采樣點(diǎn)。在不影響其他位置點(diǎn)云分割精度的前提下,網(wǎng)絡(luò)能提取更多面要素交界處的特征信息,為后續(xù)點(diǎn)云標(biāo)簽預(yù)測(cè)提供依據(jù),從而提高了點(diǎn)云的分割精度。算法具體流程如下:
步驟1:輸入點(diǎn)云P,初始化每個(gè)點(diǎn)的選擇標(biāo)志F=(f0,f1,…,fn)為0,fi為-1表示該點(diǎn)不可作為采樣點(diǎn),而fi為1則表示該點(diǎn)已被作為采樣點(diǎn),α是曲率采樣點(diǎn)個(gè)數(shù)上限,β是總采樣點(diǎn)個(gè)數(shù)。計(jì)算P的高斯曲率并從大到小排序得到Cur,構(gòu)造P的K-D樹Tp;




C-FPS和FPS算法采樣結(jié)果可視化如圖3所示。

圖3 采樣結(jié)果可視化
在采樣點(diǎn)數(shù)目相同的情況下,C-FPS在零件面要素交界處獲得更密集的采樣點(diǎn),網(wǎng)絡(luò)可以在交界處獲得更多表面特征信息,使得零件點(diǎn)云整體面分割精度提高。根據(jù)不同的分割場(chǎng)景,合理的設(shè)置α、γ和β值,可以讓網(wǎng)絡(luò)在面要素交界處分割精度提高。
獲取采樣點(diǎn)后,本研究以采樣點(diǎn)為中心,將周圍的K個(gè)點(diǎn)和采樣點(diǎn)作為組合,進(jìn)行特征提取,特征融合過程如圖4所示。

圖4 近鄰點(diǎn)特征融合示意圖
PointNet++中,以采樣點(diǎn)為中心建立球形坐標(biāo),再使用KNN算法獲得K個(gè)近鄰點(diǎn)作為組。
KNN組合和SIFT組合如圖5所示。

圖5 KNN組合和SIFT組合
圖5中,KNN選擇的近鄰點(diǎn)會(huì)全部來自一個(gè)方向,而SIFT組合方式能在各個(gè)方向都有近鄰點(diǎn),從而提升網(wǎng)絡(luò)的魯棒性和網(wǎng)絡(luò)的表征能力。SIFT組合以采樣點(diǎn)為中心利用x,y,z坐標(biāo)平面把空間均分為8個(gè)小空間,分別在每個(gè)小空間中選擇近鄰點(diǎn)。
近鄰點(diǎn)通過卷積算子,將特征融入采樣點(diǎn)中,本文結(jié)合文獻(xiàn)[11]提出了空間轉(zhuǎn)換不變性的方法,在點(diǎn)云進(jìn)行卷積之前,使用X矩陣對(duì)特征進(jìn)行變換,能一定程度上解決點(diǎn)云的無序性和不規(guī)則性的問題。其中,矩陣ω由可學(xué)習(xí)參數(shù)組成,能根據(jù)不同的輸入點(diǎn)云P輸出對(duì)應(yīng)變換矩陣X,再把輸入點(diǎn)云P與變換矩陣X做乘積,實(shí)現(xiàn)點(diǎn)云特征的空間變換,使得變換后的特征具有空間轉(zhuǎn)換不變性。
本文結(jié)合PointSIFT和PointCNN提出能編碼不同方向的特征和具有空間轉(zhuǎn)換不變性的SIFT-X-Conv算子,該算子可表示為:
vx=g(Conv(Wx,Xx*v))
(1)
vxy=g(Conv(Wy,Xy*Vx))
(2)
vxyz=g(Conv(Wz,Xz*Vxy))
(3)
式中:v—輸出特征,vx∈R1×2×2×d,vxy∈R1×2×1×d,vxyz∈R1×1×2×d;W—卷積核,Wx∈R1×1×2×d,Wy∈R1×1×2×d,WZ∈R1×1×2×d;g(·)—激活函數(shù);X—空間變換矩陣。

(4)

本研究分層地使用SIFT-X-Conv和SIFT-X-DConv實(shí)現(xiàn)特征提取和特征傳遞,Point-SIFT-X整體框架如圖6所示。

圖6 Point-SIFT-X框架N—點(diǎn)云點(diǎn)數(shù)目;d—位置信息如(x,y,z);c—特征維度;FC—全連接層
在Point-SIFT-X框架中,C-FPS算法只在第一個(gè)下采樣層時(shí)使用,而其他層則使用FPS算法進(jìn)行采樣。因?yàn)樵诘诙蜗虏蓸訒r(shí),點(diǎn)云的數(shù)目較稀疏,其高斯曲率分布已無法反應(yīng)出真實(shí)零件點(diǎn)云曲率分布。
本文實(shí)驗(yàn)數(shù)據(jù)集包括8種類型的機(jī)械零件,同一種類型零件中包含不同系列,即同種類型零件形狀和尺寸有差異。這8種零件需要分割的面要素?cái)?shù)目為:11、11、19、16、19、12、12、13。這些零件先用三維軟件進(jìn)行建模,再使用Rhino二次開發(fā)插件對(duì)三維模型進(jìn)行點(diǎn)云獲取,即:
(5)

每種零件有450-800份點(diǎn)云數(shù)據(jù),按3∶0.5∶0.5的比列制作成訓(xùn)練集、驗(yàn)證集和測(cè)試集。利用式(5)可以近似均勻地獲取零件點(diǎn)云。實(shí)驗(yàn)過程中,對(duì)每個(gè)點(diǎn)添加N(0,0.5)的高斯噪聲,對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行數(shù)據(jù)增強(qiáng)操作,如隨機(jī)丟棄一些點(diǎn),對(duì)模型進(jìn)行旋轉(zhuǎn)變換、尺寸變換等。
本文使用點(diǎn)云分割的常用評(píng)價(jià)指標(biāo)mIoU和精度。IoU能反映出每種類型點(diǎn)云分割精度,其計(jì)算公式為:
(6)
式中:Gt—某類標(biāo)簽點(diǎn)云;Pre—實(shí)際預(yù)測(cè)中屬于該類的點(diǎn)云;∩—并運(yùn)算;∪—與運(yùn)算。
mIoU則是IoU均值。精度是正確分割的點(diǎn)云數(shù)和總點(diǎn)云數(shù)的比值。
單個(gè)零件點(diǎn)云的基本面分割結(jié)果如表1所示(評(píng)價(jià)指標(biāo)為mIoU/(%))。

表1 零件分割實(shí)驗(yàn)結(jié)果
由PointCNN(C-FPS)、PointSIFT(C-FPS)、PointNet++(C-FPS)模型分割結(jié)果顯示,單獨(dú)使用C-FPS改進(jìn)原有的網(wǎng)絡(luò)比原來獲得更高的mIoU值(平均提高約1.3%),說明C-FPS算法在零件面要素之間獲取更多采樣點(diǎn),能提高后續(xù)網(wǎng)絡(luò)分割精度。Point-SIFT-X則體現(xiàn)了SIFT-X-Conv算子加入了方向編碼和特征空間轉(zhuǎn)換矩陣后,點(diǎn)云表征能力比前面的模型要好,使得點(diǎn)云分割mIoU值比其他模型高。
單零件面分割實(shí)驗(yàn)Point-SIFT-X層參數(shù)如表2所示。

表2 Point-SIFT-X單零件分割實(shí)驗(yàn)層參數(shù)
K—采樣點(diǎn)組合的近鄰點(diǎn)個(gè)數(shù);D—膨脹率;P—采樣點(diǎn)數(shù)目
表2中,膨脹率是為了讓采樣點(diǎn)融合的特征感受野更廣,即從K*D個(gè)近鄰點(diǎn)中,每個(gè)方向隨機(jī)取出K*D/8個(gè)點(diǎn)進(jìn)行組合。實(shí)驗(yàn)中,使用Adam優(yōu)化器,每層都使用BN(Batch Normalization)正則化,全連接層(FC)使用DropOut為0.5防止過擬合。
場(chǎng)景分割是在場(chǎng)景中,把零件的幾何面要素分割出來。將上述8種零件放在場(chǎng)景中,每個(gè)場(chǎng)景有1~3個(gè)零件不等。
場(chǎng)景分割結(jié)果如表3所示。

表3 零件場(chǎng)景分割精度和mIoU
由表3可以看出:C-FPS算法能讓現(xiàn)有的模型分割效果提高,mIoU提高1.2以上,而Point-SIFT-X框架則比現(xiàn)有的框架在精度和mIoU都有較大的提高,說明了SIFT-X-Conv算子在無序和不規(guī)則的點(diǎn)云中,可以有效提取點(diǎn)云特征。
本文基于深度學(xué)習(xí)點(diǎn)云分割框架,對(duì)C-FPS算法和Point-SIFT-X分割框架進(jìn)行了研究;相關(guān)的實(shí)驗(yàn)結(jié)果表明,C-FPS算法讓網(wǎng)絡(luò)獲得更多幾何面交界處的采樣點(diǎn),能提高網(wǎng)絡(luò)的分割精度;Point-SIFT-X框架取得比現(xiàn)有的框架更好的分割精度,顯示其能更有效地提取點(diǎn)云特征,有利于機(jī)器人感知系統(tǒng)精確地識(shí)別和快速匹配目標(biāo)。
在實(shí)驗(yàn)中發(fā)現(xiàn),Point-SIFT-X框架需要手動(dòng)調(diào)整網(wǎng)絡(luò)超參數(shù)以獲得較好的分割結(jié)果,這需要很大訓(xùn)練時(shí)間和計(jì)算成本。如何讓網(wǎng)絡(luò)自適應(yīng)選擇超參數(shù),是筆者今后研究的重點(diǎn)。