許 翔 帥 惠 劉青山 ,
隨著自動(dòng)駕駛和機(jī)器人應(yīng)用技術(shù)的興起,3D點(diǎn)云數(shù)據(jù)分析引起了廣泛關(guān)注.近年來,由于基于深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)在圖像分類[1-2]、目標(biāo)檢測[3-4]和圖像分割[5-6]等任務(wù)中取得了很大的成功,基于深度學(xué)習(xí)的點(diǎn)云數(shù)據(jù)分析也成為了研究的熱點(diǎn)[7].現(xiàn)有的基于深度學(xué)習(xí)的點(diǎn)云數(shù)據(jù)分析方法大體可以分為以下兩類:
一類是基于無序點(diǎn)云規(guī)則化的深度學(xué)習(xí)方法,這類方法先將3D 點(diǎn)云轉(zhuǎn)換為規(guī)則的體素結(jié)構(gòu)[8-9]或多視圖圖像[10-11],然后使用卷積神經(jīng)網(wǎng)絡(luò) (Convolutional neural network,CNN)方法來學(xué)習(xí)特征表示.由于體素化過程存在量化誤差,多視圖投影則壓縮了數(shù)據(jù)維度,這些都會(huì)不同程度上導(dǎo)致3D點(diǎn)云中幾何信息的丟失.另一類方法是直接基于點(diǎn)云的深度學(xué)習(xí)方法.這類方法又可以分為基于多層感知機(jī)(Multi-layer perceptron,MLP)的方法、基于卷積的方法和基于圖的方法.其中基于多層感知機(jī)的方法[12-14]的核心思想是通過參數(shù)共享的MLP獨(dú)立地提取每個(gè)點(diǎn)的特征,然后通過一個(gè)對(duì)稱函數(shù)聚合得到全局特征,這類方法往往不能充分考慮到3D 點(diǎn)之間的關(guān)系.基于卷積的方法[15-17]的核心思想是根據(jù)鄰域點(diǎn)之間的空間位置關(guān)系去學(xué)習(xí)點(diǎn)之間的權(quán)重參數(shù),并根據(jù)學(xué)習(xí)到的權(quán)重參數(shù)自適應(yīng)地聚合局部特征,這類方法已經(jīng)取得了極大的成功.基于圖的方法[18-20]在近年來也受到了廣泛的關(guān)注,它們將每個(gè)點(diǎn)都作為圖的頂點(diǎn),通過學(xué)習(xí)頂點(diǎn)之間邊的權(quán)重來更新頂點(diǎn)的特征,這類方法通常在構(gòu)圖的過程中會(huì)產(chǎn)生相當(dāng)大的計(jì)算量.
在上述方法中,基于MLP 的方法是最直接簡單的方法.PointNet[12]是這類方法中的開創(chuàng)性工作,其核心思想是通過參數(shù)共享的多層感知機(jī)獨(dú)立地將每個(gè)點(diǎn)的坐標(biāo)信息映射至高維特征空間,再通過一個(gè)對(duì)稱函數(shù)聚合最終的高維特征以獲得全局表示,從而解決了點(diǎn)云的無序性問題;此外,PointNet 還使用T-Net 網(wǎng)絡(luò)[12]學(xué)習(xí)變換矩陣對(duì)點(diǎn)云進(jìn)行旋轉(zhuǎn)標(biāo)定,從而保證點(diǎn)云的旋轉(zhuǎn)不變性;在分割任務(wù)中,PointNet 將全局特征與每個(gè)點(diǎn)的局部特征級(jí)聯(lián),通過多層MLP 提取每個(gè)點(diǎn)的語義特征,實(shí)現(xiàn)對(duì)每個(gè)點(diǎn)的分類.雖然該方法簡單有效,但是由于其是對(duì)每個(gè)點(diǎn)進(jìn)行獨(dú)立地處理,因此該網(wǎng)絡(luò)并沒有有效提取點(diǎn)云的局部特征.對(duì)此,PointNet++[13]提出了一種層次化的網(wǎng)絡(luò)結(jié)構(gòu),通過在每一層級(jí)遞歸使用采樣、分組和PointNet 網(wǎng)絡(luò)來抽象低層次的特征;面對(duì)語義分割任務(wù),PointNet++提出基于歐氏距離的插值法對(duì)點(diǎn)進(jìn)行上采樣,并將通過插值計(jì)算所得語義特征與低層學(xué)習(xí)的語義特征進(jìn)行融合以更準(zhǔn)確地學(xué)習(xí)每個(gè)點(diǎn)的語義特征.但是在每一個(gè)子區(qū)域中,PointNet++仍然獨(dú)立地處理每個(gè)點(diǎn)的信息.PointSIFT[14]引入卦限約束來有效探索各個(gè)點(diǎn)周圍的局部模式,其主要思想是以每個(gè)點(diǎn)為原點(diǎn),在周圍8 個(gè)卦限中找到特定范圍內(nèi)的最近點(diǎn),然后沿著X,Y,Z軸使用三階段2D 卷積來提取局部模式,其三階段的卷積操作會(huì)受到因點(diǎn)云旋轉(zhuǎn)而造成的不同卦限順序的影響,從而使得提取的局部模式具有方向敏感性;此外,在下采樣階段,PointSIFT 沿用PointNet++的網(wǎng)絡(luò)結(jié)構(gòu),采用可學(xué)習(xí)的方式聚合局部特征,這為其引入額外的參數(shù),從而大大增加了其計(jì)算量.
為了克服上述問題,本文提出了一種新的卦限卷積神經(jīng)網(wǎng)絡(luò)(Octant-CNN)來提取點(diǎn)云的局部幾何結(jié)構(gòu).該網(wǎng)絡(luò)主要由卦限卷積模塊和下采樣模塊兩部分組成.具體來說,卦限卷積模塊首先搜索每個(gè)點(diǎn)在8 個(gè)卦限內(nèi)的最近鄰點(diǎn),由于點(diǎn)云的密度特性可以通過近鄰點(diǎn)的距離來表征,為了使Octant-CNN 能更好地反映這一特性,本文取消了對(duì)搜索半徑的限制,從而保證遠(yuǎn)離中心點(diǎn)的近鄰點(diǎn)同樣可以被度量.卦限卷積模塊使用單階段卷積操作同時(shí)作用在8 個(gè)卦限的近鄰點(diǎn),從而克服了三階段卷積操作對(duì)卦限順序敏感這一問題,并且配合T-Net 的使用,能夠?qū)c(diǎn)云旋轉(zhuǎn)具有更好的魯棒性.最后通過級(jí)聯(lián)各層的特征和殘差連接方式實(shí)現(xiàn)了多層次特征的融合.下采樣模塊根據(jù)空間分布對(duì)點(diǎn)云進(jìn)行分組聚合,擴(kuò)大了中間特征的感受野,構(gòu)成了層次化的網(wǎng)絡(luò)連結(jié)結(jié)構(gòu),并且該模塊并沒有引入額外的可學(xué)習(xí)參數(shù),從而大大降低了Octant-CNN 的計(jì)算復(fù)雜度.通過對(duì)卦限卷積模塊和下采樣模塊的多層堆疊,Octant-CNN 實(shí)現(xiàn)了從局部模式中不斷抽象出全局特征.
Octant-CNN 的整體網(wǎng)絡(luò)框架如圖1 所示.以原始點(diǎn)云作為輸入,首先將點(diǎn)云送入T-Net 中進(jìn)行點(diǎn)云旋轉(zhuǎn),將點(diǎn)云標(biāo)定至規(guī)范空間,接著通過卦限卷積模塊(Octant convolution module)提取點(diǎn)云的局部幾何結(jié)構(gòu),其后采用下采樣模塊(Sub-sampling module)來減少點(diǎn)的數(shù)量,以設(shè)計(jì)一種分層式的層次化網(wǎng)絡(luò)結(jié)構(gòu),從而增加中間層特征的感受野.通過這兩個(gè)模塊的多層堆疊,Octant-CNN實(shí)現(xiàn)了對(duì)高層語義特征的抽象,為點(diǎn)云處理提供了一種高效的特征編碼方式.

