姚 鉞 任明武
(南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 南京 210094)
隨著3D傳感器的普及,以及自動(dòng)駕駛等領(lǐng)域的高速發(fā)展,如何有效地使用3D點(diǎn)云數(shù)據(jù)正逐漸成為一個(gè)研究熱點(diǎn)。
傳統(tǒng)的點(diǎn)云特征提取方法包括聚類[3~4]、密度[5~6]、曲率[7]、法向量[8]等通過特征算法得到的構(gòu)造特征。這些方法能夠提取點(diǎn)云的低緯度特征,但是直接使用這些特征不足以支持需要更高層次理解信息的任務(wù),例如目標(biāo)分類、語義分割等。因此,受深度學(xué)習(xí)技術(shù)在圖像領(lǐng)域內(nèi)的成果影響,許多研究者希望同樣地將其應(yīng)用到點(diǎn)云研究領(lǐng)域。
在二維圖像領(lǐng)域內(nèi),目前已經(jīng)有大量成熟的深度網(wǎng)絡(luò)架構(gòu)與技術(shù)手段。研究者們對(duì)于如何利用圖像的特點(diǎn)以及其表達(dá)方式積累了許多經(jīng)驗(yàn)。與之相對(duì)應(yīng)的,雷達(dá)點(diǎn)云作為近年來逐漸興起的一種數(shù)據(jù)表達(dá)方式,在這方面的研究還相對(duì)匱乏[9~10]。
雷達(dá)點(diǎn)云的典型特征是空間分布的不均勻性以及其無序性。不均勻分布是指在有物體遮擋處點(diǎn)云密度大,空曠區(qū)域則點(diǎn)云密度小。無序性是指點(diǎn)與點(diǎn)之間獨(dú)立,不存在某種通用的排序規(guī)則。
而典型的卷積神經(jīng)網(wǎng)絡(luò)往往依賴于有組織的數(shù)據(jù)結(jié)構(gòu)輸入,例如多維矩陣。因此一個(gè)很直接的想法是將點(diǎn)云轉(zhuǎn)換成某種有規(guī)律的表達(dá)方式。例如將雷達(dá)點(diǎn)云轉(zhuǎn)換成三維體素網(wǎng)格然后進(jìn)行處理[11~12,15],又或者將雷達(dá)點(diǎn)云投影到不同視圖上,再使用圖像的方法進(jìn)行處理[13~15]。
可以發(fā)現(xiàn),體素網(wǎng)格的模式想要取得更好的效果,則必須提高網(wǎng)格分別率,因而造成網(wǎng)絡(luò)規(guī)模進(jìn)一步膨脹。而點(diǎn)云投影的方式,雖然沒有這個(gè)問題,但是是以損失點(diǎn)云的空間三維信息為代價(jià)的,進(jìn)而影響后續(xù)特征提取的效果。
基于這些因素,一種名為PointNet[1]的深度網(wǎng)絡(luò)架構(gòu)被研究者提出。該網(wǎng)絡(luò)主要的創(chuàng)新點(diǎn)是能夠直接從原始點(diǎn)云學(xué)習(xí)特征,而不需要做額外的數(shù)據(jù)轉(zhuǎn)換。但PointNet只考慮到了點(diǎn)云的全局特征。因此,作者進(jìn)一步提出了PointNet++[2],在其中加入了對(duì)點(diǎn)云的局部特征的提取,進(jìn)一步提高了網(wǎng)絡(luò)的性能。
本文首先簡(jiǎn)要介紹PointNet與PointNet++的基本架構(gòu),接著提出本文基于PointNet++改進(jìn)后的網(wǎng)絡(luò)架構(gòu)。在本文的網(wǎng)絡(luò)架構(gòu)中,我們?cè)赑ointNet++的每個(gè)stage中間構(gòu)建與自頂向下網(wǎng)絡(luò)的橫向連接,在ModelNet40數(shù)據(jù)集上測(cè)試顯示,本文提出的改進(jìn)版本的PointNet++特征提取能力有所加強(qiáng),分類準(zhǔn)確率有所提升。
PointNet是一種能夠直接使用無序原始點(diǎn)云數(shù)據(jù)的深度神經(jīng)網(wǎng)絡(luò),不需要對(duì)點(diǎn)云進(jìn)行體素化或者投影的預(yù)處理,增加網(wǎng)絡(luò)適用性的同時(shí)也保持了優(yōu)秀的特征提取能力。
其主體分類網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。其中輸入點(diǎn)數(shù)為n,經(jīng)歷兩次轉(zhuǎn)換-卷積過程后再通過max pooling提取出全局特征,最后將特征送入全連接層(Fully Connected Layer)輸出分類結(jié)果。

