0參數(shù)量 + 0訓(xùn)練,3D點(diǎn)云分析方法Point-NN刷新多項(xiàng)SOTA
- 論文鏈接:https://arxiv.org/pdf/2303.08134.pdf
- 代碼地址:https://github.com/ZrrSkywalker/Point-NN
本文提出了一個(gè)用于 3D 點(diǎn)云分析的非參數(shù)網(wǎng)絡(luò) Point-NN,它僅由純不可學(xué)習(xí)的組件組成:最遠(yuǎn)點(diǎn)采樣(FPS)、k 近鄰(k-NN)、三角函數(shù)(Trigonometric Functions)以及池化(Pooling)操作。不需要參數(shù)和訓(xùn)練,它能夠在各種 3D 任務(wù)上都取得不錯(cuò)的準(zhǔn)確率,甚至在 few-shot 分類上可以大幅度超越現(xiàn)有的完全訓(xùn)練的模型。
基于 Point-NN 的非參數(shù)框架,這項(xiàng)研究對(duì)于當(dāng)前 3D 領(lǐng)域的貢獻(xiàn)如下:
1、首先,我們可以通過(guò)插入簡(jiǎn)單的線性層,來(lái)構(gòu)建 Point-NN 的參數(shù)化網(wǎng)絡(luò),Point-PN。由于 Point-NN 具有強(qiáng)大的非參數(shù)基礎(chǔ),所構(gòu)建出的 Point-PN 僅需要少量可學(xué)習(xí)參數(shù)就可以表現(xiàn)出優(yōu)秀的 3D 分類和分割性能。
2、其次,由于 Point-NN 不需要訓(xùn)練的屬性,我們可以將其作為一個(gè)即插即用的增強(qiáng)模塊,去增強(qiáng)現(xiàn)有已經(jīng)訓(xùn)練好的 3D 模型。通過(guò)提供互補(bǔ)知識(shí),Point-NN 可以在各種 3D 任務(wù)上提升原本的 SOTA 性能。
一、引言
1. 動(dòng)機(jī)
3D 點(diǎn)云的處理和分析是一項(xiàng)具有挑戰(zhàn)性的任務(wù),并且在學(xué)術(shù)界和工業(yè)界都取得了廣泛的關(guān)注。自從 PointNet++ 起,后續(xù)的 3D 模型為了提升性能,一方面設(shè)計(jì)了更加復(fù)雜的局部空間算子,一方面增大了網(wǎng)絡(luò)的可學(xué)習(xí)參數(shù)量。然而,除了不斷更新的可學(xué)習(xí)模塊,他們基本都沿用了同一套潛在的多尺度網(wǎng)絡(luò)框架,包括最遠(yuǎn)點(diǎn)采樣(FPS)、k 近鄰(k-NN)和池化(Pooling)操作。目前,還幾乎沒(méi)有研究去探索這些非參數(shù)組件的潛力;因此,本文提出并探索了以下問(wèn)題:這些非參數(shù)組件對(duì)于 3D 理解的貢獻(xiàn)有多大??jī)H僅使用非參數(shù)組件,能否實(shí)現(xiàn)無(wú)需訓(xùn)練的 3D 點(diǎn)云分析?
2. 貢獻(xiàn)
為了解決以上問(wèn)題,本文首次提出了一個(gè)非參數(shù)化(Non-Parametric)的 3D 網(wǎng)絡(luò),Point-NN,整體結(jié)構(gòu)如上圖所示。Point-NN 由一個(gè)用于 3D 特征提取的非參數(shù)編碼器(Non-Parametric Encoder)和一個(gè)用于特定任務(wù)識(shí)別的點(diǎn)云記憶庫(kù)(Point-Memory Bank)組成。非參數(shù)編碼器采用了多階段的結(jié)構(gòu)設(shè)計(jì),使用了最遠(yuǎn)點(diǎn)采樣(FPS)、k 近鄰(k-NN)、三角函數(shù)(Trigonometric Functions)和池化(Pooling)來(lái)逐步聚合局部幾何圖形,為點(diǎn)云生成一個(gè)高維度的全局特征。我們僅僅采用了簡(jiǎn)單的三角函數(shù)來(lái)捕捉局部空間幾何信息,沒(méi)有使用任何可學(xué)習(xí)算子。接下來(lái),我們使用此編碼器,去提取到所有訓(xùn)練集點(diǎn)云的特征,并緩存為點(diǎn)云記憶庫(kù)。進(jìn)行測(cè)試時(shí),點(diǎn)云記憶庫(kù)通過(guò)對(duì)測(cè)試點(diǎn)云和訓(xùn)練集點(diǎn)云的特征,進(jìn)行相似度匹配,來(lái)輸出特定任務(wù)的預(yù)測(cè)。
不需要任何訓(xùn)練,Point-NN 可以在多種 3D 任務(wù)中實(shí)現(xiàn)優(yōu)越的性能,例如 3D 分類、分割、檢測(cè),甚至可以超過(guò)一些現(xiàn)有的經(jīng)過(guò)完全訓(xùn)練的模型?;诖耍覀冞M(jìn)一步提出了兩點(diǎn) Point-NN 對(duì)于現(xiàn)今 3D 領(lǐng)域的貢獻(xiàn),如下圖(a)和(b)所示:
圖片
1)以 Point-NN 為基礎(chǔ)框架,我們通過(guò)在 Point-NN 的每個(gè)階段插入簡(jiǎn)單的線性層,引入了其 parameter-efficient 的變體 Point-PN,如上圖 (a) 所示。Point-PN 不包含復(fù)雜的局部算子,僅僅包含線性層以及從 Point-NN 繼承的三角函數(shù)算子,實(shí)現(xiàn)了效率和性能的雙贏。
2)我們將 Point-NN 作為一個(gè)即插即用的模塊,為各種 3D 任務(wù)中訓(xùn)練好的模型提供互補(bǔ)知識(shí),并在推理過(guò)程中可以直接提升這些訓(xùn)練模型的性能,如上圖 (b) 所示。
二、方法
1.Point-NN
Point-NN 由一個(gè) Non-Parametric Encoder (EncNP) 和一個(gè) Point-Memory Bank (PoM) 組成。對(duì)于輸入的點(diǎn)云,我們使用 EncNP 提取其全局特征,并通過(guò) PoM 的特征相似度匹配,來(lái)輸出分類結(jié)果,公式如下圖所示:
圖片
接下來(lái),我們依次介紹 Point-NN 中的這兩個(gè)模塊。
(1)非參數(shù)編碼器 (Non-Parametric Encoder)
非參數(shù)編碼器首先將輸入點(diǎn)云進(jìn)行 Raw-point Embedding,將 3 維的原始點(diǎn)坐標(biāo)轉(zhuǎn)化為高維度特征,再經(jīng)過(guò) 4 個(gè)階段的 Local Geometry Aggregation 逐步聚合局部特征得到最終的點(diǎn)云全局特征,如下圖所示。
圖片
a. 原始點(diǎn)云映射 (Raw-point Embedding)
我們參考了 Transformer 中的 positional encoding,對(duì)于輸入點(diǎn)云的一個(gè)點(diǎn),利用三角函數(shù)將它嵌入到一個(gè)維向量中:
其中分別表示三個(gè)軸的位置編碼。以
為例,對(duì)于通道索引
,具體的位置編碼公式如下:
其中,α,β 分別控制了尺度和波長(zhǎng)。通過(guò)這種三角函數(shù)的編碼,我們可以將點(diǎn)云的絕對(duì)位置信息映射到高維度的特征空間中,并通過(guò)后續(xù)的點(diǎn)乘操作可以根據(jù)權(quán)重獲取不同點(diǎn)之間的相對(duì)位置信息,并捕獲三維形狀的細(xì)粒度結(jié)構(gòu)變化。
b. 局部幾何特征的聚合 (Local Geometry Aggregation)
對(duì)于每一個(gè)點(diǎn)云尺度的處理,我們分為三個(gè)步驟。
首先是特征擴(kuò)維 (Feature Expansion)。我們使用 FPS 進(jìn)行點(diǎn)云數(shù)量的下采樣,對(duì)于下采樣后得到的每一個(gè)中心點(diǎn),我們采用 k-NN 去找到他的 k 個(gè)鄰域點(diǎn)
以及對(duì)應(yīng)的特征
。基于此,我們將中心點(diǎn)特征
和
在特征維度進(jìn)行拼接,實(shí)現(xiàn)特征擴(kuò)維,這樣可以在更深的網(wǎng)絡(luò)層中編碼更多的語(yǔ)義信息:
其次是幾何信息提取 (Geometry Extraction)。我們先使用均值和標(biāo)準(zhǔn)差對(duì)的坐標(biāo)進(jìn)行歸一化,并使用三角函數(shù)進(jìn)行相對(duì)位置
的編碼,來(lái)獲取的相對(duì)幾何權(quán)重,標(biāo)記為
。之后,我們通過(guò)下面的公式得到加權(quán)后的鄰域特征
。
最后是局部特征聚和 (Feature Aggregation)。我們利用最大池化和平均池化來(lái)進(jìn)行局部特征聚合。
在完成 4 個(gè)階段的 Local Geometry Aggregation 后,我們?cè)俅芜\(yùn)用最大池化和平均池化來(lái)得到點(diǎn)云的全局特征。
(2)點(diǎn)云記憶庫(kù) (Point-Memory Bank)
在經(jīng)過(guò)非參數(shù)編碼器 (Non-Parametric Encoder) 的特征提取后,由于 Point-NN 不含任何可學(xué)習(xí)參數(shù),我們沒(méi)有使用傳統(tǒng)的可學(xué)習(xí)分類頭,而是采用了無(wú)需訓(xùn)練的 point-memory bank。首先,我們使用非參數(shù)編碼器去構(gòu)造關(guān)于訓(xùn)練集的 bank,接著在推理過(guò)程通過(guò)相似度匹配輸出預(yù)測(cè),如下圖所示。
a. 記憶構(gòu)建 (Memory Construction)
Point memory 包括一個(gè) feature memory和一個(gè) label memory
。以點(diǎn)云分類任務(wù)為例,假設(shè)給定的訓(xùn)練集包含 K 個(gè)類別的 N 個(gè)點(diǎn)云。通過(guò) Non-Parametric Encoder 可以得到 N 個(gè)訓(xùn)練集點(diǎn)云
的全局特征,同時(shí)將對(duì)應(yīng)的分類標(biāo)簽
轉(zhuǎn)換為 one-hot 編碼,接著將它們沿著樣本維度進(jìn)行拼接,緩存為兩個(gè)矩陣。
b. 基于相似度的預(yù)測(cè) (Similarity-based Prediction)
在推理階段,我們利用構(gòu)造好的 bank 進(jìn)行兩個(gè)矩陣乘法來(lái)完成分類。首先,我們通過(guò) Non-Parametric Encoder 來(lái)計(jì)算測(cè)試點(diǎn)云的全局特征,并計(jì)算與 feature memory
之間的余弦相似度。
圖片
接下來(lái),將 label memory 中的 one-hot 標(biāo)簽與
進(jìn)行加權(quán),越相似的 feature memory 對(duì)最終的分類 logits 貢獻(xiàn)越大,反之亦然。
通過(guò)這種基于相似性的計(jì)算,point-memory bank 可以在不經(jīng)過(guò)任何訓(xùn)練的情況下,學(xué)習(xí)到從訓(xùn)練集中提取的知識(shí),在推理過(guò)程自適應(yīng)地完成不同任務(wù)。
2.Point–NN 在其他 3D 任務(wù)的拓展
以上主要是對(duì) Point-NN 在分類任務(wù)中的應(yīng)用的介紹,Point-NN 也可以被用于 3D 的部件分割和 3D 目標(biāo)檢測(cè)任務(wù)。
(1)部件分割 (3D Part Segmentation)
與分類任務(wù)對(duì)全局特征進(jìn)行提取再進(jìn)行分類不同的是,部件分割需要對(duì)每個(gè)點(diǎn)進(jìn)行分類。因此,論文采用了一個(gè)接在 non-parametric encoder 后的對(duì)稱的 non-parametric decoder,進(jìn)行點(diǎn)云特征的上采樣,恢復(fù)至輸入時(shí)的點(diǎn)數(shù)量。具體來(lái)說(shuō),在 decoder 的每個(gè)階段,我們將局部中心點(diǎn)的特征通過(guò)相對(duì)位置加權(quán),來(lái)擴(kuò)散到周圍的領(lǐng)域點(diǎn)。對(duì)于 point-memory bank,首先使用 encoder 和 decoder 得到訓(xùn)練集的每個(gè)點(diǎn)的特征,為了節(jié)省顯存消耗,對(duì)于每一個(gè)物體,我們將每個(gè)部件的特征取平均值,再作為 feature memory 存入到 bank 中。
(2)目標(biāo)檢測(cè) (3D Object Detection)
對(duì)于檢測(cè)任務(wù),我們將 Point-NN 作為一個(gè) 3D 檢測(cè)器的分類頭使用。當(dāng)預(yù)訓(xùn)練好的檢測(cè)器產(chǎn)生 3D proposal 后,Point-NN 與分類任務(wù)相似,使用 non-parametric encoder 來(lái)獲取被檢測(cè)物體的全局特征。在構(gòu)建 point-memory bank 時(shí),我們?cè)谟?xùn)練集中對(duì)在每個(gè) 3D 框標(biāo)簽內(nèi)的點(diǎn)云進(jìn)行采樣,將采樣后的每個(gè)物體的全局特征進(jìn)行編碼得到 feature memory。特別的是,我們沒(méi)有像其他任務(wù)一樣對(duì)每個(gè)物體的點(diǎn)云坐標(biāo)進(jìn)行歸一化,這是為了保留在原始空間中的 3D 位置信息,實(shí)現(xiàn)更好的檢測(cè)性能。
3. 從 Point–NN 延伸 (Starting from Point-NN)
(1)作為結(jié)構(gòu)框架構(gòu)建 Point-PN (As Architectural Frameworks)
我們講 Point-NN 視為一個(gè)良好的非參數(shù)化框架,在其中插入簡(jiǎn)單的可學(xué)習(xí)線性層,來(lái)構(gòu)建參數(shù)化的 3D 網(wǎng)絡(luò),Point-PN。Point-PN 相比于現(xiàn)有的 3D 網(wǎng)絡(luò),不含有復(fù)雜的局部算子,以極少的可學(xué)習(xí)參數(shù)量實(shí)現(xiàn)了優(yōu)秀的 3D 性能。
圖片
我們構(gòu)建 Point-PN 的步驟如下:首先,將 point-memory bank 替換為傳統(tǒng)的可學(xué)習(xí)的分類頭,如上圖(A)所示;在 ModelNet40 的分類任務(wù)上,這一步將分類性能從 Point-NN 的 81.8% 提高到了 90.3%,且僅僅使用了 0.3M 的參數(shù)量。接著,我們將 raw-point embedding 替換為線性層(B),可以將分類性能進(jìn)一步提高到 90.8%。為了更好地提取多尺度層次特征,我們接著將線性層插入到每一階段的 non-parametric encoder 中。具體來(lái)說(shuō),在每個(gè)階段,兩個(gè)線性層分別被插入到 Geometry Extraction 的前后來(lái)捕捉高層空間信息,如圖中(C、D、E)所示。這樣,最終的 Point-PN 可以僅僅使用 0.8M 的參數(shù)量達(dá)到 93.8% 的性能,且只包括三角函數(shù)和簡(jiǎn)單的線性層。這說(shuō)明,與現(xiàn)有的高級(jí)的操作算子或者大參數(shù)兩相比,我們可以從非參數(shù)框架出發(fā),來(lái)獲取一個(gè)簡(jiǎn)單高效的 3D 模型。
(2)作為即插即用模塊 (As Plug-and-play Modules)
Point-NN 可以在不進(jìn)行額外訓(xùn)練的情況下增強(qiáng)現(xiàn)有 3D 預(yù)訓(xùn)練模型的性能。以分類任務(wù)為例,我們直接將 Point-NN 與預(yù)訓(xùn)練模型預(yù)測(cè)的分類 logits 進(jìn)行相加,來(lái)提供互補(bǔ)的 3D 知識(shí)提升性能。如下圖對(duì)特征的可視化所示,Point-NN 主要提取的是點(diǎn)云的低層次高頻特征,在尖銳的三維結(jié)構(gòu)周圍產(chǎn)生了較高的響應(yīng)值,例如飛機(jī)的翼尖、椅子的腿和燈桿;而經(jīng)過(guò)訓(xùn)練的 PointNet++ 更關(guān)注的是點(diǎn)云的高層次語(yǔ)義信息,通過(guò)對(duì)它們的 logits 相加可以得到互補(bǔ)的效果,例如,飛機(jī)的機(jī)身、椅子的主體和燈罩。
圖片
三、實(shí)驗(yàn)
1.Point-NN 和 Point-PN
(1)3D 物體分類 (Shape Classification)
圖片
對(duì)于 2 個(gè)代表性的 3D 物體分類數(shù)據(jù)集,ModelNet40 和 ScanObjectNN,Point-NN 都獲得了良好的分類效果,甚至能夠在 ScanObjectNN 上超過(guò)完全訓(xùn)練后的 3DmFV 模型。這充分說(shuō)明了 Point-NN 在沒(méi)有任何的參數(shù)或訓(xùn)練情況下的 3D 理解能力。
Point-PN 在 2 個(gè)數(shù)據(jù)集上也都取得了有競(jìng)爭(zhēng)力的結(jié)果。對(duì)于 ScanObjectNN,與 12.6M 的 PointMLP 相比,Point-PN 實(shí)現(xiàn)了參數(shù)量少 16 倍,推理速度快 6 倍,并且精度提升 1.9%。在 ModelNet40 數(shù)據(jù)集上,Point-PN 獲得了與 CurveNet 相當(dāng)?shù)慕Y(jié)果,但是少了 2.5X 的參數(shù)量,快了 6X 的推理速度。
(2)少樣本 3D 分類 (Few-shot Classification)
與現(xiàn)有的經(jīng)過(guò)完全訓(xùn)練的 3D 模型相比,Point-NN 的 few shot 性能顯著超過(guò)了第二好的方法。這是因?yàn)橛?xùn)練樣本有限,具有可學(xué)習(xí)參數(shù)的傳統(tǒng)網(wǎng)絡(luò)會(huì)存在嚴(yán)重的過(guò)擬合問(wèn)題。
(3)3D 部件分割 (Part Segmentation)
70.4% 的 mIoU 表明由 Point-NN 在分割任務(wù)中也可以產(chǎn)生執(zhí)行良好的單點(diǎn)級(jí)別的特征,并實(shí)現(xiàn)細(xì)粒度的 3D 空間理解。
Poinnt-PN 能夠取得 86.6% 的 mIoU。與 Curvenet 相比,Point-PN 可以節(jié)省 28 小時(shí)的訓(xùn)練時(shí)間,推理速度快 6X。
(4)3D 目標(biāo)檢測(cè) (3D Object Detection)
將 Point-NN 作為檢測(cè)器的分類頭,我們采用了兩種流行的 3D 檢測(cè)器 VoteNet 和 3DETR-m 來(lái)提取類別無(wú)關(guān)的 3D region proposals。由于我們沒(méi)有進(jìn)行點(diǎn)云坐標(biāo)的歸一化處理(w/o nor.),這樣可以保留原始場(chǎng)景中更多物體三維位置的信息,大大提升了 Point-NN 的 AP 分?jǐn)?shù)。
2.Point-NN 的即插即用 (Plug-and-play)
(1)3D 物體分類 (Shape Classification)
Point-NN 可以有效提高現(xiàn)有方法的分類性能,在 ScanObjectNN 數(shù)據(jù)集上,Point-NN 可以對(duì) PointNet 和 PoitMLP 的分類準(zhǔn)確率均提高 2%。
(2)3D 分割和檢測(cè) (Segmentation and Detection)
對(duì)于分割任務(wù),由于 ShapeNetPart 數(shù)據(jù)集上的測(cè)評(píng)指標(biāo)已經(jīng)比較飽和,Point-NN 對(duì) CurveNet 提升的 0.1% 已經(jīng)是很好的效果。對(duì)于檢測(cè)任務(wù),Point-NN 對(duì) 3DETR-m 的增強(qiáng)達(dá)到了很好的 1.02%和 11.05%
。
四、討論
1.為什么 Point-NN 中的三角函數(shù)可以編碼 3D 信息?
(1)捕獲高頻的 3D 結(jié)構(gòu)信息
通過(guò)下圖中 Point-NN 特征的可視化,以及我們分解出的點(diǎn)云低頻和高頻信息,可以觀察到 Point-NN 主要捕獲了點(diǎn)云的高頻空間特征,例如邊緣、拐角以及其它細(xì)粒度的細(xì)節(jié)。
圖片
(2)編碼點(diǎn)之間的相對(duì)位置信息
三角函數(shù)本身可以提供點(diǎn)云的絕對(duì)位置信息。對(duì)于兩個(gè)點(diǎn)和
,首先獲取它們的 C 維的位置編碼,公式如下:
而它們之前的相對(duì)位置關(guān)系可以通過(guò)它們之間的點(diǎn)乘得到,公式如下:
以 x 軸為例,
圖片
這個(gè)公式表示了 x 軸上兩個(gè)點(diǎn)之間的相對(duì)位置。因此,三角函數(shù)可以得到點(diǎn)云之間的絕對(duì)和相對(duì)位置信息,這更有利于 Point-NN 對(duì)局部化點(diǎn)云的結(jié)構(gòu)理解。
2.Point–NN 可以即插即用的提升 Point–PN 的性能嗎?
圖片
如上表所示,Point-NN 對(duì) Point-PN 的提升極其有限,從上圖可視化的結(jié)果來(lái)看,Point-NN 和 Point-PN 之間的互補(bǔ)性比 Point-NN 和 PointNet++ 之間的互補(bǔ)性更弱。這是因?yàn)?Point-PN 的基礎(chǔ)結(jié)構(gòu)是繼承自 Point-NN,因此也會(huì)通過(guò)三角函數(shù)獲取 3D 高頻信息,和 Point-PN 擁有相似的特征捕獲能力。
3.和其他無(wú)需訓(xùn)練的 3D 模型的比較
圖片
現(xiàn)有的 3D 模型中,有一類基于 CLIP 預(yù)訓(xùn)練模型的遷移學(xué)習(xí)方法,例如 PointCLIP 系列,它們也不需要進(jìn)行 3D 領(lǐng)域中的訓(xùn)練過(guò)程。從上表的比較可以看出,Point-NN 可以實(shí)現(xiàn)很優(yōu)越的無(wú)需訓(xùn)練的分類性能。
4.Point–NN 與 PnP–3D 的增強(qiáng)效果比較
PnP-3D 提出了一種對(duì)于 3D 模型的即插即用的可學(xué)習(xí)增強(qiáng)模塊,但是它會(huì)引入額外的可學(xué)習(xí)參數(shù),并且需要重新訓(xùn)練而消耗更多的計(jì)算資源。如上表所示,相比之下,Point-NN 也能實(shí)現(xiàn)相似的增強(qiáng)性能,但是完全不需要額外參數(shù)或者訓(xùn)練。
五、總結(jié)與展望
本文首次在 3D 領(lǐng)域中,提出了一個(gè)無(wú)參數(shù)無(wú)需訓(xùn)練的網(wǎng)絡(luò),Point-NN,并且在各個(gè) 3D 任務(wù)上都取得了良好的性能。我們希望這篇工作可以啟發(fā)更多的研究,來(lái)關(guān)注非參數(shù)化相關(guān)的 3D 研究,而不是一味的增加復(fù)雜的 3D 算子或者堆疊大量的網(wǎng)絡(luò)參數(shù)。在未來(lái)的工作中,我們將探索更加先進(jìn)的非參數(shù) 3D 模型,并推廣到更廣泛的 3D 應(yīng)用場(chǎng)景中。