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

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

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




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

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

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

圖5 KNN組合和SIFT組合
圖5中,KNN選擇的近鄰點會全部來自一個方向,而SIFT組合方式能在各個方向都有近鄰點,從而提升網絡的魯棒性和網絡的表征能力。SIFT組合以采樣點為中心利用x,y,z坐標平面把空間均分為8個小空間,分別在每個小空間中選擇近鄰點。
近鄰點通過卷積算子,將特征融入采樣點中,本文結合文獻[11]提出了空間轉換不變性的方法,在點云進行卷積之前,使用X矩陣對特征進行變換,能一定程度上解決點云的無序性和不規則性的問題。其中,矩陣ω由可學習參數組成,能根據不同的輸入點云P輸出對應變換矩陣X,再把輸入點云P與變換矩陣X做乘積,實現點云特征的空間變換,使得變換后的特征具有空間轉換不變性。
本文結合PointSIFT和PointCNN提出能編碼不同方向的特征和具有空間轉換不變性的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(·)—激活函數;X—空間變換矩陣。

(4)

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

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

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

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

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

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