圖1 PointNet網(wǎng)絡(luò)結(jié)構(gòu)
該網(wǎng)絡(luò)的核心層為max pooling層,在這一層提取出了整體點(diǎn)云的全局特征。通過max pooling一定程度上減弱小的擾動(dòng)及平移旋轉(zhuǎn)變換帶來的影響。
整個(gè)網(wǎng)絡(luò)可以近似地看做是一個(gè)定義在點(diǎn)集上的通用函數(shù),通過對(duì)點(diǎn)集中的變化元素應(yīng)用一個(gè)對(duì)稱函數(shù)來近似地定義一個(gè)在點(diǎn)集上的對(duì)稱函數(shù):

其中x1,x2,…,xn代表點(diǎn)云,函數(shù)h在這里可以代表多層感知機(jī)網(wǎng)絡(luò),函數(shù)g代表max pooling。整個(gè)公式表示為一個(gè)點(diǎn)集到一個(gè)向量的映射關(guān)系。
PointNet++是基于PointNet發(fā)展而來,由上文介紹可知PointNet關(guān)注于全局特征,PointNet++則對(duì)局部特征的提取做出優(yōu)化,它是一個(gè)多層結(jié)構(gòu),每一層都提取不同尺度的特征。
其分類網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。

圖2 PointNet++網(wǎng)絡(luò)結(jié)構(gòu)
從圖2可以看到PointNet++分類網(wǎng)絡(luò)是經(jīng)由兩個(gè)抽象模塊(Set Abstraction,SA)再使用PointNet提取一次特征后送入全連接層(Fully Connected Lay?er,F(xiàn)C),最終獲得分類的結(jié)果。
該網(wǎng)絡(luò)的核心概念為set abstraction層,這一層里包含了Sampling,Grouping還有PointNet三個(gè)操作。其內(nèi)部結(jié)構(gòu)如圖3所示。

圖3 Set Abstraction內(nèi)部結(jié)構(gòu)
假如Set Abstraction模塊的輸入為N×(d+C)矩陣,其中N代表點(diǎn)數(shù),d是維度(例如采用xyz坐標(biāo),則d等于3),C為特征維數(shù)。相應(yīng)的輸出為矩陣,其中N'代表采樣后的點(diǎn)數(shù),d是維度,C'為新的特征維數(shù)。
其中Sampling通過迭代最遠(yuǎn)點(diǎn)采樣的方法根據(jù)輸入的N×(d+C)矩陣得到N'×d的采樣點(diǎn)坐標(biāo)。Grouping則依據(jù)N'×d的采樣點(diǎn)為中心,在每個(gè)采樣點(diǎn)附近小于半徑參數(shù)的局部區(qū)域選擇K個(gè)鄰居作為代表將輸入的N×(d+C)矩陣進(jìn)行聚合得到N'×K×(d+C)的矩陣。最后通過一個(gè)Point?Net提取采樣區(qū)域內(nèi)的局部特征并將結(jié)果轉(zhuǎn)換為N'×(d+C')的結(jié)構(gòu)作為下一層Set-Abstraction的輸入。
經(jīng)過數(shù)個(gè)Set Abstraction層提取特征后,最后通過全連接網(wǎng)絡(luò)整合來獲取對(duì)點(diǎn)云的分類結(jié)果。
如果我們將PointNet++網(wǎng)絡(luò)中,原始點(diǎn)云經(jīng)過多層Set Abstraction抽象提取特征的過程視為自底向上的,那么從最頂層重新回到原始點(diǎn)云的路徑則可以視為自頂向下的。
本文所提出的方法在PointNet++主干分支旁構(gòu)建一個(gè)自頂向下網(wǎng)絡(luò),綜合利用各層特征,進(jìn)一步加強(qiáng)網(wǎng)絡(luò)特征提取能力。
本文在原始PointNet++使用兩個(gè)SA層的基礎(chǔ)上多加了一個(gè)SA層。同時(shí)最后的輸出不再直接進(jìn)入全連接層分類,而是將每一層輸出的中間特征與新構(gòu)造的自頂向下的網(wǎng)絡(luò)相連接,在新構(gòu)造的自頂向下網(wǎng)絡(luò)分支中將每層的特征處理并一起輸入到最后的分類網(wǎng)絡(luò)中。
其整體架構(gòu)如圖4所示。

圖4 本文改進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu)
其中Merge Unit單元主要負(fù)責(zé)上層特征與當(dāng)前層特征的合并,并將處理后的結(jié)構(gòu)輸出到后續(xù)單元,其結(jié)構(gòu)如圖5所示。