圖1 網(wǎng)絡(luò)框架圖Fig.1 Illustration of network architecture
假設(shè)具有n個(gè)點(diǎn)的點(diǎn)云為S=(X;F)?R3+C,其中X={x1,x2,···,xn}?R3表示坐標(biāo)信息,F={f1,f2,···,fn}?RC表示點(diǎn)云的特征.對(duì)于每個(gè)點(diǎn)si,以該點(diǎn)為原點(diǎn)建立一個(gè)三維局部坐標(biāo)系,可以將空間劃分為8 個(gè)卦限,然后在8 個(gè)卦限中分別找到si的最近鄰點(diǎn),即N(si)={si1,···,si8}.在卦限卷積模塊中,Octant-CNN 取消了搜索半徑上限的限制,這樣可以確保遠(yuǎn)離中心點(diǎn)的近鄰點(diǎn)同樣可以被捕獲到,從而可以更好地反映點(diǎn)云的局部密度特性.
對(duì)于8 個(gè)最近鄰點(diǎn),PointSIFT[14]使用了具有三階段操作的2D 卷積,如圖2(a)所示.該卷積操作沿X,Y和Z軸分別使用卷積核大小為 1×2 的2D 卷積.這種三階段的卷積操作存在著先后順序,對(duì)于三維空間中的不同維度具有各向異性,而且PointSIFT 中沒有采用T-Net 對(duì)輸入點(diǎn)云進(jìn)行旋轉(zhuǎn),因此不同的卦限順序會(huì)造成不同的卷積結(jié)果.為了克服這個(gè)問題,本文采用T-Net 對(duì)點(diǎn)云進(jìn)行旋轉(zhuǎn)標(biāo)定,并通過單階段的卷積操作直接在8 個(gè)最近鄰點(diǎn)上進(jìn)行運(yùn)算.如圖2(b)所示,Octant-CNN 先按照卦限的順序?qū)? 個(gè)鄰點(diǎn)進(jìn)行排序,接著利用一個(gè)卷積核大小為 1×8 的2D 卷積直接作用在這8個(gè)鄰點(diǎn)上.給定中心點(diǎn)si及其最近鄰點(diǎn)N(si),卷積的輸入通道包括中心點(diǎn)坐標(biāo)xi,中心點(diǎn)及其最近鄰點(diǎn)之間的殘差坐標(biāo)xi-xij,以及最近鄰點(diǎn)的特征fij,該操作過程如下:

