梁振斌,熊風光,韓 燮,陶 謙
(中北大學 計算機科學與技術學院,山西 太原 030051)
點云匹配在計算圖形學和視覺具有重要的意義,例如,在三維目標姿態估計[1]、三維重建[2,3]、目標檢測[4]等方面。但由于采集的三維數據可能存在噪聲、有遮擋、不完整,目前存在的一些點云匹配方法,使用的描述子大多是基于從靜態幾何特性的直方圖得到,這些方法在對這種數據集進行點云匹配時,準確性比較低。因此,針對這類數據集,如何使點云匹配的準確性更高、計算運行時間更短,已成為重要的研究熱點。
但傳統的點云匹配方法一般都是人為定義的一個描述子,因此可能會存在有一定的誤差。與此同時,深度學習近年來大火,并取得了一系列的成功,可以利用深度學習來進行分類[5],也有人利用深度學習進行圖像處理[6],對于如今的點云匹配,有人利用紋理和曲率特征進行匹配[7],也有人對激光掃描和圖像匹配生成的點云進行匹配[8],或者對點云進行分割和三維建模[9],或者將匹配運用到了手術之中[10],或者利用三維重建來獲取描述子[11]。雖然,如今的點云匹配技術有很多優點,但仍存在很多不足,本文在現有的點云匹配方法基礎上,針對現今存在的問題,利用深度神經網絡訓練得出一種有高精度和高準確性的描述子,來解決點云匹配過程中存在的問題:在低分辨率、噪聲和部分三維數據中,匹配局部幾何特征仍然是一個具有挑戰性的任務,雖然可以用大量低級手工幾何特征描述子來解決該任務,這些描述子大多基于靜態幾何特性的直方圖得到[12]。它們適用于具有完整曲面的三維模型,但在三維掃描數據的實際局部曲面中往往不穩定或不一致,難以適應新的數據集。因此,使用這些描述子來進行幾何匹配的現有三維重構方法需要大量的算法來處理異常值,并需要建立全局對應關系。為了應對這些困難,受到最近神經網絡成功的啟發,擬通過神經網絡訓練得出能解決這些問題的描述子,優化點云匹配。
點云匹配一般是基于兩片點云的對應關鍵點來進行匹配,因此需要先找到兩片點云的對應關鍵點,由于人工設計關鍵點匹配比較費時費力,并且精度不夠高,所以本文采用深度學習的方法,通過訓練生成3D描述子,然后通過生成的3D描述子獲取匹配的關鍵點來進行點云匹配,因此需要先獲取深度學習訓練所需要的數據集,具體步驟如下:
首先,將RGB-D圖片重建為三維點云,從重建中隨機采樣獲取關鍵點p1,先隨機選擇一張圖片上的一個像素,這樣就有了關鍵點p1的兩個坐標,再從深度圖中讀出它的深度,作為第三個坐標,就得到相機坐標系中p1的3個坐標,然后結合相機參數與幀參數將3個坐標對應到世界坐標系下的x,y,z坐標,將該點與周圍的鄰域記為p1。然后獲取p1在其它幀中的對應點p2,將關鍵點p1在重建中的3D位置映射到其位于攝像機視錐體內且未被遮擋的所有的RGB-D幀中,直接得出關鍵點在另一幀中的位置,提取該點與其鄰域記為p2,將p1與p2用作匹配對。最后獲取p1在其它幀中的最不對應點p3,從其它幀中隨機獲取距離p1對應點至少間隔0.1米的點,記為p3,將p1與p3用作不匹配對。
但由于點云是無序的、無規則的,而深度學習神經網絡訓練的數據需要是規則的、有序的數據,因此要先將點云進行體素化:將每個3D塊從它的原始表示轉換為截斷距離函數(TDF)值的體積為30×30×30的體素網格。每個體素的TDF值表示該體素的中心與最近的3D表面之間的距離。這些TDF值被截斷、歸一化,然后翻轉到1(在表面上)和0(遠離表面)之間。TDF的靈感來源于TSDF,而TSDF來源于SDF。公式如式(1)和(2)所示
sdfi(x)=depthipic(x)-cami(x)
(1)
(2)
其中,pic(x)是體素中心x在深度圖像上的投影,因此depthi(pic(x))是攝像機與觀察光線交叉x上最近的物體表面點p之間的測量深度,因此cami(x)是體素和相機之間沿光軸的距離。因此sdfi(x)也是沿光軸的距離。sdfi(x)的階段變體由tsdfi(x)表示,SDF被截斷為±t,這是有益的,因為大的距離值與表面重建無關,并且可以利用值范圍的限制來占用內存。TDF表示與TSDF相比具有若干優點,TSDF除了表面(接近0的值)和自由空間(接近1的值)之外還編碼被遮擋的空間(值接近-1)。通過刪除符號,TDF失去了自由空間和被遮擋空間之間的區別,但在部分數據上獲得了一個對描述子的魯棒性至關重要的新屬性:體素值之間的最大梯度集中在表面周圍,而不是自由空間和遮擋空間之間的陰影邊界。此外,TDF表示減少了確定攝像機視圖不可用的3D數據上的遮擋空間是什么的模糊性。因此,將這種TDF體素網格作為深度學習訓練的數據集。
從1.1節可以得到深度學習訓練所需的數據集,在本節將使用該數據集訓練得出3D描述子,來對關鍵點進行描述,具體步驟如下:
首先,進行訓練時需要用到深度學習的框架,經過對比最近流行的框架,結合本文的需求,本文最終使用了Marvin深度學習框架,Marvin是普林斯頓大學視覺工作組新推出的C++框架,它只支持GPU下運行使用,它的優點是使用簡單、內存消耗小,并且運算速度快。具體過程為:將一個關鍵點的30×30×30的TDF體素網格,以及它的對應點和非對應點的TDF體素網格同時輸入到網絡中進行訓練,有3個輸入是因為這里用到了一種網絡模型Sia-mese network(孿生神經網絡)[13],如圖1所示。

