姚 鉞 任明武
(南京理工大學計算機科學與工程學院 南京 210094)
隨著3D傳感器的普及,以及自動駕駛等領域的高速發(fā)展,如何有效地使用3D點云數(shù)據正逐漸成為一個研究熱點。
傳統(tǒng)的點云特征提取方法包括聚類[3~4]、密度[5~6]、曲率[7]、法向量[8]等通過特征算法得到的構造特征。這些方法能夠提取點云的低緯度特征,但是直接使用這些特征不足以支持需要更高層次理解信息的任務,例如目標分類、語義分割等。因此,受深度學習技術在圖像領域內的成果影響,許多研究者希望同樣地將其應用到點云研究領域。
在二維圖像領域內,目前已經有大量成熟的深度網絡架構與技術手段。研究者們對于如何利用圖像的特點以及其表達方式積累了許多經驗。與之相對應的,雷達點云作為近年來逐漸興起的一種數(shù)據表達方式,在這方面的研究還相對匱乏[9~10]。
雷達點云的典型特征是空間分布的不均勻性以及其無序性。不均勻分布是指在有物體遮擋處點云密度大,空曠區(qū)域則點云密度小。無序性是指點與點之間獨立,不存在某種通用的排序規(guī)則。
而典型的卷積神經網絡往往依賴于有組織的數(shù)據結構輸入,例如多維矩陣。因此一個很直接的想法是將點云轉換成某種有規(guī)律的表達方式。例如將雷達點云轉換成三維體素網格然后進行處理[11~12,15],又或者將雷達點云投影到不同視圖上,再使用圖像的方法進行處理[13~15]。
可以發(fā)現(xiàn),體素網格的模式想要取得更好的效果,則必須提高網格分別率,因而造成網絡規(guī)模進一步膨脹。而點云投影的方式,雖然沒有這個問題,但是是以損失點云的空間三維信息為代價的,進而影響后續(xù)特征提取的效果。
基于這些因素,一種名為PointNet[1]的深度網絡架構被研究者提出。該網絡主要的創(chuàng)新點是能夠直接從原始點云學習特征,而不需要做額外的數(shù)據轉換。但PointNet只考慮到了點云的全局特征。因此,作者進一步提出了PointNet++[2],在其中加入了對點云的局部特征的提取,進一步提高了網絡的性能。
本文首先簡要介紹PointNet與PointNet++的基本架構,接著提出本文基于PointNet++改進后的網絡架構。在本文的網絡架構中,我們在PointNet++的每個stage中間構建與自頂向下網絡的橫向連接,在ModelNet40數(shù)據集上測試顯示,本文提出的改進版本的PointNet++特征提取能力有所加強,分類準確率有所提升。
PointNet是一種能夠直接使用無序原始點云數(shù)據的深度神經網絡,不需要對點云進行體素化或者投影的預處理,增加網絡適用性的同時也保持了優(yōu)秀的特征提取能力。
其主體分類網絡結構如圖1所示。其中輸入點數(shù)為n,經歷兩次轉換-卷積過程后再通過max pooling提取出全局特征,最后將特征送入全連接層(Fully Connected Layer)輸出分類結果。
圖1 PointNet網絡結構
該網絡的核心層為max pooling層,在這一層提取出了整體點云的全局特征。通過max pooling一定程度上減弱小的擾動及平移旋轉變換帶來的影響。
整個網絡可以近似地看做是一個定義在點集上的通用函數(shù),通過對點集中的變化元素應用一個對稱函數(shù)來近似地定義一個在點集上的對稱函數(shù):
其中x1,x2,…,xn代表點云,函數(shù)h在這里可以代表多層感知機網絡,函數(shù)g代表max pooling。整個公式表示為一個點集到一個向量的映射關系。
PointNet++是基于PointNet發(fā)展而來,由上文介紹可知PointNet關注于全局特征,PointNet++則對局部特征的提取做出優(yōu)化,它是一個多層結構,每一層都提取不同尺度的特征。
其分類網絡結構如圖2所示。
圖2 PointNet++網絡結構
從圖2可以看到PointNet++分類網絡是經由兩個抽象模塊(Set Abstraction,SA)再使用PointNet提取一次特征后送入全連接層(Fully Connected Lay?er,F(xiàn)C),最終獲得分類的結果。
該網絡的核心概念為set abstraction層,這一層里包含了Sampling,Grouping還有PointNet三個操作。其內部結構如圖3所示。
圖3 Set Abstraction內部結構
假如Set Abstraction模塊的輸入為N×(d+C)矩陣,其中N代表點數(shù),d是維度(例如采用xyz坐標,則d等于3),C為特征維數(shù)。相應的輸出為矩陣,其中N'代表采樣后的點數(shù),d是維度,C'為新的特征維數(shù)。
其中Sampling通過迭代最遠點采樣的方法根據輸入的N×(d+C)矩陣得到N'×d的采樣點坐標。Grouping則依據N'×d的采樣點為中心,在每個采樣點附近小于半徑參數(shù)的局部區(qū)域選擇K個鄰居作為代表將輸入的N×(d+C)矩陣進行聚合得到N'×K×(d+C)的矩陣。最后通過一個Point?Net提取采樣區(qū)域內的局部特征并將結果轉換為N'×(d+C')的結構作為下一層Set-Abstraction的輸入。
經過數(shù)個Set Abstraction層提取特征后,最后通過全連接網絡整合來獲取對點云的分類結果。
如果我們將PointNet++網絡中,原始點云經過多層Set Abstraction抽象提取特征的過程視為自底向上的,那么從最頂層重新回到原始點云的路徑則可以視為自頂向下的。
本文所提出的方法在PointNet++主干分支旁構建一個自頂向下網絡,綜合利用各層特征,進一步加強網絡特征提取能力。
本文在原始PointNet++使用兩個SA層的基礎上多加了一個SA層。同時最后的輸出不再直接進入全連接層分類,而是將每一層輸出的中間特征與新構造的自頂向下的網絡相連接,在新構造的自頂向下網絡分支中將每層的特征處理并一起輸入到最后的分類網絡中。
其整體架構如圖4所示。
圖4 本文改進的網絡結構
其中Merge Unit單元主要負責上層特征與當前層特征的合并,并將處理后的結構輸出到后續(xù)單元,其結構如圖5所示。
圖5 Merge Unit內部結構
可以看到上層輸入的特征首先經過上采樣轉化,轉化結果再與當前層相加。新的特征有兩條路徑:一是繼續(xù)往下,作為下層Merge Unit的輸入;二是經過一個Mini-PointNet處理后進入最后一步。
通過自頂向下的操作可以使得下層特征得到更加豐富的語義信息。這是通過上采樣將上層特征傳遞到下層實現(xiàn)的。
不同于圖像中矩陣中的相鄰元素即為空間上的相鄰像素,可以較方便地進行上采樣從而得到分辨率更高的特征圖譜,點云由于其無序性,在矩陣中位置的鄰近并不代表兩點空間上的相近,因此我們需要利用SA層抽象提取特征時,中間Sampling得到的采樣點坐標。根據兩層采樣點間的坐標關系來得到上采樣中對應的特征圖譜計算公式。經過研究后,得到上采樣特征圖譜計算公式如下:
其中xi表示下層點云中的某一個點的坐標位置,則表示經過上采樣后該點的特征向量,它是通過計算距離xi最近的K個上層點的特征向量乘以一個基于兩點間距離的權重函數(shù)p求和得到的。
將從當前SA層的輸出經過一個卷積層連到對應的自頂向下網絡分支中的連接稱為橫向連接。
通過Upsampling得到了更密集且富含上層語義信息的點云,但是在不斷地上采樣過程中,其實也是在不斷損失底層的信息。因此通過lateral link作為一個補充,加入中間層的特征。注意到在橫向連接中,我們使用一個1×1的卷積來對每一層的特征進行處理。這樣處理能夠統(tǒng)一各層的channels個數(shù),方便我們后續(xù)進行統(tǒng)一處理。
為了驗證本文提出的改進架構的合理性與有效性,使用一個簡單的利用各層特征的網絡架構作為我們測試的Baseline。它直接地將各層特征一起送入最后的分類網絡而不做額外的處理,其結構如圖6。
圖6 Baseline網絡結構
我們知道PointNet++中低層特征中蘊含的語義信息相對較少,但點更密集且貼近原始點云。而上層特征點相對較少,語義信息豐富,表達更抽象。本文改進的架構則能夠同時利用低層與高層特征的優(yōu)點,加強網絡特征提取能力。
通過自頂向下的網絡分支與橫向連接的使用,使得低層特征也能得到高層語義信息的支持,同時保持更加密集的點云數(shù)量,加強各層特征之間的聯(lián)系。
為了驗證本文所提出方法的效果,本文采用ModelNet40數(shù)據集對所提出方法進行檢驗,并與原PointNet++以及Baseline基準網絡進行各方面效果對比。
實驗中使用Tensorflow 1.12.0框架,通過一塊Titan V顯卡進行訓練與測試。我們在網絡與原PointNet++主干SA層重合部分使用完全一致的參數(shù),避免因實現(xiàn)過程中參數(shù)設置不同導致的結果差異,后續(xù)全連接層也使用相同的結構與設置。多次試驗后結果取平均值。
通過測試集從分類準確率方面對算法進行評估,表1顯示出我們改進的網絡架構相比于與PointNet++原網絡提升了約0.7%的準確率,考慮到原網絡準確率已相當不錯,提升0.7%是非??捎^的。
表1 準確率測試
同時我們也發(fā)現(xiàn)如Baseline網絡這樣,簡單地將各層特征提取出來合并使用得到的結果與原網絡并無較大差異。我們認為這正是因為缺少自頂向下的過程,使得各層特征之間聯(lián)系不夠緊密。這樣直接使用的低層特征能夠得到的信息已經基本被包含在上層特征之中,所以網絡性能沒有實質上的提升。進一步說明了本文改進的網絡結構的有效性。
從圖7中可以看到,代表Baseline的線與代表PointNet++的線基本重合,而代表我們改進網絡的線在accuracy曲線中上升更快,在loss曲線中下降地更快。這說明我們改進后的網絡架構擁有更強的學習能力,能夠在較少的epoch中學習到足夠的特征。但另一方面,這也提醒我們需要預防過擬合存在的情況。
圖7 Training Acc&Loss曲線
本文提出了一種基于PointNet++改進的點云特征提取與分類網絡,主要是通過增加一個自頂向下的網絡分支與原網絡架構逐層相連。使得網絡的最終輸出能夠更進一步地整合抓取從局部到全局的特征。基于ModelNet40數(shù)據集驗證了框架的有效性。在ModelNet40分類任務中,較原網絡架構分類準確率有所提升。根據loss統(tǒng)計曲線顯示,該網絡能做相對較少的epoch中學到足夠的特征。
現(xiàn)在提出以下幾點展望:
1)框架模型是否可以更進一步的深化。圖像的網絡已經可以達到非常深的程度,而點云與圖像存在極大的差異,并不能生搬硬套。這需要我們對網絡進行深入的研究,確認增加網絡深度是否有正面效果。
2)在圖像領域內有許多經過驗證的優(yōu)化思路還沒有應用到點云領域,例如迭代回歸、難樣例挖掘、上下文建模、數(shù)據增強等。這是一個非常值得嘗試的方向。點云與圖像的不同特性,使得我們在做類似的嘗試時一定要注意是否適配以及實現(xiàn)上的差異,本文中的Upsampling就是一個例子。
3)實驗上使用ModelNet40數(shù)據集進行驗證??梢試L試采取更多不同來源的數(shù)據集做測試,更好地驗證框架的泛化能力。
在后面的工作中,我們將針對這些問題進行改進。