圖2 三階段與單階段2D 卷積的對(duì)比Fig.2 Comparison of 2D CNN with three-stage and one-stage

其中,f(l)(si)表示點(diǎn)si在第l層學(xué)到的特征,concat表示級(jí)聯(lián)操作,wij表示si和sij之間的可學(xué)習(xí)權(quán)重.
由于Octant-CNN 先通過T-Net 對(duì)點(diǎn)云方向進(jìn)行預(yù)先標(biāo)定,其后采用一個(gè)二維卷積同等處理各卦限內(nèi)的點(diǎn)及其特征,使得單階段卷積對(duì)輸入點(diǎn)云具有各向同性,因此對(duì)于不同角度的同一點(diǎn)云輸入,Octant-CNN 總能得到相似的特征表示,具有旋轉(zhuǎn)不變性.
為了使每個(gè)點(diǎn)能夠提取更豐富的特征,Octant-CNN 在卦限卷積模塊中堆疊了多層卷積操作,并將各層的輸出特征通過MLP 進(jìn)行融合,以充分利用各層次特征信息,并且MLP 的輸出尺寸與最后一個(gè)卷積層相同,從而可以在最后一層添加殘差塊以緩解梯度消失問題.整個(gè)卦限卷積模塊可以表示為

卦限卷積模塊的架構(gòu)如圖3 所示.

