陳境煥,李海艷,林景亮
(廣東工業(yè)大學(xué) 機電工程學(xué)院,廣州 廣東 510006)
隨著機器人行業(yè)發(fā)展和進步,對機器人控制精度要求越來越高[1],而機器人準(zhǔn)確地感知環(huán)境是機器人高精度控制的前提。如機器人抓取零件前,需要感知到零件,定位待抓取部位,再進行抓取路徑規(guī)劃。機器人感知系統(tǒng)一般通過對圖像或點云處理來獲得視覺信息。隨著激光雷達(LiDAR)的廣泛使用和點云相對于圖像攜帶更多深度、位姿和表面特征等信息,點云成為機器人系統(tǒng)的重要感知數(shù)據(jù)源。從幾何面級來說,零件點云可以分解成不同的平面和曲面等要素。對零件點云進行面要素分割,可使機器人系統(tǒng)快速且高精度地定位抓取部位。
傳統(tǒng)點云分割算法一般使用圖形聚類,以獲取法向信息、平滑度和邊界等信息[2],對點云進行分割,這些分割算法適用性不高,且需要較多的人機交互。近年來,隨著CNN在圖像領(lǐng)域的識別和分割取得了顯著成效[3],越來越多學(xué)者使用深度學(xué)習(xí)的方法對點云進行分類和分割。因點云具有無序性、不規(guī)則性和稀疏性,這使得常規(guī)的CNN無法有效地提取點云特征。WU Zhi-rong等人[4]將輸入的3D數(shù)據(jù)表示轉(zhuǎn)換為了3D體素網(wǎng)格,在體素網(wǎng)格上應(yīng)用了3D卷積神經(jīng)網(wǎng)絡(luò),但是該方法計算量大、處理速度慢;SU H等人[5]提出了將三維場景通過不同角度投影轉(zhuǎn)化為多個視角二維圖像,結(jié)合三維數(shù)據(jù)和二維圖像來進行了特征提取;由于需要將多個角度的三維信息轉(zhuǎn)換成圖像,限制了其應(yīng)用場景,且其處理過程緩慢。
為了解決點云無序性帶來的特征提取問題,斯坦福的QI R C[6]首次提出了用PointNet框架直接對點云進行特征提取。PointNet將點云的每個點使用多層感知器(MLP)進行了升維,然后使用最大池化來獲取點云的特征向量,其在分類和分割任務(wù)上都取得了比較好的結(jié)果。由于PointNet的最大池化得到的是整個點云的特征向量,使得其難以捕捉點云的局部信息。QI R C[7]對PointNet進行了改進,提出了PointNet++框架,兼顧了局部特征和全局特征,提高了點云分割的精度和魯棒性,成了深度學(xué)習(xí)點云分割框架的主流方法?;赑ointNet++的框架,PointSIFT[8]在點云特征提取過程中加入了方向意識,提高了網(wǎng)絡(luò)的表征能力。而PointCNN[9]則通過學(xué)習(xí)X變換矩陣,提高了網(wǎng)絡(luò)在無序和不規(guī)則點云中的表征能力。由于位于零件面要素交界處的點云本身難以被區(qū)分,而基于PointNet++的分割網(wǎng)絡(luò)缺乏針對性地提取面要素交界處的特征信息,使得這些點容易被分類錯誤。讓網(wǎng)絡(luò)有針對性地提取面要素交界處的特性,同時提高網(wǎng)絡(luò)在無序和不規(guī)則點云中的特征提取能力,是實現(xiàn)零件點云面要素分割的關(guān)鍵。
為了提高零件點云面要素分割精度,本研究基于點云分割網(wǎng)絡(luò),對Point-SIFT-X網(wǎng)絡(luò)框架和基于曲率的最遠點采樣算法(C-FPS)進行研究。
基于PointNet++框架的點云特征提取和特征傳遞如圖1所示。
圖1 點云特征提取和特征傳遞
該分割框架先用最遠點采樣算法(FPS)獲得采樣點,以每個采樣點為中心,獲得K個近鄰點,再將中心點和K個近鄰點作為組合進行特征提取。經(jīng)過特征提取層后,點云的數(shù)目變少但是每個點攜帶高維的特征信息。這種利用卷積處理后,點云數(shù)目變少的過程又稱下采樣。特征傳遞過程中,點云的特征由上一層M個空間近鄰點進行特征插值獲得特征向量。在PointNet++中,插值權(quán)重w根據(jù)點云的空間距離決定。最后利用每個點的特征向量去決定該點所屬的標(biāo)簽類別,實現(xiàn)分割任務(wù)。
但是該框架在物體部件的交界處會出現(xiàn)分割效果不佳的情況,PointNet++型網(wǎng)絡(luò)分割結(jié)果如圖2所示。
圖2 PointNet++型網(wǎng)絡(luò)分割結(jié)果
PointNet++使用最遠點采樣算法近似于均勻地獲取采樣點,而采樣點決定了神經(jīng)網(wǎng)絡(luò)特征提取的位置,進而決定特征傳遞過程和分割精度。讓點云分割框架在面要素交界處獲得更多采樣點,使得神經(jīng)網(wǎng)絡(luò)提取更多交界處特征,是C-FPS算法的出發(fā)點。此外,Point-SIFT-X分割框架在特征提取前對組合的點云進行X矩陣變換,使點云具有空間轉(zhuǎn)換不變性,再分別對點云進行不同方向的特征提取,增強網(wǎng)絡(luò)對點云的表征能力。
根據(jù)文獻[10],零件點云的高斯曲率分布和面要素交界處相關(guān),零件點云的幾何面交界處,一般高斯曲率較大。C-FPS算法在點云高斯曲率大的位置獲得更多采樣點,其他位置獲得較少采樣點。在不影響其他位置點云分割精度的前提下,網(wǎng)絡(luò)能提取更多面要素交界處的特征信息,為后續(xù)點云標(biāo)簽預(yù)測提供依據(jù),從而提高了點云的分割精度。算法具體流程如下:
步驟1:輸入點云P,初始化每個點的選擇標(biāo)志F=(f0,f1,…,fn)為0,fi為-1表示該點不可作為采樣點,而fi為1則表示該點已被作為采樣點,α是曲率采樣點個數(shù)上限,β是總采樣點個數(shù)。計算P的高斯曲率并從大到小排序得到Cur,構(gòu)造P的K-D樹Tp;
C-FPS和FPS算法采樣結(jié)果可視化如圖3所示。
圖3 采樣結(jié)果可視化
在采樣點數(shù)目相同的情況下,C-FPS在零件面要素交界處獲得更密集的采樣點,網(wǎng)絡(luò)可以在交界處獲得更多表面特征信息,使得零件點云整體面分割精度提高。根據(jù)不同的分割場景,合理的設(shè)置α、γ和β值,可以讓網(wǎng)絡(luò)在面要素交界處分割精度提高。
獲取采樣點后,本研究以采樣點為中心,將周圍的K個點和采樣點作為組合,進行特征提取,特征融合過程如圖4所示。
圖4 近鄰點特征融合示意圖
PointNet++中,以采樣點為中心建立球形坐標(biāo),再使用KNN算法獲得K個近鄰點作為組。
KNN組合和SIFT組合如圖5所示。
圖5 KNN組合和SIFT組合
圖5中,KNN選擇的近鄰點會全部來自一個方向,而SIFT組合方式能在各個方向都有近鄰點,從而提升網(wǎng)絡(luò)的魯棒性和網(wǎng)絡(luò)的表征能力。SIFT組合以采樣點為中心利用x,y,z坐標(biāo)平面把空間均分為8個小空間,分別在每個小空間中選擇近鄰點。
近鄰點通過卷積算子,將特征融入采樣點中,本文結(jié)合文獻[11]提出了空間轉(zhuǎn)換不變性的方法,在點云進行卷積之前,使用X矩陣對特征進行變換,能一定程度上解決點云的無序性和不規(guī)則性的問題。其中,矩陣ω由可學(xué)習(xí)參數(shù)組成,能根據(jù)不同的輸入點云P輸出對應(yīng)變換矩陣X,再把輸入點云P與變換矩陣X做乘積,實現(xià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實現(xiàn)特征提取和特征傳遞,Point-SIFT-X整體框架如圖6所示。
圖6 Point-SIFT-X框架N—點云點數(shù)目;d—位置信息如(x,y,z);c—特征維度;FC—全連接層
在Point-SIFT-X框架中,C-FPS算法只在第一個下采樣層時使用,而其他層則使用FPS算法進行采樣。因為在第二次下采樣時,點云的數(shù)目較稀疏,其高斯曲率分布已無法反應(yīng)出真實零件點云曲率分布。
本文實驗數(shù)據(jù)集包括8種類型的機械零件,同一種類型零件中包含不同系列,即同種類型零件形狀和尺寸有差異。這8種零件需要分割的面要素數(shù)目為:11、11、19、16、19、12、12、13。這些零件先用三維軟件進行建模,再使用Rhino二次開發(fā)插件對三維模型進行點云獲取,即:
(5)
每種零件有450-800份點云數(shù)據(jù),按3∶0.5∶0.5的比列制作成訓(xùn)練集、驗證集和測試集。利用式(5)可以近似均勻地獲取零件點云。實驗過程中,對每個點添加N(0,0.5)的高斯噪聲,對實驗數(shù)據(jù)進行數(shù)據(jù)增強操作,如隨機丟棄一些點,對模型進行旋轉(zhuǎn)變換、尺寸變換等。
本文使用點云分割的常用評價指標(biāo)mIoU和精度。IoU能反映出每種類型點云分割精度,其計算公式為:
(6)
式中:Gt—某類標(biāo)簽點云;Pre—實際預(yù)測中屬于該類的點云;∩—并運算;∪—與運算。
mIoU則是IoU均值。精度是正確分割的點云數(shù)和總點云數(shù)的比值。
單個零件點云的基本面分割結(jié)果如表1所示(評價指標(biāo)為mIoU/(%))。
表1 零件分割實驗結(jié)果
由PointCNN(C-FPS)、PointSIFT(C-FPS)、PointNet++(C-FPS)模型分割結(jié)果顯示,單獨使用C-FPS改進原有的網(wǎng)絡(luò)比原來獲得更高的mIoU值(平均提高約1.3%),說明C-FPS算法在零件面要素之間獲取更多采樣點,能提高后續(xù)網(wǎng)絡(luò)分割精度。Point-SIFT-X則體現(xiàn)了SIFT-X-Conv算子加入了方向編碼和特征空間轉(zhuǎn)換矩陣后,點云表征能力比前面的模型要好,使得點云分割mIoU值比其他模型高。
單零件面分割實驗Point-SIFT-X層參數(shù)如表2所示。
表2 Point-SIFT-X單零件分割實驗層參數(shù)
K—采樣點組合的近鄰點個數(shù);D—膨脹率;P—采樣點數(shù)目
表2中,膨脹率是為了讓采樣點融合的特征感受野更廣,即從K*D個近鄰點中,每個方向隨機取出K*D/8個點進行組合。實驗中,使用Adam優(yōu)化器,每層都使用BN(Batch Normalization)正則化,全連接層(FC)使用DropOut為0.5防止過擬合。
場景分割是在場景中,把零件的幾何面要素分割出來。將上述8種零件放在場景中,每個場景有1~3個零件不等。
場景分割結(jié)果如表3所示。
表3 零件場景分割精度和mIoU
由表3可以看出:C-FPS算法能讓現(xiàn)有的模型分割效果提高,mIoU提高1.2以上,而Point-SIFT-X框架則比現(xiàn)有的框架在精度和mIoU都有較大的提高,說明了SIFT-X-Conv算子在無序和不規(guī)則的點云中,可以有效提取點云特征。
本文基于深度學(xué)習(xí)點云分割框架,對C-FPS算法和Point-SIFT-X分割框架進行了研究;相關(guān)的實驗結(jié)果表明,C-FPS算法讓網(wǎng)絡(luò)獲得更多幾何面交界處的采樣點,能提高網(wǎng)絡(luò)的分割精度;Point-SIFT-X框架取得比現(xiàn)有的框架更好的分割精度,顯示其能更有效地提取點云特征,有利于機器人感知系統(tǒng)精確地識別和快速匹配目標(biāo)。
在實驗中發(fā)現(xiàn),Point-SIFT-X框架需要手動調(diào)整網(wǎng)絡(luò)超參數(shù)以獲得較好的分割結(jié)果,這需要很大訓(xùn)練時間和計算成本。如何讓網(wǎng)絡(luò)自適應(yīng)選擇超參數(shù),是筆者今后研究的重點。