基本簡(jiǎn)介
論文下載地址:https://arxiv.org/abs/1612.00593
代碼開(kāi)源地址:https://github.com/charlesq34/pointnet
作者以及論文信息如下:
論文作者的公開(kāi)課鏈接:https://www.shenlanxueyuan.com/channel/8hQkB6hqr2/detail(大佬的課必須去感受下啊~~)
最近,開(kāi)始研究基于3D點(diǎn)云的深度學(xué)習(xí)算法。PointNet 作為基于3D點(diǎn)的特征提取的開(kāi)創(chuàng)性論文,非常有必要好好研究總結(jié)。在翻譯論文時(shí),會(huì)結(jié)合代碼來(lái)解釋每一個(gè)關(guān)鍵點(diǎn)或者關(guān)鍵模塊。同時(shí),本文翻譯會(huì)附英文原文和中文翻譯對(duì)照,目的是為了讓大家能夠通過(guò)中文理解該論文的同時(shí),也可以參照英文原文,形成自己的理解以及對(duì)翻譯的勘誤。作為算法工程師,堅(jiān)持閱讀英文論文,并能達(dá)到熟練的程度,也是必備技能之一。
Abstract
點(diǎn)云(point cloud)是一種非常重要的幾何數(shù)據(jù)結(jié)構(gòu)。由于點(diǎn)云的無(wú)規(guī)律性(irregular format),大部分研究者將點(diǎn)云轉(zhuǎn)換為規(guī)律的3D體素網(wǎng)格(3D voxel grids)或者一組不同視角的2D圖像。這種轉(zhuǎn)換數(shù)據(jù)的方式,增加了數(shù)據(jù)的規(guī)模,同時(shí)也會(huì)帶來(lái)一系列問(wèn)題。在本篇論文中,我們?cè)O(shè)計(jì)了一種可以直接處理點(diǎn)云的神經(jīng)網(wǎng)絡(luò),并且考慮了輸入點(diǎn)云序列不變性的特征。我們的網(wǎng)絡(luò),PointNet,提供了統(tǒng)一的應(yīng)用架構(gòu),可以用于分類(classification),塊分割(part segmentation),語(yǔ)義理解(semantic parsing)。盡管網(wǎng)絡(luò)很簡(jiǎn)單,但是非常有效。從實(shí)驗(yàn)結(jié)果上看,它超越了經(jīng)典的方法,至少也達(dá)到同樣的水平。理論上,我們進(jìn)行了分析,包括網(wǎng)絡(luò)學(xué)習(xí)了什么,以及當(dāng)數(shù)據(jù)被一定程度的干擾后,網(wǎng)絡(luò)為什么能保持穩(wěn)定。
摘要介紹的主要內(nèi)容:
- 點(diǎn)云數(shù)據(jù)的特征:無(wú)規(guī)律性,無(wú)序性。
- 本文提出網(wǎng)絡(luò) PointNet, 可以直接處理原始點(diǎn)云,無(wú)需轉(zhuǎn)換輸入點(diǎn)云為3D體素或者多個(gè)視角的2D圖像。
- 該網(wǎng)絡(luò)用于提取點(diǎn)云特征,架構(gòu)統(tǒng)一,可以適應(yīng)不同的3D識(shí)別任務(wù)。
- 最后對(duì)網(wǎng)絡(luò)學(xué)習(xí)的內(nèi)容和網(wǎng)絡(luò)的魯棒性進(jìn)行理論分析和實(shí)驗(yàn)驗(yàn)證。
1. Introtuction
本篇論文中,我們探究了深度神經(jīng)網(wǎng)絡(luò)處理諸如點(diǎn)云(Point Cloud)或者網(wǎng)格(Mesh)等3D幾何數(shù)據(jù)的能力。為了能夠進(jìn)行權(quán)重共享或者其它核優(yōu)化,傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)需要輸入高度規(guī)律的數(shù)據(jù),比如圖像塊或者3D體素網(wǎng)格。因?yàn)辄c(diǎn)云或者網(wǎng)格不是規(guī)律的數(shù)據(jù),因此常被處理為3D體素網(wǎng)格,或者多視角2D圖像,然后輸入到傳統(tǒng)的網(wǎng)絡(luò)。這樣的數(shù)據(jù)處理方式,增大了數(shù)據(jù)的規(guī)模,量化過(guò)程中,會(huì)掩蓋數(shù)據(jù)本身的特性。
下面圖片的左邊是3D模型多視角生成一些列圖像,右圖是3D模型的體素化(左邊的兔子是原始的模型,右邊的兔子是體素化的模型)
![]()
基于這些原因,我們關(guān)注不同于體素或者圖像的數(shù)據(jù)表達(dá)方式(使用原始點(diǎn)云數(shù)據(jù),比如xyz坐標(biāo)),并提出新的神經(jīng)網(wǎng)絡(luò)——PointNet. 點(diǎn)云是簡(jiǎn)單并且統(tǒng)一的結(jié)構(gòu),也就避免了組合的不規(guī)律性以及拓?fù)涞膹?fù)雜性,因此,容易被網(wǎng)絡(luò)學(xué)習(xí)。當(dāng)然,也不能忽略點(diǎn)云本身僅僅是一系列點(diǎn),因此具有序列不變性,網(wǎng)絡(luò)中添加特定得對(duì)稱計(jì)算是有必要的。剛性變換不變性也需要考慮。
我們的 PointNet 是統(tǒng)一的結(jié)構(gòu),輸入是點(diǎn)云,輸出是整個(gè)輸入的類別標(biāo)簽或者每個(gè)輸入點(diǎn)的分割或者分塊的標(biāo)簽。我們的網(wǎng)絡(luò)非常的簡(jiǎn)單,在最初的幾個(gè)階段,每一個(gè)點(diǎn)都是被獨(dú)立、同等的處理。每個(gè)點(diǎn)只包含(x,y,z)坐標(biāo),也可以加入額外的特征維度,比如法線,或者其它局部或者全局特征。
本文方法的關(guān)鍵是使用了一個(gè)簡(jiǎn)單的對(duì)稱函數(shù)(max-pooling)。 網(wǎng)絡(luò)能夠高效地學(xué)習(xí)最優(yōu)函數(shù)或準(zhǔn)則集合,它們可以從點(diǎn)云中選擇感興趣點(diǎn)或者信息點(diǎn),并且編碼了選擇有效點(diǎn)的原因。網(wǎng)絡(luò)最后的全連接層將這些學(xué)習(xí)的最優(yōu)值聚合為全局特征描述子,并用于分類,分割等任務(wù)。
因?yàn)檩斎氲狞c(diǎn)是獨(dú)立的,所以可以很容易應(yīng)用剛性變換或者仿射變換。那么,我們可以在數(shù)據(jù)送入網(wǎng)絡(luò)(PointNet)之前,對(duì)數(shù)據(jù)進(jìn)行數(shù)據(jù)依賴的空間轉(zhuǎn)換,目的是為了規(guī)范化輸入數(shù)據(jù),進(jìn)而進(jìn)一步改善訓(xùn)練結(jié)果。
我們對(duì)提出的算法進(jìn)行理論分析和實(shí)驗(yàn)評(píng)估。結(jié)果顯示,我們的模型可以逼近任意連續(xù)的函數(shù)集。更加有趣的是,我們的網(wǎng)絡(luò)可以學(xué)習(xí)一些關(guān)鍵的稀疏點(diǎn),它們可以表達(dá)整個(gè)輸入點(diǎn)云。根據(jù)可視化的結(jié)果,這些稀疏點(diǎn)分布在目標(biāo)的骨骼部位(可以認(rèn)為是足夠表征目標(biāo)的關(guān)鍵點(diǎn))。理論上,我們解釋了為什么 PointNet 對(duì)于輸入數(shù)據(jù)小的波動(dòng),添加噪聲點(diǎn)或者刪除部分點(diǎn),仍然具有高度穩(wěn)定性。
對(duì)于當(dāng)前的分類,Part分割以及場(chǎng)景分割等任務(wù),我們訓(xùn)練了 PointNet ,并與經(jīng)典算法(基于多視角圖像或者體素)進(jìn)行比對(duì)。我們的算法不僅更快,而且效果更好。
我們的主要貢獻(xiàn)如下:
- 我們?cè)O(shè)計(jì)了新的神經(jīng)網(wǎng)絡(luò)架構(gòu),可以直接處理無(wú)序的3D點(diǎn)云。
- PointNet 可以進(jìn)行3D形狀的分類,Part分割,場(chǎng)景理解等任務(wù)。
- 我們從理論和實(shí)驗(yàn)分析了網(wǎng)絡(luò)的魯棒性和高效率。
- 我們可視化了網(wǎng)絡(luò)部分節(jié)點(diǎn)學(xué)習(xí)的3D特征,為算法高效的表現(xiàn)提供了證明。
使用神經(jīng)網(wǎng)絡(luò)處理無(wú)序的點(diǎn)云所面臨的問(wèn)題是非常基礎(chǔ)和普遍的,我們期望該算法能夠遷移到其它應(yīng)用領(lǐng)域。
2. Related Work
該部分內(nèi)容不是很多,與理解 PointNet 算法并沒(méi)有太大的關(guān)系,暫不作翻譯,如有需要,請(qǐng)自行查看原文章。
3. Problem
點(diǎn)云是一組3D點(diǎn)的集合,
{
P
i
∣
i
=
1
,
2
,
.
.
.
,
n
}
\lbrace P_i|i=1,2,...,n\rbrace
{Pi?∣i=1,2,...,n},每一個(gè)點(diǎn)最基本應(yīng)包含(x,y,z),還可以包含顏色,法向量等特征。為了簡(jiǎn)化以及便于陳述,除非有特別說(shuō)明,否則我們的3D點(diǎn)集只有(x,y,z)3個(gè)通道。
對(duì)于目標(biāo)分類任務(wù),輸入點(diǎn)云要么從一個(gè)目標(biāo)形狀中采樣一部分點(diǎn),要么是從場(chǎng)景中分割的部分點(diǎn)。對(duì)于 k k k 分類問(wèn)題,網(wǎng)絡(luò)輸出 k k k 個(gè)分?jǐn)?shù)。對(duì)于語(yǔ)義分割,輸入可以是對(duì)單個(gè)目標(biāo)進(jìn)行part分割,或者一個(gè)3D場(chǎng)景內(nèi)進(jìn)行目標(biāo)區(qū)域分割。網(wǎng)絡(luò)會(huì)輸出 N × M N\times M N×M 個(gè)分?jǐn)?shù), N N N 表示點(diǎn)數(shù), M M M 表示語(yǔ)義類別數(shù)量。
4. Deep Learning on Point Sets
我們的網(wǎng)絡(luò)架構(gòu)(Sec 4.2)設(shè)計(jì)受啟發(fā)于3D點(diǎn)集的特性(Sec 4.1)。
4.1 Properties of Point Sets in R n R^n Rn
我們的輸入是來(lái)自于歐式空間的子集,它具有如下三大主要特性:
- 無(wú)序性(Unordered) 與圖像中的像素?cái)?shù)組或者體素網(wǎng)格中的體素?cái)?shù)組不同,點(diǎn)云是一系列無(wú)序點(diǎn)的集合。換句話說(shuō),神經(jīng)網(wǎng)絡(luò)在處理 N 個(gè)3D點(diǎn)時(shí),應(yīng)該對(duì) N ! N! N! 種輸入順序具有不變性(即是:不同的輸入順序,網(wǎng)絡(luò)學(xué)習(xí)的結(jié)果應(yīng)該相差不大)。
- 點(diǎn)之間的相互關(guān)系(Interaction Among Points) 來(lái)自空間的點(diǎn)在一定的度量距離內(nèi)。這就意味著,點(diǎn)集中大部分點(diǎn)不是孤立的,鄰域點(diǎn)一定屬于一個(gè)有意義的子集。因此,網(wǎng)絡(luò)需要從近鄰點(diǎn)學(xué)習(xí)到局部結(jié)構(gòu),以及局部結(jié)構(gòu)的相互關(guān)系。
- 變換不變性(Invariance Under Transformations) 作為一個(gè)幾何目標(biāo),學(xué)習(xí)的點(diǎn)特征應(yīng)該對(duì)特定的變換具有不變性。比如,旋轉(zhuǎn)和平移變換不會(huì)改變?nèi)贮c(diǎn)云的類別以及每個(gè)點(diǎn)的分割結(jié)果。
4.2. PointNet Architecture
我們的整體網(wǎng)絡(luò)架構(gòu)如 Fig2 所示,分類網(wǎng)絡(luò)和分割網(wǎng)絡(luò)共享了網(wǎng)絡(luò)的大部分結(jié)構(gòu)。整體的流程可以參考 Fig2 的文字說(shuō)明。
我們的網(wǎng)絡(luò)主要有三個(gè)關(guān)鍵的模塊:最大池化層(對(duì)稱函數(shù)),用于聚合所有點(diǎn)的特征信息;局部信息和全局信息合并結(jié)構(gòu)(針對(duì)分割類任務(wù));2個(gè)聯(lián)合對(duì)齊網(wǎng)絡(luò)用于對(duì)齊輸入和點(diǎn)特征。
-
對(duì)稱函數(shù)(Symentric Function)的開(kāi)源代碼實(shí)現(xiàn)
# Symmetric function: max pooling print('net: ', net) net = tf_util.max_pool2d(net, [num_point,1], padding='VALID', scope='maxpool') print('net-maxpool: ', net) # Input and Output of max pooling net: Tensor("conv5/Relu:0", shape=(32, 1024, 1, 1024), dtype=float32) net-maxpool: Tensor("maxpool/maxpool:0", shape=(32, 1, 1, 1024), dtype=float32)
a. 如上述代碼所示,輸入為【BxHxWxC】——>【32,1024,1,1024】,池化層核的大小為【num_point,1】——> 【1024,1】,在沒(méi)有有填充的情況下(padding=VALID),對(duì) H,W 維度進(jìn)行最大池化操作,【1024,1】轉(zhuǎn)換為 【1,1】。
b. 對(duì)稱函數(shù)正是為了解決3D點(diǎn)集無(wú)序性輸入的問(wèn)題。
c. 對(duì)稱函數(shù)將所有獨(dú)立的點(diǎn)特征聚合為全局的點(diǎn)集特征,進(jìn)而進(jìn)行后續(xù)的3D識(shí)別任務(wù)。 -
聯(lián)合對(duì)齊模塊(Joint Alignment Network):分別對(duì)齊輸入數(shù)據(jù)和點(diǎn)集特征
該模塊的作用:點(diǎn)云的預(yù)測(cè)結(jié)果應(yīng)該對(duì)特定的變換具有不變性,比如剛性變換。為此,本文提出 T-Net 變換矩陣,將輸入以及不同點(diǎn)的特征進(jìn)行對(duì)齊,使得網(wǎng)絡(luò)學(xué)習(xí)的表達(dá)也具有這種特性。
對(duì)齊模塊的結(jié)構(gòu):下面,我們將展示輸入和特征對(duì)齊模塊具體的結(jié)構(gòu),包括每一層的輸入和輸出。下面的模塊是輸入點(diǎn)云的對(duì)齊模塊,每一層的卷積尺寸以及輸入、輸出均已明確標(biāo)示。 下圖中的 input transform 模塊,通過(guò)構(gòu)建的 T-Net 網(wǎng)絡(luò),可以生成變換矩陣 transform,進(jìn)而得到輸入的轉(zhuǎn)換輸出,形狀為【32x1024x3】,32是 Batch 值。單獨(dú)使用輸入模塊的轉(zhuǎn)換,網(wǎng)絡(luò)確實(shí)有提升,但是很有限(提升0.8%)。
下面的模塊是對(duì)特征的對(duì)齊,與輸入對(duì)齊的 T-Net 非常相似,只是個(gè)別卷積核的大小略有差別,具體就是第一個(gè)卷積核的尺寸和 T-Net 輸出的變換矩陣尺寸。后面的實(shí)驗(yàn)數(shù)據(jù)表明,單獨(dú)使用該模塊的效果有提升,但是也很有限(提升大概0.3%)。
-
合并局部和全局特征
在分割任務(wù)中,需要提取更為精細(xì)的特征。為此,需要將局部特征和全局特征合并,這在2D圖像中語(yǔ)義分割也是常見(jiàn)的操作。本文中,作者的操作很簡(jiǎn)單,將前面幾層的輸出和全局特征進(jìn)行聚合(concate),得到新的特征,然后輸入到后面的卷積層。
我們將在下面的段落中分別討論網(wǎng)絡(luò)設(shè)計(jì)的背后邏輯。
Symmetry Function for Unordered Input 為了使得模型對(duì)輸入順序具有不變性,總共有三種策略:(1)將輸入順序規(guī)范化;(2)將每一種輸入順序當(dāng)做是一個(gè)序列樣本,然后分別輸入到 RNN訓(xùn)練;(3)使用對(duì)稱函數(shù)將每一個(gè)點(diǎn)的信息聚合,它的輸入是 n 維向量,輸出是新的向量,并且對(duì)輸入順序具有不變性。比如,加法和乘法就是對(duì)稱的二元函數(shù)。
聽(tīng)起來(lái), 固定的排序是一個(gè)簡(jiǎn)單的解決方案??紤]到一般場(chǎng)景中,點(diǎn)云存在波動(dòng),那么在高維空間中,不存在一個(gè)固定的順序能保持穩(wěn)定??梢杂媚嫱品ㄕf(shuō)明這個(gè)問(wèn)題。假設(shè)存在一個(gè)這樣的特定順序,那么它定義了高維空間和1d 實(shí)數(shù)軸的雙射。不難看出,在考慮點(diǎn)波動(dòng)的情況下,保證順序的穩(wěn)定性等價(jià)于在維度降低的情況下,這種映射需要保持空間的近鄰性,這是很難達(dá)到的(一維的實(shí)數(shù)軸不可能保證點(diǎn)的近鄰性)。因此,排序無(wú)法解決順序的問(wèn)題,網(wǎng)絡(luò)也很難學(xué)習(xí)到一致的映射。Fig5 中的實(shí)驗(yàn)結(jié)果表明,直接將 MLP 應(yīng)用于固定排序的點(diǎn)集,網(wǎng)絡(luò)的表現(xiàn)很差,盡管比直接作用于無(wú)序點(diǎn)略好。
將所有的點(diǎn)集排序當(dāng)作 RNN 的一個(gè)輸入樣本,然后訓(xùn)練該網(wǎng)絡(luò)。但是,在論文【25】中,作者表明順序是有關(guān)系的,也不能全部省略。當(dāng)然, RNN 對(duì)輸入順序的變化、短序列(比如長(zhǎng)度為幾十)有較好的魯棒性。但是很難擴(kuò)展到較長(zhǎng)的輸入元素(上千長(zhǎng)度),然而對(duì)于3D的點(diǎn)集,這種長(zhǎng)度是很常見(jiàn)的。而且,從實(shí)驗(yàn)來(lái)看, RNN 并沒(méi)有比我們提出的模型效果好,見(jiàn) Fig5.
我們的想法:逼近一個(gè)定義在點(diǎn)集上的一般函數(shù),然后對(duì)轉(zhuǎn)換后的函數(shù)使用對(duì)稱函數(shù)(Symmetric Function),表現(xiàn)形式如上圖的 公式(1)所示。實(shí)際上,我們的基本模塊非常簡(jiǎn)單:使用多層感知機(jī)近似 h 函數(shù),以及通過(guò)組合的單變量函數(shù)和最大池化函數(shù)近似 g 函數(shù)。實(shí)驗(yàn)發(fā)現(xiàn),這種結(jié)構(gòu)效果很好。通過(guò)一系列 h 函數(shù),我們學(xué)習(xí)到了一些列 f 函數(shù)來(lái)抓取點(diǎn)集的不同特性。
我們的模塊看起來(lái)很簡(jiǎn)單,它具有很多有意思的特性(Sec 5.3)以及在一些應(yīng)用得到不錯(cuò)的效果(Sec 5.1)。由于模塊的簡(jiǎn)單性,我們?cè)冢?font color="red">Sec4.3)提供理論分析。
Local and Global Information Aggregation 上面的函數(shù) f 的輸出向量為 [ f 1 , f 2 , . . . , f K ] [f_1,f_2,...,f_K] [f1?,f2?,...,fK?],它是輸入點(diǎn)集的全局特征?;谶@樣的全局特征,我們可以很容易訓(xùn)練SVM或者多層感知機(jī)進(jìn)行分類。但是,點(diǎn)集分割需要融合局部特征和全局特征才能達(dá)到一定的效果。這里我們使用了一個(gè)簡(jiǎn)單高效的方式。
我們的解決辦法可以參考 Fig2(分割網(wǎng)絡(luò)部分)。當(dāng)?shù)玫饺窒蛄亢?,與前面層的每一個(gè)點(diǎn)特征連接。那么我們可以得到每個(gè)點(diǎn)新的特征,這樣每一個(gè)新的點(diǎn)特征融合了全局和局部特征。
基于這樣的改變, 我們的網(wǎng)絡(luò)可以預(yù)測(cè)每一個(gè)點(diǎn)的特性(基于局部幾何和全局語(yǔ)義而來(lái))。比如,我們精準(zhǔn)預(yù)測(cè)了每一個(gè)點(diǎn)的法線(見(jiàn)下圖Fig16),表明網(wǎng)絡(luò)可以提取點(diǎn)的局部特征。在Part分割和場(chǎng)景分割實(shí)驗(yàn)中,我們的網(wǎng)絡(luò)可以到經(jīng)典算法的水平。
Joint Alignment Network 點(diǎn)云的語(yǔ)義標(biāo)簽應(yīng)該對(duì)特定的幾何變換具有不變性,比如剛性變換。因此,我們希望網(wǎng)絡(luò)學(xué)習(xí)的表達(dá)也具有這種特性。
一個(gè)自然的解決方案是在特征提取之前將點(diǎn)云對(duì)齊到特定的規(guī)范空間。Jaderberg[9] 引入空間變換的思想,通過(guò)采樣和插值對(duì)齊2D圖像,也即是應(yīng)用在GPU上的裁判層(tailored layer)。
與論文【9】相比,點(diǎn)云的輸入形式使得可以更簡(jiǎn)單的達(dá)到這樣的目標(biāo)。不像在2D圖像中,我們不需要添加新的網(wǎng)絡(luò)層或者其它的別名被引入。借助一個(gè)很小的網(wǎng)絡(luò)(mini-network),我們預(yù)測(cè)了一個(gè)仿射變換矩陣(Fig2 中的T-net),然后直接作用在輸入點(diǎn)云上。類似于一些大的網(wǎng)絡(luò),這個(gè)迷你網(wǎng)絡(luò)也包含一些基本的模塊,比如獨(dú)立的特征提取,最大池化,全連接層。更多的細(xì)節(jié),參考補(bǔ)充材料。
上面對(duì)齊輸入點(diǎn)云的思想可以進(jìn)一步擴(kuò)展,應(yīng)用在特征空間的對(duì)齊。我們可以嵌入一個(gè)針對(duì)特征對(duì)齊的網(wǎng)絡(luò),預(yù)測(cè)一個(gè)特征變換矩陣,將不同輸入點(diǎn)云的特征對(duì)齊。與空間變換矩陣相比,特征轉(zhuǎn)換矩陣具有更高的維度,極大提高了優(yōu)化的困難度。因此,我們給損失函數(shù)添加了正則項(xiàng)。使得特征變換矩陣盡量接近正交矩陣:
L
r
e
g
=
∣
∣
I
?
A
A
T
∣
∣
F
2
(2)
L_{reg}=||I-AA^T||^2_F \tag 2
Lreg?=∣∣I?AAT∣∣F2?(2)
??這里,A 是迷你網(wǎng)絡(luò)預(yù)測(cè)的特征對(duì)齊矩陣。正交矩陣不會(huì)丟失輸入的信息,正式我們所期待的。我們發(fā)現(xiàn),通過(guò)添加正則項(xiàng),優(yōu)化變得更加穩(wěn)定,模型也得到更好的效果。
4.3. Theoretical Analysis
Univeral approximation 我們首先展示了網(wǎng)絡(luò)擬合連續(xù)函數(shù)集的基本能力。直覺(jué)上來(lái)說(shuō),對(duì)于連續(xù)函數(shù),輕微的點(diǎn)云波動(dòng)并不會(huì)改變函數(shù)的值,也即是最終分類和分割的分?jǐn)?shù)。
公式的定義如上圖所示,S 表示點(diǎn)集集合中的一個(gè)點(diǎn)集,f 是函數(shù)集(可以由網(wǎng)絡(luò)近似擬合)。根據(jù)點(diǎn)集的特性,只要最大池化層的(max-pooling)神經(jīng)元個(gè)數(shù)足夠多,那么我們的網(wǎng)絡(luò)應(yīng)該可以逼近任意函數(shù)集。
理論的證明,參考補(bǔ)充材料,這里不作敘述。理論的核心思想是,最壞的情況下,網(wǎng)絡(luò)可以將點(diǎn)云轉(zhuǎn)換為體素表達(dá),也就是將整個(gè)點(diǎn)云空間分割為相等大小的立方塊。實(shí)際上,我們的網(wǎng)絡(luò)可以學(xué)習(xí)更加智能的策略來(lái)探測(cè)點(diǎn)云空間,后面將可以看到點(diǎn)函數(shù)的可視化。
這一部分的公式證明,有興趣的可以參考補(bǔ)充材料,這里就不證明了,沒(méi)有太多意義,定理也是比較數(shù)學(xué)分析中常見(jiàn)的。這一部分還是想說(shuō),對(duì)于針對(duì)輸入點(diǎn)云的波動(dòng),刪除部分點(diǎn)以及添加額外的噪聲,網(wǎng)絡(luò)仍具有一定魯棒性,預(yù)測(cè)結(jié)果沒(méi)有大的影響。而且,網(wǎng)絡(luò)最終學(xué)習(xí)到的是目標(biāo)的少量關(guān)鍵點(diǎn),但是分布在目標(biāo)的骨干位置,能夠表征該目標(biāo)。
5. Experiment
??實(shí)驗(yàn)分為四個(gè)部分:(1)Sec 5.1 中展示了 PointNet 可以應(yīng)用于多個(gè)3D識(shí)別任務(wù)。(2)Sec 5.2 提供了詳細(xì)的實(shí)驗(yàn)分析結(jié)果,進(jìn)一步驗(yàn)證網(wǎng)絡(luò)的設(shè)計(jì)原理。(3)Sec 5.3 可視化了網(wǎng)絡(luò)學(xué)習(xí)的內(nèi)容是什么;(4)Sec 5.4 分析了時(shí)間和空間復(fù)雜度。
5.1. Applications
這一部分,我們展示了我們的網(wǎng)絡(luò)是如何成功應(yīng)用于3D目標(biāo)分類,目標(biāo)Part分割以及語(yǔ)義場(chǎng)景分割等任務(wù)。盡管我們的網(wǎng)絡(luò)在多個(gè)分布不同的數(shù)據(jù)集上訓(xùn)練,但是仍可以達(dá)到經(jīng)典網(wǎng)絡(luò)的水平,有些甚至超越了經(jīng)典算法。
3D Object Classification 我們的網(wǎng)絡(luò)學(xué)習(xí)全局的特征,可以用于目標(biāo)分類。我們?cè)?ModelNet40 上評(píng)估 PointNet 網(wǎng)絡(luò)。該數(shù)據(jù)集有12311個(gè)手工制作的CAD模型,總共40類,98443個(gè)模型用于訓(xùn)練,2468個(gè)用于測(cè)試。然而,之前的算法都是將原始CAD模型轉(zhuǎn)換為體素或者多視角圖像表達(dá),我們是第一個(gè)直接處理原始CAD點(diǎn)云模型。根據(jù)面片的面積,我們均勻采集1024個(gè)點(diǎn),并且歸一化到單位球。在訓(xùn)練過(guò)程中,我們對(duì)數(shù)據(jù)進(jìn)行增強(qiáng),包括沿著垂直軸隨機(jī)旋轉(zhuǎn)目標(biāo),以及給點(diǎn)添加均值為0,標(biāo)準(zhǔn)差為0.02的高斯噪聲。
在 Table 1 中,我們與之前的模型進(jìn)行對(duì)比,也包括我們的基準(zhǔn)模型(在傳統(tǒng)的特征上用 MLP 訓(xùn)練),這些傳統(tǒng)的特征包括點(diǎn)密度,D2,目標(biāo)輪廓等。在這些基于點(diǎn)云和體素輸入的方法中,我們的模型表現(xiàn)最好。因?yàn)閮H僅使用全連接層和最大池化層,我們的網(wǎng)絡(luò)具有更快的推理速度,并且很容易在CPU上并行運(yùn)算。當(dāng)然,我們的方法與MVCNN 仍有一些差距,可能是丟失了一些模型的幾何細(xì)節(jié),但是這些細(xì)節(jié)剛好能夠被多視角圖像捕捉。
3D Object Part Segmentation Part 相比于分類任務(wù),塊分割是一個(gè)更加精細(xì)的3D識(shí)別任務(wù),也具有更大的挑戰(zhàn)性。給定一個(gè)掃描模型或者網(wǎng)格模型,網(wǎng)絡(luò)會(huì)預(yù)測(cè)出目標(biāo)某個(gè)部位的分類(比如椅子腿,杯子手柄)等。
我們?cè)趤?lái)自論文【29】的 ShapeNet Part 數(shù)據(jù)集上評(píng)估,包含16881個(gè)形狀,總共16類,總共50個(gè)Part. 每一個(gè)目標(biāo)類大概標(biāo)注2-5個(gè)Part. 真實(shí)標(biāo)簽是在采樣點(diǎn)上標(biāo)注。
我們將 Part分割(Part Segmentation)任務(wù)轉(zhuǎn)換為逐點(diǎn)分類問(wèn)題,評(píng)估標(biāo)準(zhǔn)為 IoU 。對(duì)于類別C中的每一個(gè)shape,計(jì)算 IoU 的方式如下:對(duì)于類別C中的每一個(gè)分塊形狀,計(jì)算真實(shí)標(biāo)簽與預(yù)測(cè)值的 IoU . 如果真實(shí)標(biāo)簽與預(yù)測(cè)點(diǎn)的并集是空的(那么說(shuō)明,標(biāo)簽和預(yù)測(cè)的值都是空),那么 IoU 加1(不理解為什么要+1)。 然后,可以計(jì)算類別C中的所有 Part 的 IoU的平均值。 整個(gè)測(cè)試集所有類的平均交并比(mIoUs)也就是計(jì)算每一類的 mIoU 的平均值。
-
如何計(jì)算IoU?
下面是開(kāi)源代碼中【part_seg/test.py】中的代碼片段,用于計(jì)算一個(gè)目標(biāo)形狀的 IoU 值。這里解釋下為什么存在并集為空的情況(也就是n_gt值為0),比如椅子類,最大的分塊數(shù)量是4(統(tǒng)一編號(hào)見(jiàn)代碼中的注釋),但是有的椅子只有其中的任意3個(gè)分塊,那么可能存在其中一個(gè) oid(分塊的編號(hào))值不存在于seg(該椅子的真實(shí)分類標(biāo)簽編號(hào))中,那么 n_gt的值為零。
# 循環(huán)一個(gè)分類中每一個(gè)目標(biāo)的各個(gè)分塊(Part),數(shù)據(jù)集中總共有50個(gè)分塊, # 每一類都有固定的分塊編號(hào)(也就是塊的類別編號(hào)),比如椅子最多分為4個(gè) # 塊,編號(hào)為【12,13,14,15】 for oid in iou_oids: n_pred = np.sum(seg_pred_val == oid) n_gt = np.sum(seg == oid) n_intersect = np.sum(np.int32(seg == oid) * mask) n_union = n_pred + n_gt - n_intersect iou_log += '_' + str(n_pred)+'_'+str(n_gt)+'_'+str(n_intersect)+'_'+str(n_union)+'_' if n_union == 0: total_iou += 1 iou_log += '_1\n' else: total_iou += n_intersect * 1.0 / n_union iou_log += '_'+str(n_intersect * 1.0 / n_union)+'\n' avg_iou = total_iou / len(iou_oids) total_acc_iou += avg_iou total_per_cat_iou[cur_gt_label] += avg_iou
上述代碼片段的運(yùn)行結(jié)果,椅子的分塊編號(hào)為 iou_oids【12,13,14,15】,其中一個(gè)數(shù)據(jù)只有分塊【12,13,14】,另外只有【12,13,15】,這樣計(jì)算的并集就為空。
下面的兩張圖片是來(lái)自 ShapeNet Part 的椅子類(Chair),該類別最多被分為4個(gè)Part,當(dāng)然有的椅子是3個(gè)Part,有的是4個(gè)Part 等等。
在這一部分,我們將自己分割版本的 PointNet 與【27】和【29】(這兩個(gè)算法充分利用逐點(diǎn)的幾何特征和shapes之間的對(duì)應(yīng)關(guān)系)對(duì)比,以及和我們的 3DCNN 基準(zhǔn)。
下圖是補(bǔ)充材料給出的 3DCNN 的網(wǎng)絡(luò)結(jié)構(gòu):首先輸入點(diǎn)云體素化為【32x32x32】的體素塊;然后使用3D-CONV,核大小為【5x5x5】,卷積核數(shù)量為32個(gè);最后,由于要進(jìn)行Part分割任務(wù),使用一系列【1x1x1】的卷積核計(jì)算每個(gè)像素的分類分?jǐn)?shù)。除了最后一層,其它層都有【BN+ReLU】。
在 Table2 中,我們計(jì)算了每一類和所有類的平均 IoU 分?jǐn)?shù)。與之前的算法相比,我們的算法得到平均2.3%的 IoU 提升,并且我們的網(wǎng)絡(luò)在大部分類都優(yōu)于基準(zhǔn)方法。對(duì)于 ShapeNet Part 中的每一個(gè)CAD模型,我們模擬了Kinect的掃描方式,得到測(cè)試數(shù)據(jù),進(jìn)而評(píng)估算法的穩(wěn)定性。對(duì)于 ShapeNet Part 數(shù)據(jù)集中的每一個(gè)數(shù)據(jù),我們使用 Blensor Kinect Simulator模擬器隨機(jī)從六個(gè)不同的視角生成不完整的掃描數(shù)據(jù)。我們使用完整的shapes和模擬掃描的數(shù)據(jù)訓(xùn)練PointNet,訓(xùn)練參數(shù)設(shè)置一樣。結(jié)果顯示,平均IOU降低了5.3%. 在 Fig3 中,我們呈現(xiàn)了定性的結(jié)果。從結(jié)果可以看出,盡管數(shù)據(jù)殘缺是很有挑戰(zhàn)的,但是我們的預(yù)測(cè)也在合理范圍內(nèi)。
Semantic Segmentation in Scenes 我們的網(wǎng)絡(luò)很容易從 Part Segmentation 擴(kuò)展到 Semantic Scene Segmentation 分割任務(wù),只需將每一個(gè)點(diǎn)的標(biāo)簽從目標(biāo)Part類變?yōu)檎Z(yǔ)義類。
我們?cè)?Standford 3D Semantic Parsing 數(shù)據(jù)集上實(shí)驗(yàn)。該數(shù)據(jù)集包含 271 個(gè)房間。每個(gè)掃描數(shù)據(jù)的每一個(gè)點(diǎn)標(biāo)注有語(yǔ)義標(biāo)簽,總共 13 類(chair,table,floor,wall等等)。
為了準(zhǔn)備訓(xùn)練數(shù)據(jù),我們首先按照房間劃分點(diǎn),然后按照【1mx1m】的大小劃分每個(gè)房間。我們訓(xùn)練了 Segmentation 版本的PointNet,然后在每一個(gè)塊內(nèi)預(yù)測(cè)每一個(gè)點(diǎn)的類別。每一個(gè)點(diǎn)是個(gè)9維向量,包括XYZ,RGB和相對(duì)于整個(gè)房間的位置(范圍為0到1)。訓(xùn)練過(guò)程中,我們隨機(jī)從每一個(gè)塊中選擇4096個(gè)點(diǎn)。測(cè)試過(guò)程中,我們?cè)谒械狞c(diǎn)上測(cè)試。按照論文【1】的方式,我們使用K折交叉驗(yàn)證進(jìn)行訓(xùn)練和測(cè)試。
我們的方法與基于手工特征的基準(zhǔn)算法進(jìn)行對(duì)比?;鶞?zhǔn)算法包含同樣的9維局部特征以及另外三個(gè):局部點(diǎn)密度,局部曲率和法線。我們使用標(biāo)準(zhǔn)的MLP作為分類器。Table3 顯示,我們的方法明顯優(yōu)于基準(zhǔn)算法。Fig4 顯示的分割結(jié)果表明,我們的網(wǎng)絡(luò)能夠得到平滑的預(yù)測(cè)結(jié)果,對(duì)于丟失點(diǎn)和遮擋也有一定的穩(wěn)定性。
基于語(yǔ)義分割的輸出,我們使用連接模塊進(jìn)一步建立了3D目標(biāo)檢測(cè)系統(tǒng)(見(jiàn)補(bǔ)充材料)。Table4 中,我們比對(duì)了之前的經(jīng)典算法。之前的算法基于滑動(dòng)shape算法(CRF后處理),并添加多個(gè)SVM。我們的算法明顯更優(yōu),特別是在家具分類。
5.2. Architecture Design Analysis
這一部分我們將通過(guò)控制實(shí)驗(yàn)驗(yàn)證我們的設(shè)計(jì)選擇,并實(shí)驗(yàn)測(cè)試網(wǎng)絡(luò)參數(shù)的影響。
Comparison with Alternative Order-invariant Methods 正如 Sec 4.2 提到,至少有三種方法可以處理無(wú)序的輸入點(diǎn)云。我們使用 ModelNet40 形狀分類任務(wù)作為測(cè)試實(shí)驗(yàn)。
如 Fig5 所示,作為比對(duì)的基礎(chǔ)算法是將MLP應(yīng)用在有序輸入和無(wú)序輸入(Nx3數(shù)組),RNN將輸入點(diǎn)云看作是一個(gè)序列,以及基于對(duì)稱函數(shù)的模型。對(duì)稱性操作包含三種方式, max-pooling, average-pooling, attention based weighted sum. 注意力方法與論文【25】類似,每一個(gè)點(diǎn)特征預(yù)測(cè)一個(gè)標(biāo)量分?jǐn)?shù),然后使用softmax將所有的分?jǐn)?shù)歸一化?;邳c(diǎn)特征和歸一化分?jǐn)?shù),可以求權(quán)重和(weighted sum) 。如 Fig5 所示,最大池化的效果更好,也驗(yàn)證了我們的選擇。
Effectiveness of Input and Feature Transformations 在 Table5 中,我們證明了輸入和特征的變換(for alignment)是有意義的。有趣的是,大部分基礎(chǔ)結(jié)構(gòu)已經(jīng)獲得了不錯(cuò)的效果。使用輸入變換能夠提高0.8%. 對(duì)于高維特征變換,正則化損失是很有必要的。通過(guò)結(jié)合變換以及正則化項(xiàng),我們獲得了最好的結(jié)果。
Robustness Test 我們的網(wǎng)絡(luò)簡(jiǎn)單,高效,而且對(duì)于不同形式的輸入點(diǎn)集波動(dòng),網(wǎng)絡(luò)仍能保持很強(qiáng)的穩(wěn)定性。我們使用 Fig5 中同樣的最大池化網(wǎng)絡(luò)。輸入點(diǎn)集被歸一化到單位球鄰域,結(jié)果見(jiàn) Fig6 .
對(duì)于缺失點(diǎn)的情況,在最遠(yuǎn)點(diǎn)和隨機(jī)采樣算法下,當(dāng)點(diǎn)缺失50%時(shí),精度分別降低2.4%和3.8%. 如果能夠在訓(xùn)練中看到,我們的網(wǎng)絡(luò)對(duì)外點(diǎn)非常魯棒。我們?cè)u(píng)估了2個(gè)模型:(1)每一個(gè)點(diǎn)只有(x,y,z)坐標(biāo);(2)除了(x,y,z),還有點(diǎn)密度。盡管超過(guò)20%的點(diǎn)是外點(diǎn),網(wǎng)絡(luò)仍能夠達(dá)到80%的精度。 Fig6 右邊顯示了網(wǎng)絡(luò)對(duì)點(diǎn)集波動(dòng)的穩(wěn)定性。
5.3. Visualizing PointNet
在 Fig7 中,我們可視化了 一些目標(biāo)形狀
S
S
S 的 critical point sets(關(guān)鍵點(diǎn)集)
C
S
C_S
CS? 和 upper-bound shapes(上邊界形狀)
N
S
N_S
NS?. 那么,處于兩個(gè)shape之間的點(diǎn)集具有相同的全局形狀特征
f
(
S
)
f(S)
f(S).
我們可以清楚地從 Fig7 中看到 critical point sets C S C_S CS?,他們有助于形成最大池化特征,表征著形狀的骨骼點(diǎn)。而 upper-bound shapes N S N_S NS? 表示能夠得到同樣全局特征 f ( S ) f(S) f(S) 的最大輸入點(diǎn)集。 C S C_S CS? 和 N S N_S NS? 反映了 PointNet 的魯棒性,意味著丟失一些 non-critical points并不會(huì)更改全局特征。
N S N_S NS? 產(chǎn)生方式:將邊長(zhǎng)為2的立方體內(nèi)的點(diǎn)進(jìn)行前向推理,并選擇那些點(diǎn)函數(shù)值 ( h 1 ( p ) , h 2 ( p ) , . . . , h K ( p ) ) (h_1(p),h_2(p),...,h_K(p)) (h1?(p),h2?(p),...,hK?(p)) 的長(zhǎng)度不大于全局描述符的點(diǎn)。
5.4. Time and Space Complexity Analysis
Table6 給出了 PointNet 分類網(wǎng)絡(luò)的空間(number of parameters in the network)和時(shí)間(floating-point operations/sample)復(fù)雜度,并與之前經(jīng)典網(wǎng)絡(luò)進(jìn)行對(duì)比。
MVCNN 和 Subvolume(3D CNN)取得更好的效果, PointNet 計(jì)算效率更高,并且網(wǎng)絡(luò)參數(shù)更少。而且, PointNet 的擴(kuò)展性更好,相對(duì)于輸入點(diǎn)數(shù),時(shí)間和空間復(fù)雜度是 O ( N ) O(N) O(N)的線性增長(zhǎng)。 由于卷積占據(jù)大量的計(jì)算時(shí)間,多視角方法會(huì)隨著圖像數(shù)據(jù)量和圖像尺寸增加而迅速增大。
經(jīng)驗(yàn)上來(lái)說(shuō),對(duì)于點(diǎn)云分類, PointNet 可以每秒處理100萬(wàn)個(gè)點(diǎn)。對(duì)于語(yǔ)義分割,每秒可以處理2個(gè)房間,GPU為1080X,展現(xiàn)出能夠?qū)崟r(shí)處理的潛力。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-414635.html
6. Conclusion
在本文工作中,我們提出新的深度神經(jīng)網(wǎng)絡(luò)——PointNet ,可以直接處理點(diǎn)云。我們的網(wǎng)絡(luò)提供了統(tǒng)一的方法,可以處理目標(biāo)分類,Part分割以及語(yǔ)義分割等3D識(shí)別任務(wù),并且取得較好的預(yù)測(cè)結(jié)果,甚至優(yōu)于一些經(jīng)典算法。為了進(jìn)一步理解網(wǎng)絡(luò),我們提供了理論分析和可視化。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-414635.html
到了這里,關(guān)于PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!