圖3 卦限卷積模塊Fig.3 Octant convolution module
下采樣模塊的目的是為了擴(kuò)大每個(gè)點(diǎn)特征學(xué)習(xí)的局部感受野.主要思路為:從輸入點(diǎn)集中選擇一系列種子點(diǎn)作為聚類中心點(diǎn);然后,將這些中心點(diǎn)周圍的點(diǎn)的特征用對(duì)稱函數(shù)聚合在一起.由于Point-SIFT[14]在下采樣的過程中沿用了PointNet++[13]的結(jié)構(gòu)設(shè)計(jì),這為PointSIFT 引入了可學(xué)習(xí)的參數(shù),從而增加了其計(jì)算量;不同于此,Octant-CNN在下采樣模塊中的核心操作是種子點(diǎn)的選擇和特征聚合,而在特征聚合時(shí)僅僅通過對(duì)稱函數(shù)即可實(shí)現(xiàn),這并沒有為Octant-CNN 帶來額外的可學(xué)習(xí)參數(shù),因此降低了Octant-CNN 的計(jì)算復(fù)雜度.
給定輸入點(diǎn){x1,x2,···,xn},下采樣模塊迭代使用最遠(yuǎn)點(diǎn)采樣(Furthest point sampling,FPS)來選擇該點(diǎn)集的一個(gè)子集{x1,x2,···,xm},m<n,并將該子集作為聚類中心的種子點(diǎn).與隨機(jī)采樣相比,FPS 通過最大化采樣點(diǎn)之間的距離來更好地覆蓋整個(gè)點(diǎn)集[13].
對(duì)于每一個(gè)采樣點(diǎn),Octant-CNN 都可以在一定的半徑內(nèi)尋找它的鄰點(diǎn).為了保持一致性,本文在實(shí)際操作中設(shè)置了一個(gè)上限K.該操作可以表示為:給定一個(gè)大小為N×C的原始點(diǎn)集,以及通過FPS 采樣得到的大小為M×C的子集,其中M和N表示集合中點(diǎn)的數(shù)量(M<N),C表示特征維度.對(duì)于每個(gè)采樣點(diǎn),都可以在一定半徑內(nèi)從原始點(diǎn)集中選取K個(gè)鄰點(diǎn),并輸出大小為M ×K×C的數(shù)據(jù).這些鄰點(diǎn)的特征都可以通過一個(gè)對(duì)稱函數(shù)聚合并輸出大小為M×C.在實(shí)際操作中,本文使用最大值來聚合局部特征.
為了詳細(xì)評(píng)估Octant-CNN 的性能,本文在對(duì)象分類、部件分割、場景語義分割、3D 目標(biāo)檢測四組任務(wù)中,對(duì)其進(jìn)行了實(shí)驗(yàn)測試,并和相關(guān)方法進(jìn)行了比較.此外,本文還通過一系列消融實(shí)驗(yàn)評(píng)估了卦限卷積和下采樣模塊的不同設(shè)置對(duì)網(wǎng)絡(luò)性能的影響.
首先在ModelNet40[9]分類基準(zhǔn)上評(píng)估Octant-CNN.該數(shù)據(jù)集包含40 個(gè)人工設(shè)計(jì)的對(duì)象類別,共有12 311 個(gè)CAD 模型,其中9 843 個(gè)用于訓(xùn)練集,2 468 個(gè)用于測試集.參照PointNet[12],本文均勻采樣1 024 個(gè)點(diǎn)并將其標(biāo)準(zhǔn)化到單位球體中,并僅將采樣點(diǎn)的坐標(biāo)作為模型的輸入.在訓(xùn)練過程中,本文與PointNet++[13]一樣,通過隨機(jī)旋轉(zhuǎn)和縮放對(duì)象并擾動(dòng)對(duì)象點(diǎn)的位置來擴(kuò)充數(shù)據(jù).
如圖1 所示,首先使用PointNet[12]設(shè)計(jì)的T-Net對(duì)點(diǎn)云進(jìn)行旋轉(zhuǎn)標(biāo)定.T-Net 首先通過三層共享的MLP 提取點(diǎn)的特征,然后通過最大值池化以獲取全局表示,最后通過兩個(gè)全連接層來計(jì)算一個(gè)轉(zhuǎn)換矩陣.Octant-CNN 在卦限卷積模塊中學(xué)習(xí)點(diǎn)的局部特征,然后在下采樣模塊中對(duì)點(diǎn)進(jìn)行分組聚合局部特征.在實(shí)際操作中,對(duì)于最后一個(gè)下采樣模塊,本文僅對(duì)原點(diǎn)進(jìn)行采樣,然后使用最大值獲取全局特征,最后通過兩層全連接層來輸出對(duì)象的類別概率.在訓(xùn)練過程中,本文在全連接層中使用了dropout[21]機(jī)制,并將該比率設(shè)置為50%.在測試階段,本文和PointNet++[13]一樣,使用投票機(jī)制將點(diǎn)云均勻旋轉(zhuǎn)12 個(gè)不同的角度后分別送入模型中預(yù)測,并對(duì)這12 個(gè)預(yù)測結(jié)果取平均獲取最終的分類結(jié)果.
表1 列出了Octant-CNN 與最新一些相關(guān)方法進(jìn)行的比較結(jié)果,包括PointNet[12],PointNet++[13],PAT[22]等.本文采用了整體準(zhǔn)確率(Overall accuracy,oAcc)和平均準(zhǔn)確率(Mean accuracy,mAcc)兩種指標(biāo)來衡量分類結(jié)果,它們的定義分別為

