王勝文,張彬,孫菁聰
(中國傳媒大學 數(shù)據(jù)科學與智能媒體學院,北京 100024)
PointNet 是一個相對獨特的體系架構(gòu),它將原始點云數(shù)據(jù)直接作為輸入點集而不需要經(jīng)過任何的加工和處理,最后輸出各個輸入點的全局或者部分的分類標簽。PointNet的架構(gòu)相對來說比較容易實現(xiàn),因為在初始階段,每個點的解決方案都是相同且分別進行的。在原始的預(yù)置中,每個點只需要坐標(x,y,z)。其余的維度能夠由計算法線和其他部分或全局功能來增加。
PointNet的最主要貢獻是設(shè)計了一種適于在3D 中使用無序點集作為直接輸入的新型深度神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)并且演示了如何訓練這樣一個網(wǎng)絡(luò)來執(zhí)行3D 物體分類、部分分割和場景語義分割任務(wù)。但是目前對破損和遮擋的點云數(shù)據(jù)問題還有待研究。本文著重對PointNet進行了深入研究并對點云數(shù)據(jù)進行了攻擊和測試。測試發(fā)現(xiàn)當點云數(shù)據(jù)dropout約75.0%以后物體識別準確率顯著下降,overlap12.5%以后準確率也下降了近4個點,值得后續(xù)深入的研究和攻克。從驗證的結(jié)果來看,PointNet大大簡化了點云分類和分割的步驟和復(fù)雜度并且實現(xiàn)了不錯的識別效果。用深度神經(jīng)網(wǎng)絡(luò)解決無序集的問題是一個十分廣泛和基本的問題,希望這些想法能夠轉(zhuǎn)移應(yīng)用到越來越多的領(lǐng)域中去。
“點云”是在得到識別目標的三維坐標后形成的坐標點的集合[1]。
點云數(shù)據(jù)主要是由激光三維掃描儀進行數(shù)據(jù)采集并獲取,另外還有一些由二維影像進行三維重建,在重建的過程中得到點云數(shù)據(jù),還有一些,可以通過三維模型來計算獲取點云。其次還有一些能夠由三維模型逆向點云來獲取點云數(shù)據(jù)。之所以叫做逆向點云,就是本來三維模型通過行、列掃描的形式也可以獲取到三維點云數(shù)據(jù)[1]。
(1)三維重建。高精度的三維點云數(shù)據(jù)由算法擬合生成曲面,用于三維建模,建模速度非??欤毠?jié)更精密,與此同時,精度更高[2]。
(2)測繪。LiDAR的面市出現(xiàn)了一種新型獲取測量數(shù)據(jù)的形式,具有著高精度,獲取時間快等特點[2]。
(3)自動駕駛。LiDAR及點云數(shù)據(jù)開始逐步應(yīng)用于高等級自動駕駛范疇[2]。
(4)農(nóng)業(yè)。點云數(shù)據(jù)的分類,對農(nóng)業(yè)有著非常重要的借鑒價值[2]。
(5)規(guī)劃設(shè)計。點云數(shù)據(jù)的大規(guī)模實現(xiàn),是設(shè)計規(guī)劃的有利武器,高精度實時快速的三維場景,可以更好的直觀全面的展示人們的設(shè)計[2]。
(6)考古與文物保護。精度高的點云數(shù)據(jù)開始應(yīng)用在文物維護行業(yè)[2]。
此外點云數(shù)據(jù)還在醫(yī)療等各個領(lǐng)域有著重要且廣泛的應(yīng)用。
(1)點云具有無序性
受采集設(shè)施以及空間坐標系的影響,物體運用不同的設(shè)施掃描或者在不同的地點掃描,點云數(shù)據(jù)的次序都會大不相同,所以不容易直接經(jīng)過模型對其進行相關(guān)的處理[3]。
(2)點云具有稀疏性
在自動駕駛和機器人的場景當中,雷達激光的采樣點的覆蓋尺度相對于場景的所有尺度來說,具有非常大的稀疏性。在KITTI數(shù)據(jù)集中,如果把未經(jīng)過加工處理的雷達激光點云映射到相應(yīng)的彩色圖片上,大約只有4%的像素才能有相對應(yīng)的雷達點。因此,讓基于點云數(shù)據(jù)的語義感知成為了難題[3]。
(3)點云信息量有限
點云的數(shù)據(jù)結(jié)構(gòu)是由一些三維空間的點的坐標構(gòu)成的點集,實質(zhì)上是對世界三維幾何形態(tài)的弱分辨率的重采樣,所以只能得到比較少的幾何信息[3]。
PointNet[5]是一種直接消耗原始點云的新型深度神經(jīng)網(wǎng)絡(luò),很好的處理了輸入點集的無序性。PointNet運用深度神經(jīng)網(wǎng)絡(luò)中的最大池函數(shù)來解決點云的無序性難題,運用共享網(wǎng)絡(luò)參數(shù)的形式來解決維度的改變問題,并且都取得了不錯的成績[6]。
圖1所示為PointNet的網(wǎng)絡(luò)結(jié)構(gòu),分類網(wǎng)絡(luò)用N個點作為輸入,輸入的點,和特征經(jīng)過轉(zhuǎn)化,然后用max pooling聚合點的特征。最后分別輸出K個類的分類分數(shù)。分割網(wǎng)絡(luò)是對分類網(wǎng)絡(luò)的擴充,它可以聚合全局特征和局部特征然后輸出每個點的分數(shù)?!癕LP”代表多層感知器,括號內(nèi)的數(shù)字是每層的大小。所有層的Batchnorm[7]用的是Relu函數(shù)。分類網(wǎng)絡(luò)中的最后一個MLP使用的是Dropout層。
圖1 PointNet的網(wǎng)絡(luò)架構(gòu)
PointNet的網(wǎng)絡(luò)有三個關(guān)鍵模塊:解決無序性問題的對稱函數(shù)、聚合局部和全局的信息和共享對齊網(wǎng)絡(luò)。
為了實現(xiàn)一個不受輸入順序影響的網(wǎng)絡(luò)模塊,PointNet運用一個對稱函數(shù)來聚合每個點的信息。這里對稱函數(shù)將 n個向量作為輸入,并輸出一個與輸入順序無關(guān)的新向量。對稱函數(shù)近似定義一個在點集上的一般函數(shù):
f({x1,…,xn})≈g(h(x1),…,h(xn))
(1)
當f:2RN→R,h:RN→Rkg:Rk×…×Rk→R是對稱函數(shù)[8]。
這個基本模塊用多層感知器網(wǎng)絡(luò)來近似h,g由單個變量函數(shù)和最大池函數(shù)組成。實驗發(fā)現(xiàn),經(jīng)過h集合,網(wǎng)絡(luò)能夠?qū)W習一些f來捕捉集合的差異特性。雖然模塊看起來簡單,但它實現(xiàn)效果好[6]。
上一節(jié)的輸出形成一個向量[f1,…,fk]它是輸入點集的全局標簽。PointNet能夠很容易的在全局特征上訓練SVM或者多層感知機來進行形狀分類。然而點的分割需要局部和全局特征的結(jié)合。其實可以用一種簡單而高效的方式來實現(xiàn)這一點。解決方案可以在圖1中的分割網(wǎng)絡(luò)部分看到。在計算好全局點云特征向量之后,將全局特征與每個點的特征串聯(lián)起來,將其反饋到每個點的特征。而后基于組合點的特征提取新的點的特征,此時每點特征都包含部分和全局的特征信息。
當點云經(jīng)歷某些幾何變換(如剛性變換)時,點云的語義標簽是不變的。因此,我們期望我們的點集可以通過學習使得網(wǎng)絡(luò)對這些轉(zhuǎn)換不改變點云的語義標簽。一種處理方法是在特征提取之前將全部輸入點集與標準空間對齊。關(guān)于此方法Jaderberg等人引入了空間變換的思想,在GPU上通過采樣和插值在一個特定的定制層來實現(xiàn)2D 圖像的對齊[9]。而PointNet的點云輸入形式使我們能夠以更簡單的方式實現(xiàn)這一目標。PointNet由一個迷你網(wǎng)絡(luò)(圖1中的 T -net)來預(yù)測仿射變換矩陣,從而直接將此轉(zhuǎn)換矩陣應(yīng)用于原始點的坐標。這個迷你網(wǎng)絡(luò)自身接近于一個大型網(wǎng)絡(luò),由點的獨立特征提取、最大池層和全連層這些基本模塊組成[4]。這個方法能夠進一步的擴展到特征空間的對齊。PointNet能夠預(yù)測特征轉(zhuǎn)換矩陣,并在點的特征上插入另一個對齊網(wǎng)絡(luò),以便實現(xiàn)來自不同輸入點的特征對齊。但是,特征空間中的變換矩陣比空間變換矩陣具有更高的維數(shù),極大的提高了優(yōu)化的難度。因此,PointNet增加了softmax 函數(shù)來計算與標注樣本間的損失。PointNet將特征變換矩陣近似為正交矩陣:
(2)
結(jié)果發(fā)現(xiàn)通過增加函數(shù)softmax,優(yōu)化變得比之前穩(wěn)定,而且使模型實現(xiàn)了更好的功能。
圖2 PointNet 的應(yīng)用
如圖2所示這部分展示的是PointNet 的應(yīng)用。從左到右依次是點云的物體分類,部分分割和場景語義分割。點云分類是將輸入的點云數(shù)據(jù)給出類別名稱(比如:杯子、桌子、汽車);部分分割是將物體的部分類標簽給出并用不同顏色表示(比如機身、機翼、機尾);場景語義分割是將一個場景中同一類的物體用相同的顏色表示(比如:人、椅子、桌子、墻)。
表1 ModelNet40上的分類結(jié)果
PointNet通過學習全局點云的特征來實現(xiàn)對物體的分類。PointNet分類基準的模型評估是在ModelNet40[14]上進行的。ModelNet40在40個人為目標分類的類別中,有12311個CAD模型。其中有9842個物體用于訓練模型,2469個物體用于模型檢驗[10]。
以前的方法專注于體積和多視圖圖像表示,PointNet是第一個直接在原始點云上工作的網(wǎng)絡(luò)結(jié)構(gòu)。PointNet均勻地在網(wǎng)格面上采樣1024個點,并將其歸一化為單位球面。訓練期間,在點云的傳輸過程中PointNet增加了均值為零,標準方差為0.02的高斯噪聲用來增強數(shù)據(jù)。
在表1將PointNet的模型和前人的工作以及使用MLP對從點云中提取傳統(tǒng)特征的基線進行比較。從結(jié)果可以看出PointNet的模型在基于3D輸入(體積和點云)的方法之間達到了最先進的性能。由于只有全連接層和最大池層,PointNet的網(wǎng)絡(luò)獲得了強大的推理速度,也可以很容易實現(xiàn)CPU的并行。
物體分割是一個挑戰(zhàn)有細密紋理的3D識別任務(wù)。給定3D掃描數(shù)據(jù)或網(wǎng)格模型后,任務(wù)是將部分類別標簽(例如椅子腿、杯柄)分配給每個點或者面。分割是用ShapeNET的部分數(shù)據(jù)集進行的評估,包含15個參考類別,16881個參考形狀,一共有49個標注的部分。大多數(shù)對象都被標記為兩到五部分。真實值的注釋標注在模型的采樣點上[9]。
在表2中,報告了每個類別和平均IOU(%)的分數(shù)。從結(jié)果可以觀察到有2.3%的平均IOU的改進,并且PointNet的網(wǎng)絡(luò)擊敗了大多數(shù)類別的基線方法。
表2 ShapeNet[11]部分數(shù)據(jù)集分割結(jié)果
至少有三種選擇用于解決無序性輸入。PointNet使用ModelNet40形狀分類問題作為比較這些選項的測試平臺。并且進行了如表3所示的基線比較,基線包括多層感知器、以輸入點為序列的RNN模型和基于對稱函數(shù)的模型。對稱函數(shù)的實驗操作包括最大池,平均池和attention sum。如表3所示,max pooling的使用以較大的準確度得到了最好的效果。
表3 無序性輸入方法的比較
實驗證明PointNet已經(jīng)實現(xiàn)了非常好的性能并且大大簡化了點云數(shù)據(jù)的目標分類與語義分割任務(wù)。但是關(guān)于破損點云數(shù)據(jù)的目標分類和語義分割還有待研究。因此,我們先對點云數(shù)據(jù)進行破損,然后將其破損數(shù)據(jù)的測試結(jié)果與原始數(shù)據(jù)測試結(jié)果進行對比。實驗過程與結(jié)果如下:
圖3 網(wǎng)絡(luò)對擾動點的魯棒性
圖4 點云數(shù)據(jù)任意dropout效果圖
圖5 破損方式可視化效果圖
測試結(jié)果展示了PointNet雖然簡單但是有效,當點云數(shù)據(jù)輸入超過原始數(shù)據(jù)的2/3時對各種損壞輸入都具有很好的魯棒性。實驗使用與最大池相同的網(wǎng)絡(luò)體系結(jié)構(gòu)。輸入點被歸一化為單位球面。圖3顯示了網(wǎng)絡(luò)對擾動點的魯棒性。圖3和圖4分別為點云破損以后可視化出來的效果圖。破損數(shù)據(jù)分別采用了隨機dropout和指定overlap的方法。結(jié)果見表4。對于缺失點,當缺失3/4點時,最大隨機輸入采樣的精度下降21.4%,當缺失1/2點時,指定輸入采樣的精度下降68.0%。
表4 破損數(shù)據(jù)與原始數(shù)據(jù)測試結(jié)果
由此也可以驗證PointNet具有很高的魯棒性。但是當數(shù)據(jù)破損超過1/2時,各種輸入采樣的精度下降嚴重,需要進一步的研究和攻克。
本文提出了一項新的深度神經(jīng)網(wǎng)絡(luò),直接消耗原始點云數(shù)據(jù)的PointNet。PointNet為許多3D識別任務(wù)提供了統(tǒng)一的方法,包括目標分類、部分分割和場景語義分割,同時在標準基準上獲得了與現(xiàn)有技術(shù)相當或更好的結(jié)果。PointNet還提供了理論分析和可視化了解網(wǎng)絡(luò)結(jié)構(gòu)。深度神經(jīng)網(wǎng)絡(luò)解決離散點云數(shù)集的關(guān)鍵是解決點集的無序性問題和空間維度的改變問題[10]。PointNet使用了深度神經(jīng)網(wǎng)絡(luò)中的常用對稱函數(shù)(Max Pooling)來處理無序性難題,運用共享網(wǎng)絡(luò)參數(shù)的方法來解決維度的改變問題,都得到了不錯的成績[13]。
當前你們對圖像的鉆研已得到了非常好的結(jié)果。然而關(guān)于3D點云數(shù)據(jù),點集增長越來越快且正在形成由2D到3D的轉(zhuǎn)化。 其次,大多數(shù)網(wǎng)絡(luò)都是直接取得3D數(shù)據(jù)并非是拍攝圖像以后再進行加工轉(zhuǎn)化[12]。因此,隨著深度學習的應(yīng)用越來越廣泛,應(yīng)該使用學習好這些高效的方法。另外PointNet還有很大的改良空間,比如解決點云的密度不均勻問題、破損數(shù)據(jù)識別率下降問題等等,值得人們進一步的學習和研究。