圖5 Merge Unit內(nèi)部結(jié)構(gòu)
可以看到上層輸入的特征首先經(jīng)過上采樣轉(zhuǎn)化,轉(zhuǎn)化結(jié)果再與當(dāng)前層相加。新的特征有兩條路徑:一是繼續(xù)往下,作為下層Merge Unit的輸入;二是經(jīng)過一個(gè)Mini-PointNet處理后進(jìn)入最后一步。
通過自頂向下的操作可以使得下層特征得到更加豐富的語義信息。這是通過上采樣將上層特征傳遞到下層實(shí)現(xiàn)的。
不同于圖像中矩陣中的相鄰元素即為空間上的相鄰像素,可以較方便地進(jìn)行上采樣從而得到分辨率更高的特征圖譜,點(diǎn)云由于其無序性,在矩陣中位置的鄰近并不代表兩點(diǎn)空間上的相近,因此我們需要利用SA層抽象提取特征時(shí),中間Sampling得到的采樣點(diǎn)坐標(biāo)。根據(jù)兩層采樣點(diǎn)間的坐標(biāo)關(guān)系來得到上采樣中對(duì)應(yīng)的特征圖譜計(jì)算公式。經(jīng)過研究后,得到上采樣特征圖譜計(jì)算公式如下:

其中xi表示下層點(diǎn)云中的某一個(gè)點(diǎn)的坐標(biāo)位置,則表示經(jīng)過上采樣后該點(diǎn)的特征向量,它是通過計(jì)算距離xi最近的K個(gè)上層點(diǎn)的特征向量乘以一個(gè)基于兩點(diǎn)間距離的權(quán)重函數(shù)p求和得到的。
將從當(dāng)前SA層的輸出經(jīng)過一個(gè)卷積層連到對(duì)應(yīng)的自頂向下網(wǎng)絡(luò)分支中的連接稱為橫向連接。
通過Upsampling得到了更密集且富含上層語義信息的點(diǎn)云,但是在不斷地上采樣過程中,其實(shí)也是在不斷損失底層的信息。因此通過lateral link作為一個(gè)補(bǔ)充,加入中間層的特征。注意到在橫向連接中,我們使用一個(gè)1×1的卷積來對(duì)每一層的特征進(jìn)行處理。這樣處理能夠統(tǒng)一各層的channels個(gè)數(shù),方便我們后續(xù)進(jìn)行統(tǒng)一處理。
為了驗(yàn)證本文提出的改進(jìn)架構(gòu)的合理性與有效性,使用一個(gè)簡(jiǎn)單的利用各層特征的網(wǎng)絡(luò)架構(gòu)作為我們測(cè)試的Baseline。它直接地將各層特征一起送入最后的分類網(wǎng)絡(luò)而不做額外的處理,其結(jié)構(gòu)如圖6。

圖6 Baseline網(wǎng)絡(luò)結(jié)構(gòu)
我們知道PointNet++中低層特征中蘊(yùn)含的語義信息相對(duì)較少,但點(diǎn)更密集且貼近原始點(diǎn)云。而上層特征點(diǎn)相對(duì)較少,語義信息豐富,表達(dá)更抽象。本文改進(jìn)的架構(gòu)則能夠同時(shí)利用低層與高層特征的優(yōu)點(diǎn),加強(qiáng)網(wǎng)絡(luò)特征提取能力。
通過自頂向下的網(wǎng)絡(luò)分支與橫向連接的使用,使得低層特征也能得到高層語義信息的支持,同時(shí)保持更加密集的點(diǎn)云數(shù)量,加強(qiáng)各層特征之間的聯(lián)系。
為了驗(yàn)證本文所提出方法的效果,本文采用ModelNet40數(shù)據(jù)集對(duì)所提出方法進(jìn)行檢驗(yàn),并與原PointNet++以及Baseline基準(zhǔn)網(wǎng)絡(luò)進(jìn)行各方面效果對(duì)比。
實(shí)驗(yàn)中使用Tensorflow 1.12.0框架,通過一塊Titan V顯卡進(jìn)行訓(xùn)練與測(cè)試。我們?cè)诰W(wǎng)絡(luò)與原PointNet++主干SA層重合部分使用完全一致的參數(shù),避免因?qū)崿F(xiàn)過程中參數(shù)設(shè)置不同導(dǎo)致的結(jié)果差異,后續(xù)全連接層也使用相同的結(jié)構(gòu)與設(shè)置。多次試驗(yàn)后結(jié)果取平均值。
通過測(cè)試集從分類準(zhǔn)確率方面對(duì)算法進(jìn)行評(píng)估,表1顯示出我們改進(jìn)的網(wǎng)絡(luò)架構(gòu)相比于與PointNet++原網(wǎng)絡(luò)提升了約0.7%的準(zhǔn)確率,考慮到原網(wǎng)絡(luò)準(zhǔn)確率已相當(dāng)不錯(cuò),提升0.7%是非常可觀的。