其中,pij表示真實(shí)標(biāo)簽為i,預(yù)測結(jié)果為j的數(shù)量,N表示類別數(shù).為了客觀分析比較,本文還實(shí)現(xiàn)了基于PointSIFT[14]的對(duì)象分類任務(wù).從表1 可以看到,Octant-CNN 取得了不錯(cuò)的效果,這也說明了Octant-CNN 在一定程度上可以更好地學(xué)習(xí)到點(diǎn)云的局部幾何特征.

表1 ModelNet40 分類結(jié)果(%)Table 1 Classification results on ModelNet40 (%)
ShapeNet[28]數(shù)據(jù)集主要用于測試部件分割任務(wù).該數(shù)據(jù)集包含16 個(gè)對(duì)象類別的16 881 個(gè)不同形狀,總共被標(biāo)記為50 個(gè)部件.本文參照Point-Net[12]的方法對(duì)數(shù)據(jù)集進(jìn)行劃分,并隨機(jī)采樣2 048個(gè)點(diǎn)作為網(wǎng)絡(luò)輸入.Octant-CNN 僅使用坐標(biāo)信息作為網(wǎng)絡(luò)的輸入,而沒有采用PointNet++[13]中的法線信息.
但是,對(duì)于分割任務(wù),模型希望獲得每個(gè)點(diǎn)的語義特征以實(shí)現(xiàn)每個(gè)點(diǎn)的分類.PointSIFT[14]首先參照PointNet++[13]的方法,先使用基于歐氏距離的插值法對(duì)點(diǎn)進(jìn)行上采樣,并將內(nèi)插值與上一個(gè)卦限卷積模塊中學(xué)習(xí)的特征進(jìn)行級(jí)聯(lián),然后通過共享的多層感知機(jī)提取豐富的語義特征;緊接著,Point-SIFT 在此基礎(chǔ)上使用三階段卷積操作進(jìn)一步做特征變換.該三階段的卷積操作在原來多層感知機(jī)的基礎(chǔ)上又引入了額外的參數(shù).不同于此操作,考慮到計(jì)算量的問題,Octant-CNN 在上采樣的過程中僅通過多層感知機(jī)來抽象高層的語義特征.
在實(shí)際操作中,我們還將對(duì)象的one-hot 標(biāo)簽級(jí)聯(lián)到最后一層特征傳播層中,以進(jìn)行準(zhǔn)確的預(yù)測.為了更好地評(píng)測Octant-CNN 在部件分割上的性能,本文還和PointNet[12],PointNet++[13]等方法進(jìn)行了實(shí)驗(yàn)比較,表2 中給出了實(shí)驗(yàn)比較結(jié)果.本文采用平均交并比(Mean intersection over union,mIoU)作為衡量分割任務(wù)性能的指標(biāo),其定義為

表2 ShapeNet 部件分割結(jié)果(%)Table 2 Part segmentation results on ShapeNet (%)

其中,pij表示真實(shí)標(biāo)簽為i,預(yù)測結(jié)果為j的數(shù)量,N表示類別數(shù).可以看到,本文僅將坐標(biāo)信息用作輸入,就可以得到比使用法線信息的PointNet++[13]更好的性能.同時(shí),PointSIFT[14]在部件分割任務(wù)中并不能取得很好的效果,主要由于其上采樣使用了三階段的卷積操作,這帶來了大量的參數(shù),對(duì)于ShapeNet[28]這種相對(duì)較小的數(shù)據(jù)集,很容易造成模型的過擬合.
為了進(jìn)一步證明Octant-CNN 的有效性,本文還在斯坦福大學(xué)大型3D 室內(nèi)空間數(shù)據(jù)集(3d semantic parsing of large-scale indoor spaces,S3DIS)[30]上評(píng)估了其性能.該數(shù)據(jù)集包含來自6 個(gè)室內(nèi)區(qū)域的272 個(gè)房間.每個(gè)點(diǎn)都用來自13 個(gè)類別(天花板,地板,墻壁,梁和其他)的語義標(biāo)簽進(jìn)行標(biāo)注.參照PointNet[12],本文將每個(gè)房間分成面積為1 m×1 m的塊,每個(gè)點(diǎn)都表示為9 維向量(XYZ,RGB 和歸一化坐標(biāo)).在訓(xùn)練過程中,Octant-CNN 在每個(gè)塊中隨機(jī)選取4 096 個(gè)點(diǎn),并將所有的點(diǎn)用于測試.與PointNet[12]一樣,本文在6 個(gè)區(qū)域上使用了6 折交叉驗(yàn)證的方式.
本文將Octant-CNN 與PointNet[12],Point-Net++[13],PointSIFT[14]進(jìn)行了比較.由于我們無法達(dá)到PointSIFT[14]中報(bào)告的結(jié)果,因此僅顯示根據(jù)作者提供的代碼而獲得的結(jié)果.結(jié)果總結(jié)在表3 中,本文提出的Octant-CNN 優(yōu)于其他方法.圖4 顯示了Octant-CNN 的一些可視化結(jié)果,可以發(fā)現(xiàn),Octant-CNN 可以更平滑地分割場景,這是由于Octant-CNN 在卦限卷積模塊中更好地學(xué)習(xí)局部幾何特征.

