云南旅游網(wǎng)站建設/亞馬遜關(guān)鍵詞優(yōu)化軟件
Abstract
PointNet++ 是點云理解領(lǐng)域最有影響力的神經(jīng)網(wǎng)絡架構(gòu)之一。雖然近期出現(xiàn)了 PointMLP 和 Point Transformer 等新型網(wǎng)絡,它們的精度已經(jīng)大大超過了 PointNet++,但我們發(fā)現(xiàn)大部分性能提升是由于改進的訓練策略,例如數(shù)據(jù)增強和優(yōu)化技術(shù)以及增加的模型大小,而不是由于架構(gòu)創(chuàng)新。因此,PointNet++ 的全部潛力尚未被充分發(fā)掘。在本研究中,我們通過系統(tǒng)性的模型訓練和縮放策略對經(jīng)典的 PointNet++ 進行了重新審視,并提出了兩個主要貢獻。首先,我們提出了一組改進的訓練策略,顯著提高了 PointNet++ 的性能。例如,我們展示了在不改變架構(gòu)的情況下,PointNet++ 在 ScanObjectNN 對象分類任務上的整體準確率(OA)可以從 77.977.9 %77.9 提高到 86.186.1 %86.1,甚至超過了最先進的 PointMLP。其次,我們將倒置殘差瓶頸設計和可分離 MLP 引入到 PointNet++ 中,實現(xiàn)了高效和有效的模型縮放,并提出了 PointNeXt,即 PointNets 的下一版本。PointNeXt 可以靈活地進行擴展,并在 3D 分類和分割任務上優(yōu)于最先進的方法。在分類任務中,PointNeXt 在 ScanObjectNN 上達到了 87.787.7 %87.7 的整體準確率,比 PointMLP 高 2.32.3 %2.3,并且推理速度是其 101010 倍。在語義分割任務中,PointNeXt 在 S3DIS 上實現(xiàn)了新的最先進性能,均值 IoU 達到 74.974.9 %74.9(6 折交叉驗證),優(yōu)于最近的 Point Transformer。代碼和模型可在 https://github.com/guochengqian/pointnext 上獲取。
1 Introduction
近年來,三維數(shù)據(jù)采集技術(shù)的進步導致點云理解領(lǐng)域興起了一股熱潮。隨著 PointNet [29] 和 PointNet++ [30] 的興起,使用深度卷積神經(jīng)網(wǎng)絡處理未經(jīng)結(jié)構(gòu)化的點云數(shù)據(jù)成為了可能。在 “PointNets” 之后,許多基于點云的網(wǎng)絡被引入,其中大部分專注于開發(fā)新的、精密的模塊來提取局部結(jié)構(gòu),如 KPConv 中的偽網(wǎng)格卷積 [43] 和 Point Transformer 中的自注意力層 [56]。這些新提出的方法在各種任務中都大幅優(yōu)于 PointNet++,給人留下了 PointNet++ 架構(gòu)過于簡單、難以學習復雜的點云表示的印象。在本研究中,我們重新審視了經(jīng)典且廣泛使用的 PointNet++ 網(wǎng)絡,并發(fā)現(xiàn)它的全部潛力尚未被充分發(fā)掘,主要原因是 PointNet++ 時代缺少了兩個因素:(1)更優(yōu)秀的訓練策略和(2)有效的模型縮放策略。
通過對各種基準測試的全面實證研究,例如用于對象分類的ScanObjecNN [44]和用于語義分割的S3DIS [1],我們發(fā)現(xiàn)訓練策略,即數(shù)據(jù)增強和優(yōu)化技術(shù),在網(wǎng)絡性能中起著重要作用。事實上,現(xiàn)有最先進(SOTA)方法[46,43,56][46,43,56][46,43,56]相對于PointNet++ [30]的性能提升很大程度上是由于改進的訓練策略,不幸的是,與體系結(jié)構(gòu)的變化相比,這些策略不太被人所知。例如,訓練過程中隨機丟棄顏色可以意外地提高PointNet++在S3DIS [1]上的測試性能5.95.9%5.9平均交并比(mIoU),如表5所示。此外,采用標簽平滑[39]可以將ScanObjectNN [44]的整體準確度(OA)提高1.31.3%1.3。這些發(fā)現(xiàn)激勵我們重新審視PointNet++并為其配備今天廣泛使用的新高級訓練策略。令人驚訝的是,如圖1所示,僅利用改進的訓練策略就將PointNet++的OA在ScanObjectNN上提高了8.28.2%8.2(從77.977.9%77.9提高到86.186.1%86.1),在不引入任何架構(gòu)更改的情況下建立了新的SOTA(詳見第4.4.1節(jié))。對于S3DIS分割基準測試,通過6倍交叉驗證在所有區(qū)域評估的mIoU可以增加13.613.6%13.6(從54.554.5%54.5提高到68.168.1%68.1),超越了許多在PointNet++之后的現(xiàn)代架構(gòu),例如PointCNN [22]和DeepGCN [21]。
圖1:訓練策略和模型擴展對PointNet++[30]的影響。我們展示了改進的訓練策略(數(shù)據(jù)增強和優(yōu)化技術(shù))和模型擴展可以顯著提高PointNet++的性能。我們在ScanObjectNN [44]和S3DIS [1]上報告平均的整體精度和mIoU(6倍交叉驗證)。
此外,我們觀察到目前用于點云分析的主流模型 [20,43,56][20,43,56][20,43,56] 比最初的 PointNets [29,30][29,30][29,30] 使用了更多的參數(shù)。有效地將 PointNet++ 從原來的小規(guī)模擴展到大規(guī)模是值得研究的一個主題,因為更大的模型通常能夠?qū)崿F(xiàn)更豐富的表示并表現(xiàn)更好 [2,19,55][2,19,55][2,19,55]。然而,我們發(fā)現(xiàn)在 PointNet++ 中簡單地使用更多的構(gòu)建塊或增加通道大小只會導致延遲的增加,而不會顯著提高準確性(請參見第 4.4.2 節(jié))。為了實現(xiàn)有效和高效的模型擴展,我們將殘差連接 [13]、反向瓶頸設計 [36] 和可分離的 MLPs [32] 引入到 PointNet++ 中?,F(xiàn)代化的架構(gòu)被命名為 PointNeXt,是 PointNets 的下一個版本。PointNeXt 可以靈活擴展,并在各種基準測試中優(yōu)于 SOTA。正如圖 1 所示,PointNeXt 在 S3DIS [1] 6-fold 上將原始的 PointNet++ 提高了 20.420.4 %20.4 的 mIoU(從 54.554.5 %54.5 提高到 74.974.9 %74.9),并在 ScanObjecNN [44] 上實現(xiàn)了 9.89.8 %9.8 的 OA 增益,超過了 SOTA 的 Point Transformer [56] 和 PointMLP [28]。我們接下來總結(jié)我們的貢獻:
- 我們首次對點云領(lǐng)域的訓練策略進行了系統(tǒng)研究,并表明僅僅采用改進的訓練策略就能使PointNet++在ScanObjectNN上的OA增加8.2%,在S3DIS上的mIoU增加13.6%,PointNet++在這些任務上成功反擊了。這些改進的訓練策略具有普適性,可以輕松應用于改進其他方法[29, 46, 28]。
- 我們提出了PointNeXt,PointNets的下一個版本。PointNeXt具有可擴展性,超過了所有研究任務的SOTA,包括對象分類[44, 49],語義分割[1, 5]和部分分割[53],同時在推理速度方面也優(yōu)于SOTA。
2 Preliminary: A Review of PointNet++
我們的PointNeXt是基于PointNet++ [30]構(gòu)建的,它使用了類似U-Net [35]的編碼器和解碼器結(jié)構(gòu),如圖2所示。編碼器部分使用一系列集合抽象(SA)塊,以分層方式對點云特征進行抽象;而解碼器通過相同數(shù)量的特征傳播塊逐步插值抽象的特征。SA塊包括一個下采樣層以降采樣輸入點,一個分組層以查詢每個點的鄰居,一組共享的多層感知機(MLPs)以提取特征,以及一個減少層以在鄰居內(nèi)聚合特征。分組層、MLPs和減少層的組合形式為:
xil+1=Rj:(i,j)∈N{hΘ([xjl;pjl?pil])}(1)\mathbf{x}_i^{l+1}=\mathcal{R}_{j:(i, j) \in \mathcal{N}}\left\{h_{\boldsymbol{\Theta}}\left(\left[\mathbf{x}_j^l ; \mathbf{p}_j^l-\mathbf{p}_i^l\right]\right)\right\} \tag1 xil+1?=Rj:(i,j)∈N?{hΘ?([xjl?;pjl??pil?])}(1)
其中,R\mathcal{R}R 是縮減層(例如最大池化層),用于聚合點 iii 的鄰居特征,表示為 j:(i,j)∈N{j:(i, j) \in \mathcal{N}}j:(i,j)∈N。pil,xil,xjl\mathbf{p}_i^l, \mathbf{x}_i^l, \mathbf{x}j^lpil?,xil?,xjl 分別是網(wǎng)絡第 lll 層中輸入坐標、輸入特征和鄰居 jjj 的特征。hΘh{\Theta}hΘ 表示共享的 MLP,將 xjl\mathbf{x}_j^lxjl? 和相對坐標 (pjl?pil)\left(\mathbf{p}_j^l-\mathbf{p}_i^l\right)(pjl??pil?) 的連接作為輸入。需要注意的是,由于使用單尺度分組的 PointNet++ 是原論文中使用的默認架構(gòu),即每個階段使用一個 SA 塊,因此我們在整個論文中都將其稱為 PointNet++ 并將其用作我們的基線。
3 Methodology: From PointNet++ to PointNeXt
在本節(jié)中,我們介紹了如何將經(jīng)典架構(gòu)PointNet++[30]現(xiàn)代化為具有SOTA性能的下一代PointNet++:PointNeXt。我們的研究主要集中在兩個方面:(1)現(xiàn)代化的訓練方法,以改進數(shù)據(jù)增強和優(yōu)化技術(shù),以及(2)現(xiàn)代化的架構(gòu),以探究感受野的縮放和模型的縮放。這兩個方面都對模型的性能有重要影響,但以前的研究還沒有很好地探討這些問題。
3.1 Training Modernization: PointNet++ Strikes Back
我們進行了系統(tǒng)性研究,量化了現(xiàn)代點云網(wǎng)絡([46,43,56][46,43,56][46,43,56])使用的每種數(shù)據(jù)增強和優(yōu)化技術(shù)的影響,并提出了一組改進的訓練策略。采用我們提出的訓練策略可以揭示出 PointNet++ 的潛力。
3.1.1 Data Augmentation
數(shù)據(jù)增強是提高神經(jīng)網(wǎng)絡性能的最重要策略之一,因此我們從那里開始進行現(xiàn)代化。原始的PointNet ++在各種基準測試中使用了隨機旋轉(zhuǎn)、縮放、平移和抖動的簡單數(shù)據(jù)增強組合[30]。近期的方法采用比PointNet++中使用的更強的增強策略。例如,KPConv [43] 在訓練期間隨機丟棄顏色,Point-BERT [54] 使用常見的點重采樣策略從原始點云中隨機采樣1024個點進行數(shù)據(jù)縮放,而RandLA-Net [15]和Point Transformer [56]在分割任務中將整個場景作為輸入。在本文中,我們通過添加性研究量化了每種數(shù)據(jù)增強的效果。
我們從PointNet++ [30]作為基線開始我們的研究,該基線使用原始的數(shù)據(jù)增強和優(yōu)化技術(shù)進行訓練。我們逐個移除每個數(shù)據(jù)增強以檢查其是否必要。我們添加回有用的增強但移除不必要的增強。然后,我們系統(tǒng)地研究了代表性工作 [46, 43, 32, 56, 28, 54] 中使用的所有數(shù)據(jù)增強,包括數(shù)據(jù)縮放,如點重采樣[54]和將整個場景加載為輸入[15],隨機旋轉(zhuǎn)、隨機縮放、平移以移動點云、抖動以為每個點添加獨立噪聲、高度附加[43](即將沿物體重力方向的每個點的測量附加為附加輸入特征)、自動對比度調(diào)整顏色對比度[56]和顏色隨機丟棄,將顏色隨機替換為零值。我們逐步驗證數(shù)據(jù)增強的有效性,并僅保留提供更好驗證準確性的增強。在此研究的結(jié)尾,我們提供了每個任務的數(shù)據(jù)增強集合,以實現(xiàn)模型性能的最大提升。第4.4.1節(jié)詳細介紹和分析了發(fā)現(xiàn)的結(jié)果。
3.1.2 Optimization Techniques
優(yōu)化技術(shù)包括損失函數(shù)、優(yōu)化器、學習率調(diào)度器和超參數(shù),對神經(jīng)網(wǎng)絡的性能也至關(guān)重要。 PointNet++ 在其實驗中使用相同的優(yōu)化技術(shù):CrossEntropy 損失函數(shù),Adam 優(yōu)化器 [16],指數(shù)學習率衰減(Step Decay)和相同的超參數(shù)。由于機器學習理論的發(fā)展,現(xiàn)代神經(jīng)網(wǎng)絡可以使用理論上更好的優(yōu)化器(例如AdamW [27] v s Adam [16])和更高級的損失函數(shù)(具有標簽平滑的CrossEntropy [39])。類似于我們對數(shù)據(jù)增強的研究,我們還量化了每種現(xiàn)代優(yōu)化技術(shù)對 PointNet++ 的影響。我們首先對學習率和權(quán)重衰減進行順序超參數(shù)搜索。然后,我們對標簽平滑、優(yōu)化器和學習率調(diào)度器進行了逐步研究。我們發(fā)現(xiàn)了一組改進的優(yōu)化技術(shù),進一步提高了性能??偟膩碚f,帶有標簽平滑的CrossEntropy、AdamW和Cosine Decay可以在各種任務中相對優(yōu)化模型的表現(xiàn)。有關(guān)詳細結(jié)果,請參見第4.4.1節(jié)。
圖2:PointNeXt架構(gòu)。PointNeXt與PointNet++ [30]共享相同的Set Abstraction和Feature Propagation塊,同時在開頭添加了一個額外的MLP層,并使用提出的倒置殘差MLP(InvResMLP)塊來擴展架構(gòu)。
3.2 Architecture Modernization: Small Modifications → Big Improvement
在這個小節(jié)中,我們將 PointNet++ [30] 現(xiàn)代化成提出的 PointNeXt。這個現(xiàn)代化包含兩個方面:(1)感受野尺度的縮放和(2)模型尺度的縮放。
3.2.1 Receptive Field Scaling
在神經(jīng)網(wǎng)絡設計空間中,感受野是一個重要的因素[38,7]。在點云處理中,至少有兩種方法可以擴大感受野:(1)采用更大的半徑來查詢鄰域,和(2)采用分層結(jié)構(gòu)。由于分層結(jié)構(gòu)已經(jīng)被原始的PointNet++采用,因此我們主要在本小節(jié)中研究(1)。需要注意的是,PointNet++的半徑設置為一個初始值rrr,當點云下采樣時翻倍。我們在每個基準測試中研究不同的初始值,發(fā)現(xiàn)半徑是特定于數(shù)據(jù)集的,對性能有重大影響。這將在4.4.2節(jié)中詳細闡述。
此外,我們發(fā)現(xiàn)方程(1)中的相對坐標Δp=pjl?pil\Delta_p = \mathbf{p}_j^l-\mathbf{p}_i^lΔp?=pjl??pil?使網(wǎng)絡優(yōu)化更加困難,導致性能下降。因此,我們提出相對位置歸一化(Δp\Delta_pΔp? 歸一化),將相對位置除以鄰域查詢半徑:
xil+1=Rj:(i,j)∈N{hΘ([xjl;(pjl?pil)/rl])}.(2)\mathbf{x}_i^{l+1}=\mathcal{R}_{j:(i, j) \in \mathcal{N}}\left\{h_{\boldsymbol{\Theta}}\left(\left[\mathbf{x}_j^l ;\left(\mathbf{p}_j^l-\mathbf{p}_i^l\right) / r^l\right]\right)\right\} . \tag2 xil+1?=Rj:(i,j)∈N?{hΘ?([xjl?;(pjl??pil?)/rl])}.(2)
沒有歸一化時,相對位置的值(Δp=pjl?pil\Delta_p=\mathbf{p}_j^l-\mathbf{p}_i^lΔp?=pjl??pil?)非常小(小于半徑),需要網(wǎng)絡學習更大的權(quán)重來應用于 Δp\Delta_pΔp?。這使得優(yōu)化變得非常困難,特別是由于使用了權(quán)重衰減以減少網(wǎng)絡的權(quán)重,因此容易忽略相對位置的影響。所提出的歸一化通過重新縮放來減輕了這個問題,并同時減少了不同階段 Δp\Delta_pΔp? 的方差。
3.2.2 Model Scaling
PointNet++ 是一個相對較小的網(wǎng)絡,在分類結(jié)構(gòu)中編碼器僅由 2 個階段組成,而在分割中為 4 個階段。每個階段僅包含 1 個 SA 塊,每個塊包含 3 層 MLP。PointNet++ 的模型大小用于分類和分割都小于 222M,這與通常使用超過 101010M 參數(shù)的現(xiàn)代網(wǎng)絡相比要小得多。有趣的是,我們發(fā)現(xiàn),即使附加更多的 SA 塊或使用更多的通道,也不會導致明顯的精度提高,而會導致吞吐量顯著下降(請參見第 4.4.2 節(jié)),主要原因是梯度消失和過擬合。因此,在本小節(jié)中,我們研究如何有效且高效地擴展 PointNet++。
我們提出了反向殘差多層感知機(InvResMLP)塊,以實現(xiàn)有效和高效的模型擴展。在每個階段的第一個SA塊之后追加InvResMLP塊,其結(jié)構(gòu)如圖2中間下方所示。InvResMLP與SA之間有三個不同之處。 (1)添加了輸入和輸出之間的殘差連接,以減輕梯度消失問題[13],特別是當網(wǎng)絡更深時。 (2)引入可分離的MLP以減少計算量并增強點特征提取。盡管原始SA塊中的所有3個MLP層都是在鄰域特征上計算的,InvResMLP將MLP分成一層計算鄰域特征(在分組和縮減層之間)和兩層計算點特征(在縮減層之后),受MobileNet [14]和ASSANet [32]啟發(fā)。 (3)利用倒置瓶頸設計[36]將第二個MLP的輸出通道擴展4倍,以豐富特征提取。追加InvResMLP塊被證明可以顯著提高性能,相比追加原始SA塊而言(請參見第4.4.2節(jié))。
此外,我們在宏觀架構(gòu)上提出了三個變化。 (1) 我們統(tǒng)一了 PointNet++ 分類和分割編碼器的設計,即將分類的 SA 塊數(shù)量從 2 擴展到 4,同時在每個階段保持原始數(shù)量 (4 個塊) 用于分割。 (2) 我們使用對稱解碼器,其通道大小改變以匹配編碼器。 (3) 我們添加了一個 stem MLP,即一個額外的 MLP 層插入到架構(gòu)的開頭,將輸入點云映射到更高的維度。
總之,我們提出了 PointNeXt,這是 PointNets [29,52][29,52][29,52] 的下一個版本,通過結(jié)合所提出的 InvResMLP 和上述的宏體系結(jié)構(gòu)更改從 PointNet++ 進行修改。PointNeXt 的體系結(jié)構(gòu)如圖 2 所示。我們將 stem MLP 的通道大小表示為 CCC,InvResMLP 塊的數(shù)量表示為 BBB。更大的 CCC 導致網(wǎng)絡的寬度增加(即寬度擴展),而更大的 BBB 導致網(wǎng)絡的深度增加(即深度擴展)。當 B=0B=0B=0 時,在每個階段僅使用一個 SA 塊和沒有 InvResMLP 塊。SA 塊中 MLP 層數(shù)為 2,每個 SA 塊內(nèi)部添加一個殘差連接。當 B≠0B \neq 0B=0 時,在原始 SA 塊后添加 InvResMLP 塊。在這種情況下,SA 塊中 MLP 層數(shù)設置為 1 以節(jié)省計算成本。我們的 PointNeXt 系列的配置如下所述:
- PointNeXt-S: C=32,B=0C=32, B=0C=32,B=0
- PointNeXt-L: C=32,B=(2,4,2,2)C=32, B=(2,4,2,2)C=32,B=(2,4,2,2)
- PointNeXt-B: C=32,B=(1,2,1,1)C=32, B=(1,2,1,1)C=32,B=(1,2,1,1)
- PointNeXt-XL: C=64,B=(3,6,3,3)C=64, B=(3,6,3,3)C=64,B=(3,6,3,3)
5 Related Work
點云方法直接使用點云的無結(jié)構(gòu)格式進行處理,相比于基于體素的方法[10, 4]和基于多視圖的方法[37, 12, 9]。點云網(wǎng)絡(PointNet) [29] 是點云方法的先驅(qū)工作,通過限制特征提取為逐點方式,使用共享的MLP模型來建模點的置換不變性。點云網(wǎng)絡++(PointNet++) [30] 的出現(xiàn)旨在提高PointNet的性能,以捕捉局部幾何結(jié)構(gòu)。目前,大多數(shù)基于點云的方法都專注于局部模塊的設計。[46、45、31]采用圖神經(jīng)網(wǎng)絡,[51、22、43、42]將點云投影到偽網(wǎng)格上,以允許進行規(guī)則卷積,[48、23、24]通過局部結(jié)構(gòu)確定的權(quán)重自適應地聚合鄰域特征。此外,最近的一些方法通過類似于Transformer的網(wǎng)絡[56,17][56,17][56,17],利用自注意力來提取局部信息。我們的工作不追隨這種局部模塊設計的趨勢。相反,我們將注意力轉(zhuǎn)移到另一個重要但鮮為人知的方面,即訓練和擴展策略。
最近對于圖像分類領(lǐng)域的訓練策略已經(jīng)得到了研究[2,47,26][2,47,26][2,47,26]。在點云領(lǐng)域,SimpleView [9]是第一篇展示訓練策略對神經(jīng)網(wǎng)絡性能有重要影響的工作。然而,SimpleView僅僅采用了與DGCNN [46]相同的訓練策略。相反,我們進行了系統(tǒng)研究,以量化每種數(shù)據(jù)增強和優(yōu)化技術(shù)的影響,并提出了一組改進的訓練策略,可以提高PointNet++ [30]和其他代表性工作[29,46,28][29,46,28][29,46,28]的性能。
模型擴展能夠顯著提高網(wǎng)絡性能,這在各個領(lǐng)域的開創(chuàng)性工作中得到了證明[40,55,21][40,55,21][40,55,21]。與使用少于222M參數(shù)的PointNet++[30][30][30]相比,大多數(shù)當前流行的網(wǎng)絡的參數(shù)超過了101010M,例如KPConv[43][43][43](15M)和PointMLP[28][28][28](13M)。在我們的工作中,我們探索了一些有效且高效的PointNet++模型擴展策略。我們提供了實際建議,即使用殘差連接和反向瓶頸設計來提高性能,同時使用可分離MLP來保持吞吐量。
6 Conclusion and Discussion
本文展示了通過改進訓練和模型縮放策略,PointNet++的性能可以提高到超過當前的最新技術(shù)。具體而言,我們量化了每種數(shù)據(jù)增強和優(yōu)化技術(shù)的效果,并提出了一組改進的訓練策略。這些策略可以輕松應用于提高PointNet++和其他代表性作品的性能。我們還將反向殘差MLP塊引入PointNet++中以開發(fā)PointNeXt。我們展示了PointNeXt在各種基準測試中具有卓越的性能和可伸縮性,同時保持高吞吐量。本研究旨在引導研究人員更加關(guān)注訓練和縮放策略的影響,并激勵未來的研究朝這個方向發(fā)展。
Limitation. 雖然PointNeXt-XL是所有代表性基于點的網(wǎng)絡[30、43、15、56]中最大的之一,但它的參數(shù)數(shù)量(44M)仍然低于圖像分類中的小型網(wǎng)絡,例如Swin-S [25](50M)、ConNeXt-S [26](50M)和ViT-B [8](87M),并且遠遠低于它們的大型變體,包括Swin-L(197M)、ConvNeXt-XL(350M)和ViT-L(305M)。在這項工作中,我們沒有進一步推動模型大小,主要是因為與更大的圖像數(shù)據(jù)集(如ImageNet [6])相比,點云數(shù)據(jù)集具有更小的規(guī)模。此外,由于重點不在引入新的架構(gòu)變化上,因此我們的工作受到現(xiàn)有模塊的限制。
論文鏈接:https://arxiv.org/pdf/2206.04670.pdf