表1 準(zhǔn)確率測(cè)試
同時(shí)我們也發(fā)現(xiàn)如Baseline網(wǎng)絡(luò)這樣,簡(jiǎn)單地將各層特征提取出來合并使用得到的結(jié)果與原網(wǎng)絡(luò)并無較大差異。我們認(rèn)為這正是因?yàn)槿鄙僮皂斚蛳碌倪^程,使得各層特征之間聯(lián)系不夠緊密。這樣直接使用的低層特征能夠得到的信息已經(jīng)基本被包含在上層特征之中,所以網(wǎng)絡(luò)性能沒有實(shí)質(zhì)上的提升。進(jìn)一步說明了本文改進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu)的有效性。
從圖7中可以看到,代表Baseline的線與代表PointNet++的線基本重合,而代表我們改進(jìn)網(wǎng)絡(luò)的線在accuracy曲線中上升更快,在loss曲線中下降地更快。這說明我們改進(jìn)后的網(wǎng)絡(luò)架構(gòu)擁有更強(qiáng)的學(xué)習(xí)能力,能夠在較少的epoch中學(xué)習(xí)到足夠的特征。但另一方面,這也提醒我們需要預(yù)防過擬合存在的情況。

圖7 Training Acc&Loss曲線
本文提出了一種基于PointNet++改進(jìn)的點(diǎn)云特征提取與分類網(wǎng)絡(luò),主要是通過增加一個(gè)自頂向下的網(wǎng)絡(luò)分支與原網(wǎng)絡(luò)架構(gòu)逐層相連。使得網(wǎng)絡(luò)的最終輸出能夠更進(jìn)一步地整合抓取從局部到全局的特征。基于ModelNet40數(shù)據(jù)集驗(yàn)證了框架的有效性。在ModelNet40分類任務(wù)中,較原網(wǎng)絡(luò)架構(gòu)分類準(zhǔn)確率有所提升。根據(jù)loss統(tǒng)計(jì)曲線顯示,該網(wǎng)絡(luò)能做相對(duì)較少的epoch中學(xué)到足夠的特征。
現(xiàn)在提出以下幾點(diǎn)展望:
1)框架模型是否可以更進(jìn)一步的深化。圖像的網(wǎng)絡(luò)已經(jīng)可以達(dá)到非常深的程度,而點(diǎn)云與圖像存在極大的差異,并不能生搬硬套。這需要我們對(duì)網(wǎng)絡(luò)進(jìn)行深入的研究,確認(rèn)增加網(wǎng)絡(luò)深度是否有正面效果。
2)在圖像領(lǐng)域內(nèi)有許多經(jīng)過驗(yàn)證的優(yōu)化思路還沒有應(yīng)用到點(diǎn)云領(lǐng)域,例如迭代回歸、難樣例挖掘、上下文建模、數(shù)據(jù)增強(qiáng)等。這是一個(gè)非常值得嘗試的方向。點(diǎn)云與圖像的不同特性,使得我們?cè)谧鲱愃频膰L試時(shí)一定要注意是否適配以及實(shí)現(xiàn)上的差異,本文中的Upsampling就是一個(gè)例子。
3)實(shí)驗(yàn)上使用ModelNet40數(shù)據(jù)集進(jìn)行驗(yàn)證。可以嘗試采取更多不同來源的數(shù)據(jù)集做測(cè)試,更好地驗(yàn)證框架的泛化能力。
在后面的工作中,我們將針對(duì)這些問題進(jìn)行改進(jìn)。