圖4 S3DIS 可視化結(jié)果Fig.4 Visualization of results on S3DIS

表3 S3DIS 語義分割結(jié)果Table 3 Semantic segmentation results on S3DIS
最后,本文將Octant-CNN 和PointSIFT[14]擴(kuò)展到了KITTI[31]數(shù)據(jù)集上進(jìn)行3D 目標(biāo)檢測.KITTI 3D 目標(biāo)檢測數(shù)據(jù)集由7 481 個(gè)訓(xùn)練圖像和7 518 個(gè)測試圖像以及相應(yīng)的點(diǎn)云數(shù)據(jù)組成.它具有三個(gè)目標(biāo)類別:汽車、行人和自行車.對(duì)于3D 目標(biāo)檢測,本文遵循Frustum PointNets[32]的檢測流程,僅將PointNet 特征提取模塊替換成Octant-CNN以客觀比較.由于Frustum PointNets[32]僅公開了在訓(xùn)練集和驗(yàn)證集上的2D 檢測框,因此本文評(píng)估的是Octant-CNN 及相關(guān)方法在驗(yàn)證集上的檢測結(jié)果.
3D 目標(biāo)檢測的實(shí)驗(yàn)結(jié)果如表4 所示,這些方法的檢測流程都是基于Frustum PointNets[32]實(shí)現(xiàn)的,主要不同之處在于點(diǎn)云的分割網(wǎng)絡(luò)以及3D 目標(biāo)檢測框的回歸網(wǎng)絡(luò),其中Frustum PointNet v1采用的是PointNet[12]的網(wǎng)絡(luò)結(jié)構(gòu),Frustum Point-Net v2 采用的是PointNet++[13]的網(wǎng)絡(luò)結(jié)構(gòu),可以發(fā)現(xiàn),本文提出的方法要優(yōu)于這些方法.尤其對(duì)于小目標(biāo)的檢測性能提升較為明顯,圖5 同時(shí)也展示了一些檢測的可視化結(jié)果.

圖5 KITTI 目標(biāo)檢測可視化結(jié)果Fig.5 Visualization of detection results on KITTI

表4 3D 目標(biāo)檢測對(duì)比結(jié)果(%)Table 4 Performance compression in 3D object detection (%)
本節(jié)在ModelNet40[9]數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn),詳細(xì)分析了網(wǎng)絡(luò)結(jié)構(gòu)中各個(gè)模塊的作用,并且分析了卦限卷積中不同特征融合方式、不同近鄰點(diǎn)選擇方法和不同特征輸入的效果.此外,本節(jié)還對(duì)卦限卷積與其他方法的旋轉(zhuǎn)魯棒性和計(jì)算復(fù)雜度進(jìn)行了比較.
1)結(jié)構(gòu)的設(shè)計(jì).為了分析卦限卷積模塊中各個(gè)部件的重要性,通過將各個(gè)部件分別加入卦限卷積模塊中進(jìn)行實(shí)驗(yàn),結(jié)果如表5 所示.在卦限卷積模塊中,首先通過堆疊多層2D 卷積以獲取點(diǎn)云豐富的局部特征,此時(shí)該模型可以達(dá)到90.7%的準(zhǔn)確率.為了充分利用低層的幾何特征,接著將所有卷積層的輸出特征級(jí)聯(lián)起來,并通過一層MLP 實(shí)現(xiàn)多層特征的融合,此時(shí)的準(zhǔn)確率可以提升到91.2%.考慮到多層堆疊卷積可能帶來的過擬合問題,進(jìn)一步以殘差方式將融合特征與最后一層2D 卷積層的輸出特征相加,準(zhǔn)確率也進(jìn)一步提升到91.5%.最后,為了能夠客觀的與PointNet++[13]等方法對(duì)比,采用了投票機(jī)制,將輸入點(diǎn)云均勻旋轉(zhuǎn)12 個(gè)不同角度并分別送入模型中預(yù)測,并取平均值作為最終的結(jié)果,最終取得91.9%的準(zhǔn)確率.