圖1 孿生神經網絡結構
其中,X1和X2是匹配對,X1和X′2是非匹配對,W是模型參數,GW是將輸入的數據轉換成特征向量,EW是來衡量兩個轉換成的向量之間的距離。它的原理是:一個網絡輸入兩片點云中的兩個對應點的TDF體素網格,通過訓練讓它們的輸出越來越像,而另一個網絡則輸入兩個非對應點的TDF體素網格,通過訓練讓它們的輸出差距越來越大。最后輸出的描述子,使匹配對的描述子的損失變小,使非匹配對的損失變大,從而得出網絡的權重。
在訓練過程中,為了優化產生的描述子,使用了Contrastive Loss[14]來保證得出的描述子更加精確,Contrastive Loss公式如式(3)所示
(3)


圖2 損失函數
從1.2節可以獲得訓練得出的權重,將需要匹配的兩片點云選取關鍵點輸入其中,便能得出精準的關鍵點的描述子向量,使用描述子向量便能得出兩片點云中配對的關鍵點,通過配對的關鍵點來完成點云匹配。具體步驟如下:
首先,加載兩片需要匹配的3D點云A和B,隨機選取關鍵點,計算其TDF體素網格,并將其輸入到1.2節訓練好的模型中,便能分別得到關鍵點的描述子向量,通過計算得到A中所有關鍵點的描述子向量與B中所有關鍵點的描述子向量之間的L2距離,本文直接使用了K-D樹進行計算,因為它是比較優的解決方式。此時對A中的關鍵點,求出在B中L2距離與之最小的點,作為它的對應點,通過這種方式找到了對應的關鍵點,再通過RANSAC算法估計A,B兩片點云之間的剛性變換,通過變換矩陣完成點云匹配。
實驗采用與利用SHOT描述子進行關鍵點匹配、利用ICP算法進行點云匹配在匹配運行時間、旋轉平移魯棒性和點云匹配準確性方面進行對比分析。三維模型使用的是斯坦福大學的Bunny模型與普林斯頓大學的Cap模型和Chair模型。
本文所用的環境為:Ubuntu16.04,CUDA7.5,cuDNN5.1,Matlab2015b,Windows7,Visual Studio 2015+PCL 1.8,開發使用的語言為C++。
點云匹配最重要的衡量標準就是點云匹配的準確性,準確性越高,則代表匹配方法越好。首先,需要定義模型的匹配準確性標準,本文使用了Wu M使用的評價標準[15]。其中真實的旋轉矩陣為RiGT,每次計算得到的旋轉矩陣為Ri,真實的平移矩陣為tiGT,每次計算得到的平移矩陣為ti,旋轉矩陣的誤差如式(4)、式(5)所示
(4)
(5)
在式(4)中,Rid代表了Ri和RiGT之間的差異,若二者差異為0,則Rid為單位矩陣。在式(5)中,θie代表了Ri中存在的旋轉誤差量。類似的,平移矩陣誤差如式(6)所示
(6)
式中:tie代表了平移誤差量,dres代表網格的分辨率,平移向量之間的差異相對于進行歸一化,以使其與尺度無關。
本文在實驗中測試了用本文方法進行點云匹配,并記錄運行時間,然后與利用SHOT描述子進行點云匹配、ICP進行點云匹配所消耗的時間進行比較,結果見表1。

表1 不同方法點云匹配運行時間
從表1中可以看出,使用本文方法進行點云匹配在運行時間上,明顯優于SHOT描述子進行點云匹配和ICP點云匹配的方法,說明本文方法計算效率更高、運行時間更快。
在點云匹配中,最重要的便是匹配的準確性,故在實驗中對點云匹配的準確性進行了實驗并計算。本次實驗過程為:先利用本文方法對0度和45度的Bunny模型進行點云匹配,同樣使用本文方法對Cap模型和Chair模型進行匹配,匹配結果分別如圖3(a)、圖4(a)、圖5(a)所示,然后使用SHOT描述子對兩片點云進行匹配,匹配結果分別如圖3(b)、圖4(b)、圖5(b)所示,最后使用ICP算法對兩片點云進行匹配,匹配結果分別如圖3(c)、圖4(c)、圖5(c)所示。其中,紅色點云表示經過變換的源點云,藍色點云表示目標點云。

圖3 不同方法點云Bunny匹配結果

圖4 不同方法點云Cap匹配結果

圖5 不同方法點云Chair匹配結果
從圖3、圖4、圖5中可以直觀比較出,使用本文方法進行點云匹配,在重合率和準確性方面都極大優于另外兩種方法對點云進行匹配。采用2.1節的匹配關系評價標準,計算得出不同方法點云匹配的旋轉誤差與平移誤差,匹配準確性見表2。
從表2中可以看出,本文方法在匹配時在旋轉誤差方面極大的優于別的方法,在平移誤差方面略微優于別的方法,結合實驗匹配圖片與準確性表來看,本文方法很大程度上優于其它兩種方法。

表2 不同方法點云匹配準確性
本文提出了一種基于深度學習的點云匹配方法,通過卷積神經網絡深度學習訓練得出3D描述子,該描述子的權重經過大量數據集訓練得出,使用該方法進行點云匹配,更有效解決了在低分辨率、噪聲和三維數據被遮擋時匹配效果不好的問題。實驗結果表明:該匹配方法得出的描述子具有良好的魯棒性,并且利用該方法進行點云匹配時,運行時間和計算速度更快,匹配時的誤差更小,使點云匹配結果更加準確。