3D 點(diǎn)云是一種不規(guī)則且無序的數(shù)據(jù)類型,傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)難以處理點(diǎn)云數(shù)據(jù)。來自俄勒岡州立大學(xué)機(jī)器人技術(shù)與智能系統(tǒng)(CoRIS)研究所的研究者提出了 PointConv,可以高效的對非均勻采樣的 3D 點(diǎn)云數(shù)據(jù)進(jìn)行卷積操作,該方法在多個數(shù)據(jù)集上實(shí)現(xiàn)了優(yōu)秀的性能。如將 CIFAR-10 數(shù)據(jù)轉(zhuǎn)換成點(diǎn)云,使用 PointConv 實(shí)現(xiàn)例如 AlexNet 和 VGG 結(jié)構(gòu)的網(wǎng)絡(luò),可以達(dá)到與傳統(tǒng) CNN 相似的性能。
一、背景
在機(jī)器人、自動駕駛和虛擬/增強(qiáng)現(xiàn)實(shí)應(yīng)用中,直接獲取 3D 數(shù)據(jù)的傳感器日趨普遍。由于深度信息可以消除 2D 圖像中的大量分割不確定性(segmentation ambiguity),并提供重要的幾何信息,因此具備直接處理 3D 數(shù)據(jù)的能力在這些應(yīng)用中非常寶貴。但 3D 數(shù)據(jù)通常以點(diǎn)云的形式出現(xiàn)。點(diǎn)云通常由一組無排列順序的 3D 點(diǎn)表示,每個點(diǎn)上具有或不具有附加特征(例如 RGB 信息)。由于點(diǎn)云的無序特性,并且其排列方式不同于 2D 圖像中的常規(guī)網(wǎng)格狀像素點(diǎn),傳統(tǒng)的 CNN 很難處理這種無序輸入。
本文提出了一種可以在非均勻采樣的 3D 點(diǎn)云數(shù)據(jù)上高效進(jìn)行卷積操作的方法。我們稱這種操作為 PointConv。PointConv 能夠在 3D 點(diǎn)云上構(gòu)建多層深度卷積網(wǎng)絡(luò),其功能與 2D CNN 在柵格圖像上的功能類似。但該結(jié)構(gòu)可實(shí)現(xiàn)與 2D 卷積網(wǎng)絡(luò)相同的平移不變性,以及點(diǎn)云中對點(diǎn)順序的置換不變性。在實(shí)驗(yàn)中,PointConv 可以在分類問題上的效果達(dá)到當(dāng)前最佳水平,同時,在 3D 點(diǎn)云的語義分割上能夠給出遠(yuǎn)超論文提交時的最優(yōu)的分割結(jié)果。為了說明 PointConv 可以實(shí)現(xiàn)真正的卷積操作,我們還在圖像分類數(shù)據(jù)庫 CIFAR-10 上進(jìn)行了測試。實(shí)驗(yàn)表明,PointConv 能夠達(dá)到類似于傳統(tǒng) CNN 的分類精度。
該研究的主要貢獻(xiàn)包括:
提出密度重加權(quán)卷積操作 PointConv,它能夠完全近似任意一組 3D 點(diǎn)集上的 3D 連續(xù)卷積。
通過改變求和順序,提出了 PointConv 的高效實(shí)現(xiàn)。
將 PointConv 擴(kuò)展到反卷積(PointDeconv),以獲得更好的分割結(jié)果。
二、PointConv
兩個連續(xù)函數(shù) f(x) 和 g(x) 關(guān)于一個 d 維向量 x 的卷積操作可以用下式表示:
由于圖像一般以固定的網(wǎng)格狀的矩陣形式存儲,因此在圖像上,卷積核通常在 3x3,5x5 的固定網(wǎng)格上實(shí)現(xiàn)。在 CNN 中,不同的鄰域采用同一個卷積核進(jìn)行卷積,從而實(shí)現(xiàn)平移不變性。由此可見,圖像上的卷積操作是連續(xù)卷積操作的一種特殊的離散化表示。
3D 點(diǎn)云數(shù)據(jù)的表達(dá)方式與圖像完全不同。如圖 1 所示,不同于圖像,3D 點(diǎn)云通常由一些 3D 點(diǎn)組成。3D 點(diǎn)之間沒有前后順序之分,因此,在 3D 點(diǎn)云上的卷積操作應(yīng)具有排列不變性,即改變 3D 點(diǎn)集中點(diǎn)順序不應(yīng)影響卷積結(jié)果。此外,點(diǎn)云上的卷積操作應(yīng)適應(yīng)于不同形狀的鄰域。
為滿足這些要求,在 3D 空間中,可以把連續(xù)卷積算子的權(quán)重看作關(guān)于一個 3D 參考點(diǎn)的局部坐標(biāo)的連續(xù)函數(shù)。如下式所示:
其中,W 和 F 均為連續(xù)函數(shù),(x, y, z) 是 3D 參考點(diǎn)的坐標(biāo),(δx,δy,δz) 表示鄰域 G 中的 3D 點(diǎn)的相對坐標(biāo)。(2) 式可以離散化到一個離散的 3D 點(diǎn)云上。同時,考慮到 3D 點(diǎn)云可能來自于一個不均勻采樣的傳感器,為了補(bǔ)償不均勻采樣,我們提出使用逆密度對學(xué)到的權(quán)重進(jìn)行加權(quán)。PointConv 可以由下式表示,
其中,S 表示逆密度系數(shù)函數(shù)。連續(xù)函數(shù) W 可以用多層感知器(MLP)近似。函數(shù) W 的輸入是以 (x, y, z) 為中心的 3D 鄰域內(nèi)的 3D 點(diǎn)的相對坐標(biāo),輸出是每個點(diǎn)對應(yīng)的特征 F 的權(quán)重。S 是一個關(guān)于密度的函數(shù),輸入是每個點(diǎn)的密度,輸出是每個點(diǎn)對應(yīng)的逆密度系數(shù)。這個非線性的函數(shù)同樣可以用一個多層感知機(jī)近似。
圖 3 展示了在一個由 K 個 3D 點(diǎn)組成的鄰域上進(jìn)行 PointConv 的流程。圖中,C_in 和 C_out 表示輸入和輸出的特征的維度,k, c_in, c_out 表示索引。對于 PointConv 來說,輸入由三部分組成:3D 點(diǎn)的相對坐標(biāo) P_local,密度 Density 和特征 F_in。3D 點(diǎn)的相對坐標(biāo) P_local 經(jīng)過連續(xù)函數(shù) MLP1 之后可以得到對應(yīng)的每一個點(diǎn)的特征的權(quán)重 W;而密度 Density 經(jīng)過 MLP2 之后得到逆密度系數(shù) S;在得到權(quán)重 W, 逆密度系數(shù) S 以及輸入的特征 F 之后,可以利用下式進(jìn)行卷積,以得到輸出特征 F_out:
PointConv 通過學(xué)習(xí)連續(xù)的卷積核函數(shù),適應(yīng)了 3D 點(diǎn)云的不規(guī)則的特性,實(shí)現(xiàn)了置換不變性,使得卷積操作由傳統(tǒng)的圖像擴(kuò)展到了 3D 點(diǎn)云領(lǐng)域。
三、高效 PointConv
最初版本的 PointConv 實(shí)現(xiàn)起來內(nèi)存消耗大、效率低。為了解決這些問題,我們提出了一種新型重構(gòu)方法,將 PointConv 簡化為兩個標(biāo)準(zhǔn)操作:矩陣乘法和 2D 卷積。這個新技巧不僅利用了 GPU 的并行計(jì)算優(yōu)勢,還可以通過主流深度學(xué)習(xí)框架輕松實(shí)現(xiàn)。由于逆密度尺度沒有這樣的內(nèi)存問題,所以下面的討論主要集中在權(quán)重函數(shù) W 上。
1. 內(nèi)存問題的產(chǎn)生
具體來說,令 B 為訓(xùn)練階段的 mini-batch 大小,N 為點(diǎn)云中的點(diǎn)數(shù),K 為每個局部區(qū)域的點(diǎn)數(shù),C_in 為輸入通道數(shù),C_out 為輸出通道數(shù)。對于點(diǎn)云,每個局部區(qū)域共享相同的權(quán)重函數(shù),這些可以通過 MLP 學(xué)習(xí)得到。但不同點(diǎn)處的權(quán)重函數(shù)計(jì)算出的權(quán)重是不同的。由 MLP 生成的權(quán)重參數(shù)張量的尺寸為 B×N×K×(C_in×C_out)。假設(shè) B = 32,N = 512,K = 32,C_in = 64,C_out = 64,并且權(quán)重參數(shù)以單精度存儲,一層網(wǎng)絡(luò)則需要 8GB 的內(nèi)存。如此高的內(nèi)存消耗將使網(wǎng)絡(luò)很難訓(xùn)練。[31] 使用非常小的網(wǎng)絡(luò)和少數(shù)的濾波器,這顯著降低了其性能。
2. 高效的 PointConv
為了解決前面提到的內(nèi)存問題,我們提出了一個基于 Lemma 1 的內(nèi)存高效版 PointConv,這也是本文最重要的貢獻(xiàn)。
具體的證明可以參考原論文。根據(jù) Lemma 1 重新實(shí)現(xiàn) PointConv,可實(shí)現(xiàn)完全相同的卷積操作,但大大減少內(nèi)存消耗。采用 1 中相同的配置,單層卷積操作的內(nèi)存占用將由 8G 縮小為 0.1G 左右,變?yōu)樵瓉淼?1/64. 圖 5 展示了高效的 PointConv 卷積操作。
四、反卷積操作
在分割任務(wù)中,將信息從粗糙層傳遞到精細(xì)層的能力非常重要。由于 PointConv 可以實(shí)現(xiàn)標(biāo)準(zhǔn)卷積操作,因此將 PointConv 擴(kuò)展為 PointDeconv 是很順理成章的。PointDeconv 由兩部分組成:插值和 PointConv。首先,使用一個線性插值算法來得到精細(xì)層的特征的初始值,再在精細(xì)層上進(jìn)行一個 PointConv 進(jìn)行優(yōu)化特征,從而獲得較高精度的特征值。圖 4 展示了反卷積操作的具體流程。
五、實(shí)驗(yàn)
為了說明 PointConv 的有效性,我們在常用的 3D 點(diǎn)云數(shù)據(jù)庫上進(jìn)行了測試,包括 ModelNet40,ShapeNet 和 ScanNet. 同時,為了說明 PointConv 是可以和圖像 CNN 進(jìn)行等價,我們在 CIFAR10 上進(jìn)行了測試。這里我們重點(diǎn)介紹在 ScanNet 上的測試結(jié)果,更多實(shí)驗(yàn)結(jié)果請參考論文原文。如表 3 所示,僅使用 4 層 PointConv 網(wǎng)絡(luò),即可在場景的的語義分割測試中達(dá)到遠(yuǎn)好于其他算法的效果,達(dá)到了當(dāng)前最優(yōu)水平。圖 7 給出了室內(nèi)場景語義分割的一些可視化結(jié)果。
為了說明 PointConv 可以等價于圖像上的 CNN,我們在 CIFAR10 上進(jìn)行了測試。首先,將 CIFAR10 的圖像像素轉(zhuǎn)變?yōu)榫W(wǎng)格狀排列的點(diǎn)云,再使用 PointConv 進(jìn)行分類。表格 4 給出了 PointConv 與其他 3D 點(diǎn)云算法和圖像 CNN 的分類精度對比??梢钥吹?,5 層的 PointConv 可以達(dá)到和 AlexNet(5 層 CNN)相似的精度,同時,PointConv(VGG) 也可以達(dá)到和 VGG 相似的分類精度。與此同時,其他的 3D 點(diǎn)云算法,如 PointCNN 等,則僅能取得 80% 左右的分類精度。這項(xiàng)實(shí)驗(yàn)說明了 PointConv 可以取得與圖像 CNN 同等水平的學(xué)習(xí)效果。
論文:PointConv: Deep Convolutional Networks on 3D Point Clouds
論文地址:https://arxiv.org/pdf/1811.07246.pdf
代碼地址:https://github.com/DylanWusee/pointconv
摘要:與使用常規(guī)密集網(wǎng)格表示的圖像不同,3D 點(diǎn)云是不規(guī)則且無序的,因此對它們執(zhí)行卷積存在困難。在本文中,我們將動態(tài)濾波器擴(kuò)展為一個名為 PointConv 的新型卷積操作。PointConv 可以在點(diǎn)云上構(gòu)建深度卷積網(wǎng)絡(luò)。我們將卷積核看作 3D 點(diǎn)局部坐標(biāo)的非線性函數(shù),該函數(shù)由權(quán)重和密度函數(shù)組成。對于給定點(diǎn),利用多層感知器網(wǎng)絡(luò)學(xué)習(xí)權(quán)重函數(shù),通過核密度估計(jì)學(xué)習(xí)密度函數(shù)。為了高效地計(jì)算權(quán)重函數(shù),我們提出了一種新型計(jì)算方法,使網(wǎng)絡(luò)規(guī)模顯著擴(kuò)大,性能顯著提高。學(xué)習(xí)到的卷積核可用于計(jì)算 3D 空間中任何點(diǎn)集上的平移不變卷積和置換不變卷積。此外,PointConv 還可以用作反卷積算子,將從子采樣點(diǎn)云中提取的特征傳遞回原始分辨率。在 ModelNet40、ShapeNet 和 ScanNet 上的實(shí)驗(yàn)表明,基于 PointConv 構(gòu)建的深度卷積神經(jīng)網(wǎng)絡(luò)在 3D 點(diǎn)云上執(zhí)行操作時能夠在具有挑戰(zhàn)性的語義分割基準(zhǔn)上實(shí)現(xiàn)當(dāng)前最優(yōu)結(jié)果。此外,將 CIFAR-10 轉(zhuǎn)換為點(diǎn)云的實(shí)驗(yàn)表明,基于 PointConv 構(gòu)建的網(wǎng)絡(luò)性能堪比在類似結(jié)構(gòu)的 2D 圖像中執(zhí)行操作的卷積網(wǎng)絡(luò)。