表5 結(jié)構(gòu)設(shè)計(jì)分析Table 5 Analysis of the structure design
2)特征融合方式的選擇.為了比較2D 卷積和MLP 兩種特征融合方法對(duì)最終結(jié)果性能的影響,本組實(shí)驗(yàn)對(duì)這兩種特征融合的方式進(jìn)行了對(duì)比,實(shí)驗(yàn)結(jié)果如表6 所示.可以觀察到2D 卷積效果更佳,這是由于在使用MLP 時(shí),其是對(duì)每個(gè)鄰點(diǎn)單獨(dú)處理,然后通過最大值操作聚合局部特征,該操作只保留了每個(gè)通道中最重要的信息,從而導(dǎo)致細(xì)節(jié)信息的丟失;而在使用2D 卷積時(shí),其會(huì)考慮到所有鄰點(diǎn)各個(gè)通道的信息,充分利用了細(xì)節(jié)信息.

表6 2D 卷積和MLP 的對(duì)比Table 6 Comparisons of 2D CNN and MLP
3)近鄰點(diǎn)的選擇.K 近鄰(K-nearest neighbor,KNN)是最常見的一種近鄰選擇方式,本文提出了使用8 卦限搜索的方式來選擇近鄰點(diǎn).對(duì)此,本組實(shí)驗(yàn)對(duì)這兩種近鄰點(diǎn)的選擇進(jìn)行了對(duì)比,實(shí)驗(yàn)結(jié)果如表7 所示.可以發(fā)現(xiàn),本文所使用的8 卦限搜索的性能要優(yōu)于KNN.這兩種近鄰點(diǎn)的區(qū)別如圖6 所示,其中方框表示選擇的近鄰點(diǎn).當(dāng)使用KNN 時(shí),選取的近鄰點(diǎn)會(huì)受到點(diǎn)云密度特性的影響而偏向某一特定方向;而使用8 卦限搜索時(shí),所選取的近鄰點(diǎn)來自于不同的方向,從而更好地覆蓋在點(diǎn)云上.

表7 不同鄰點(diǎn)的比較Table 7 The results of different neighbor points

圖6 K 近鄰和8 卦限搜索的比較Fig.6 Comparison of KNN and 8 octant search
4)搜索半徑的設(shè)置:為了分析在使用8 卦限搜索近鄰點(diǎn)時(shí),搜索半徑的限制對(duì)模型性能的影響,通過設(shè)置幾組不同的搜索半徑進(jìn)行實(shí)驗(yàn).由于在點(diǎn)云分類任務(wù)中,點(diǎn)云首先被標(biāo)準(zhǔn)化到單位球體中,因此最大搜索半徑設(shè)置為1.結(jié)果如表8 所示,我們觀察到,當(dāng)搜索半徑越大,分類準(zhǔn)確率也會(huì)隨之提升.這是由于在設(shè)置搜索半徑時(shí),部分偏離中心點(diǎn)較遠(yuǎn)的近鄰點(diǎn)會(huì)被丟棄,從而導(dǎo)致幾何結(jié)構(gòu)的不完整.因此,我們?nèi)∠怂阉靼霃降南拗?

表8 不同搜索半徑的比較Table 8 Comparison of different search radius
5)不同輸入特征的比較:本組實(shí)驗(yàn)對(duì)比了使用不同的輸入特征對(duì)模型最終性能的影響,實(shí)驗(yàn)結(jié)果如表9 所示.從實(shí)驗(yàn)結(jié)果可以看出來,當(dāng)僅使用鄰點(diǎn)的特征作為卷積的輸入時(shí),由于缺少點(diǎn)云的空間位置信息,此時(shí)的效果不佳.隨著越來越多的坐標(biāo)信息,如中心點(diǎn)的坐標(biāo)、中心點(diǎn)與鄰點(diǎn)的殘差坐標(biāo)同時(shí)送入卷積中進(jìn)行運(yùn)算,精度也會(huì)得到相應(yīng)的提升.

表9 不同輸入通道的結(jié)果比較Table 9 The results of different input channels
6)點(diǎn)云旋轉(zhuǎn)的魯棒性分析:在本組實(shí)驗(yàn)中,將輸入點(diǎn)云分別旋轉(zhuǎn) 0°,30°,60°,90°,180°后送入Octant-CNN 和PointSIFT[14]中進(jìn)行預(yù)測,通過計(jì)算由不同角度得到的準(zhǔn)確率的均值和方差來比較這兩種方法對(duì)點(diǎn)云旋轉(zhuǎn)的魯棒性.由于Octant-CNN在一定程度上依賴于T-Net,為了更客觀地比較單階段卷積和三階段卷積對(duì)點(diǎn)云旋轉(zhuǎn)的魯棒性的影響,我們還將T-Net 加入PointSIFT 模型中,實(shí)驗(yàn)結(jié)果如表10 所示.可以發(fā)現(xiàn),T-Net 在一定程度上提高了PointSIFT 的旋轉(zhuǎn)魯棒性,但是本文提出的單階段卷積對(duì)點(diǎn)云旋轉(zhuǎn)依然更具魯棒性,這是由于三階段卷積是存在先后順序的,對(duì)于三維空間不同維度具有各向異性,而單階段卷積同等處理各卦限的點(diǎn),對(duì)輸入點(diǎn)云具有各向同性.

表10 點(diǎn)云旋轉(zhuǎn)魯棒性比較Table 10 Comparison of robustness to point cloud rotation
7)Octant-CNN 的復(fù)雜度:最后,我們對(duì)比了Octant-CNN 和其他一些方法在語義分割任務(wù)中的參數(shù)量和每秒的浮點(diǎn)運(yùn)算量(Floating point operations per second,FLOPs),結(jié)果如表11所示.可以觀察到,相比于PointSIFT[14],Octant-CNN 的參數(shù)量和FLOPs 都得到了明顯的降低,這主要來自兩個(gè)方面:1)在下采樣階段,PointSIFT采用可學(xué)習(xí)的方式聚合局部特征,這為PointSIFT引入了額外的可學(xué)習(xí)參數(shù),而Octant-CNN 直接采用最大值池化聚合局部特征,這一操作不需要額外參數(shù);2)由于語義分割任務(wù)需要上采樣以恢復(fù)點(diǎn)的原始數(shù)量,PointSIFT 首先使用幾層MLP 抽象語義特征,緊接著使用三階段卷積進(jìn)一步豐富語義信息,這帶來了大量的參數(shù),Octant-CNN 則只使用了MLP 來抽象高層語義特征.同時(shí)可以發(fā)現(xiàn),對(duì)于部件分割和目標(biāo)檢測這兩個(gè)數(shù)據(jù)集相對(duì)較小的任務(wù),Point-SIFT 由于參數(shù)量過大,導(dǎo)致模型出現(xiàn)過擬合的情況,因此在這兩個(gè)任務(wù)上的效果不佳.

表11 點(diǎn)云語義分割的復(fù)雜度Table 11 Complexity in point cloud semantic segmentation
為了有效捕獲點(diǎn)云的局部幾何信息,本文提出了Octant-CNN,并在對(duì)象分類、部件分割、語義分割和目標(biāo)檢測上均取得顯著提升.Octant-CNN 具有三個(gè)關(guān)鍵點(diǎn):首先,在近鄰空間中定位最近鄰點(diǎn)時(shí),Octant-CNN 取消了搜索范圍的限制,這使得遠(yuǎn)離中心點(diǎn)的近鄰點(diǎn)可以被捕獲,從而更好地反映點(diǎn)云的密度特性.其次,Octant-CNN 使用單階段的卷積操作直接提取點(diǎn)的局部幾何結(jié)構(gòu),這克服了三階段卷積操作帶來的對(duì)卦限順序敏感的問題,從而對(duì)點(diǎn)云旋轉(zhuǎn)更具魯棒性.最后,通過下采樣模塊實(shí)現(xiàn)對(duì)原始點(diǎn)集的分組及特征聚合,從而增大了中間特征的感受野,并大大降低了卷積操作的計(jì)算量.