MLCVNet: Multi-Level Context VoteNet for 3D Object Detection
- 文章概括
- 摘要
- I. 引言
- 2. 相關工作
- 2.1. 基于點云的 3D 目標檢測
- 2.2. 上下文信息
- 3. 方法
- 3.1. VoteNet
- 3.2. PPC 模塊
- 3.3. OOC 模塊
- 3.4. GSC 模塊
- 4. 結果與討論
- 4.1. 數據集
- 4.2. 訓練細節
- 4.3. 與最先進方法的比較
- 4.4 消融研究
- 4.5 定性結果
- 5. 結論
- 致謝
文章概括
引用:
@inproceedings{xie2020mlcvnet,title={Mlcvnet: Multi-level context votenet for 3d object detection},author={Xie, Qian and Lai, Yu-Kun and Wu, Jing and Wang, Zhoutao and Zhang, Yiming and Xu, Kai and Wang, Jun},booktitle={Proceedings of the IEEE/CVF conference on computer vision and pattern recognition},pages={10447--10456},year={2020}
}
Xie, Q., Lai, Y.K., Wu, J., Wang, Z., Zhang, Y., Xu, K. and Wang, J., 2020. Mlcvnet: Multi-level context votenet for 3d object detection. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition (pp. 10447-10456).
主頁:
原文:
代碼、數據和視頻: https://github.com/NUAAXQ/MLCVNet
系列文章:
請在 《 《 《文章 》 》 》 專欄中查找
宇宙聲明!
引用解析部分屬于自我理解補充,如有錯誤可以評論討論然后改正!
摘要
在本文中,我們通過自注意力機制和多尺度特征融合來捕捉多層次上下文信息,從而解決 3D 目標檢測任務。大多數現有的 3D 目標檢測方法都是單獨地識別目標,而沒有考慮這些目標之間的上下文信息。相比之下,我們提出了多層次上下文 VoteNet(Multi-Level Context VoteNet,MLCVNet),在最先進的 VoteNet 基礎上協同地識別 3D 目標。我們在 VoteNet 的投票和分類階段引入了三個上下文模塊,以在不同層次上編碼上下文信息。具體而言,在為對應的目標質心點投票之前,引入了補丁到補丁上下文模塊(Patch-to-Patch Context,PPC),以捕捉點云補丁之間的上下文信息。隨后,在提議和分類階段之前,加入了目標到目標上下文模塊(Object-to-Object Context,OOC),以捕捉目標候選之間的上下文信息。最后,設計了全局場景上下文模塊(Global Scene Context,GSC),用于學習全局場景上下文。我們通過在補丁、目標和場景層面捕捉上下文信息來展示這些模塊的有效性。我們的方法能夠有效提升檢測精度,在具有挑戰性的 3D 目標檢測數據集 SUN RGBD 和 ScanNet 上實現了新的最先進檢測性能。我們還在 https://github.com/NUAAXQ/MLCVNet 發布了我們的代碼。
I. 引言
3D 物體檢測正在計算機視覺和計算機圖形學領域成為一個活躍的研究課題。 與 RGB 圖像中的 2D 目標檢測相比,在由點云捕獲的真實世界環境中預測 3D 邊界框對于許多任務 [1](例如室內機器人導航 [2]、機器人抓取 [3] 等)更為關鍵。 然而,點云中的非結構化數據使得檢測比 2D 更具挑戰性。 尤其是,在 2D 目標檢測中非常成功的卷積神經網絡(CNN)難以直接應用于點云。
越來越多的研究興趣被吸引來應對這一挑戰。 隨著深度 3D 點處理網絡(如 [4,5])的出現,最近提出了若干基于深度學習的 3D 目標檢測方法,用于直接從 3D 點云中檢測物體 [6,7]。 最新工作 VoteNet [7] 在霍夫投票的基礎上提出了一種端到端的 3D 目標檢測網絡。 VoteNet 將傳統的霍夫投票過程轉換為由深度網絡實現的回歸問題,并從輸入點云中采樣若干種子點,以生成對潛在目標中心進行投票的補丁。 然后使用投票得到的中心來估計 3D 邊界框。 該投票策略使 VoteNet 能夠顯著減少搜索空間,并在多個基準數據集上取得最先進的結果。 然而,VoteNet 將每個點補丁和目標單獨對待,缺乏對不同目標之間以及目標與其所屬場景之間關系的考慮,從而限制了其檢測精度。
示例可見于圖1。 點云(例如由深度相機捕獲)通常包含噪聲和缺失數據。 這些因素疊加室內遮擋,即使對人類來說也很難在圖1(a)中識別出目標是什么以及位于何處。 然而,考慮到圖1(b–d)中的周圍上下文信息,鑒于周圍的椅子和餐廳場景中的餐桌,更容易識別出它是一把椅子。
圖1. 說明多層次上下文信息對于基于點云數據的 3D 目標檢測的重要性。 (a) 當單獨顯示點云時,很難識別出目標。 (b)-(d) 當給出周圍環境信息時,我們就能輕松識別出椅子。 事實上,與開放場景中的一般物體檢測不同,室內場景通常包含強烈的上下文約束,可在諸如 3D 目標檢測 的室內場景理解任務中加以利用。
事實上,當單獨展現掃描點集時,由于缺乏顏色外觀和數據缺失問題,其表示可能是模糊的。 因此,我們認為室內深度掃描往往被嚴重遮擋,以至于上下文信息在識別物體時甚至可能比點云數據本身更為重要。 這種上下文信息已被證明在多種計算機視覺任務中非常有用,包括目標檢測[8,9]、圖像語義分割[10,11]和3D場景理解[12,13]。 在本文中,我們展示了如何利用3D場景中的上下文信息來提升基于點云的3D目標檢測性能。
在我們看來,3D目標檢測所需的上下文信息具有多層級。 最低層是補丁級,通過對相似點補丁進行加權求和來緩解數據缺失問題,從而輔助更準確地對目標中心進行投票。 在目標級,對象并存關系為檢測特定目標提供了有力提示。 例如,如圖1(d)所示,已檢測到的餐桌會使周圍點更傾向于被識別為椅子。 在場景級,全局場景線索也能防止在不合適的場景中檢測到某些目標。 例如,我們不會期望在廚房中檢測到床。 不同層級的上下文信息相輔相成,共同用于在噪聲和雜亂環境中輔助正確推斷物體。
因此,我們提出了一種新穎的3D目標檢測框架——多層次上下文VoteNet(Multi-Level Context VoteNet, MLCVNet),將多層次上下文信息融入VoteNet中用于3D目標檢測。 具體而言,我們設計了一個統一網絡來建模從局部點補丁到全局場景的多層次上下文。 圖2中突出顯示了VoteNet與所提網絡的區別。 為建模上下文信息,該框架中提出了三個子模塊:補丁到補丁上下文(PPC)模塊、目標到目標上下文(OOC)模塊和全局場景上下文(GSC)模塊。 特別地,與[14]類似,我們在PPC和OOC模塊中均使用自注意力機制來建模元素間的關系。 這兩個子模塊分別旨在自適應地編碼補丁級和目標級的上下文信息。 對于場景級,如圖2(c)所示,我們設計了一個新的分支來融合多尺度特征,使網絡具備學習全局場景上下文的能力。 總之,本文的貢獻包括:
- 我們提出了首個在補丁級、目標級和全局場景級利用多層次上下文信息的3D目標檢測網絡。
- 我們設計了三個子模塊,包括兩個自注意力模塊和一個多尺度特征融合模塊,以在3D目標檢測中捕捉多層次的上下文信息。這些新模塊完美地融入了最先進的VoteNet框架。消融研究表明這些模塊在提高檢測精度方面的有效性。
- 大量實驗驗證了多層次上下文信息的優勢。所提網絡在SUN RGB-D和ScanNetV2數據集上均優于最先進的方法。
圖2. VoteNet [7] 與所提 MLCVNet 架構的比較。三個子模塊被集成以捕捉點云數據中的多層次上下文信息。 (a) 補丁級上下文模塊; (b) 目標級上下文模塊; (c) 全局場景上下文模塊。
2. 相關工作
2.1. 基于點云的 3D 目標檢測
來自 2D 圖像的目標檢測已經研究了幾十年。 自從深度卷積神經網絡(DCNNs)[15] 的發展以來,通過深度學習技術[16,17],2D 目標檢測的精度和效率已顯著提高。 與 2D 相比,直到近幾年,3D 目標檢測仍主要依賴非深度學習方法[18,19,20]。 隨著 3D 點云深度學習的發展[21,22,23],出現了許多基于深度學習的 3D 目標檢測架構[24,25,26]。 然而,這些方法大多依賴將 2D 檢測器作為中間步驟,這限制了它們在 2D 檢測器表現不佳的情況下的泛化能力[27]。 為了解決此問題,最近提出了幾種直接以原始點云為輸入的深度學習 3D 檢測器[28,29,6]。 在[30]中,作者提出了一種兩階段的 3D 目標檢測器 PointRCNN。 他們的方法首先生成若干 3D 邊界框提議,然后對這些提議進行細化以獲得最終檢測結果。 在[31]中,作者提出了一種新穎的 3D 目標提議方法,該方法采用“分析-合成”策略并從點云重建 3D 形狀,而非直接將 3D 目標提議生成視為邊界框回歸問題。
受到[32]中 2D 目標檢測霍夫投票策略的啟發,[7] 提出了一種端到端可訓練的 3D 目標檢測網絡,該網絡直接處理 3D 點云,并借助 PointNet/PointNet++[4,5] 的巨大成功。 盡管最近提出了許多方法,但在真實世界的挑戰性場景下仍有很大改進空間。 以往工作在很大程度上忽略了上下文信息,即對象與對象、對象與場景之間的關系。 在本工作中,我們展示了如何利用上下文信息來提高 3D 目標檢測的精度。
2.2. 上下文信息
[33] 的工作表明,上下文信息對 2D 語義分割和目標檢測具有顯著的正向作用。 自那時以來,上下文信息已成功地應用于提升多種任務的性能,例如 2D 目標檢測 [9,8,34]、3D 點匹配 [35]、點云語義分割 [36,37] 和 3D 場景理解 [12,13]。 [38] 的工作通過分析點補丁上下文,在 3D 點云實例分割任務上取得了合理的結果。 在 [39] 中,提出了一種基于遞歸自編碼器的方法,通過探索 3D 對象布局中的層次化上下文先驗來預測 3D 目標檢測。 受到自然語言處理領域自注意力思想的啟發 [40],近期工作將自注意力機制與上下文信息挖掘相結合,以改進場景理解任務,如圖像識別 [41]、語義分割 [11] 和點云識別 [42]。 針對 3D 點數據處理,[14] 的工作提出利用注意力網絡來捕捉 3D 點中的上下文信息。 具體而言,他們提出了一種點上下文注意力網絡,將局部特征編碼為全局描述符,用于基于點云的檢索。 在 [43] 中,當在大規模點云中檢測 3D 目標時,提出了一種注意力 PointNet,用于搜索感興趣區域,而不是處理整個輸入點云。 與以往工作不同,我們關注于利用多層次上下文信息的組合來進行基于點云的 3D 目標檢測。 特別地,我們將兩個自注意力模塊和一個多尺度特征融合模塊集成到深度霍夫投票網絡中,以學習補丁、目標和全局場景之間的多層次上下文關系。
圖3. 所提 MLCVNet 在點云數據中進行 3D 目標檢測的架構。 提出了三個新的子模塊,用于捕捉 3D 室內場景目標檢測中的多層次上下文信息。
3. 方法
如圖3所示,我們的MLCVNet包含四個主要組成部分:一個基于VoteNet的基礎3D目標檢測框架(遵循[7]中的架構)和三個上下文編碼模塊。 PPC(補丁到補丁上下文)模塊將點組結合起來以編碼補丁相關信息,幫助對更準確的目標中心進行投票。 OOC(目標到目標上下文)模塊用于捕捉目標候選之間的上下文信息,該模塊有助于提升3D邊界框回歸和分類的效果。 GSC(全局場景上下文)模塊用于整合全局場景上下文信息。 簡而言之,所提的三個子模塊旨在通過捕捉多層次的上下文信息來補充3D目標檢測中的各類線索,以提高點云場景下的檢測性能。
3.1. VoteNet
VoteNet [7] 是我們工作的基線。如圖2所示,它是一個端到端可訓練的3D目標檢測網絡,由三個主要部分組成:點特征提取、投票,以及目標提議與分類。
在點特征提取階段,PointNet++ 被用作骨干網絡,用于從原始輸入點云中對種子點進行采樣并提取高維特征。每個種子點的特征包含了其在一定半徑范圍內周圍點的信息,如圖4(a)所示。類似于2D中的區域補丁,我們在本文余下部分將這些種子點稱為點補丁。 投票模塊以帶有提取特征的點補丁為輸入,并通過一個多層感知機(MLP)回歸出目標中心位置,模擬了霍夫投票過程。隨后,通過聚類將預測出的中心點分組,形成目標候選;再通過另一層MLP提出并分類3D邊界框。
需要注意的是,在VoteNet中,點補丁和目標候選都是獨立處理的,忽略了周圍補丁或對象的信息。然而,我們認為這些元素(即點補丁和目標候選)之間的關系是目標檢測的重要信息。因此,我們提出了MLCVNet來編碼這些關系。我們的檢測網絡遵循VoteNet的總體框架,但整合了三個新子模塊以捕捉多層次的上下文信息。
圖4. (a) PPC 模塊的架構細節。本文中采用 CGNL [44] 作為自注意力模塊。 (b) 有(綠色)和無(紅色)PPC 模塊的中心投票結果比較。粉色點表示標注的真實中心點。
- 輸入是 M M M 個點補丁的特征 D D D (即 VoteNet 的點特征提取階段輸出的每個種子點的特征)。
- 對于任意兩個點補丁 i i i 和 j j j,通過一個“自注意力 (Self-attention)”模塊來計算它們之間的相互關系或重要性。
3.2. PPC 模塊
我們將點補丁之間的關系視為第一級上下文,即補丁–補丁上下文(PPC),如圖4(a)所示。 在這一層級,點補丁之間的上下文信息一方面通過從相似補丁中聚合補充信息來緩解數據缺失問題;另一方面,通過匯聚當前點補丁和其他所有補丁的投票信息來考慮補丁間的相互關系,從而輔助投票[45]。 因此,我們提出了一個子網絡——PPC 模塊,以捕捉點補丁之間的關系。對每個點補丁而言,其基本思想是在送入投票階段之前,采用自注意力模塊來聚合所有其他補丁的信息。
如圖4(a)所示,在使用 PointNet++ 提取特征后,我們得到一個特征圖 A ∈ R 1024 × D \text{A} \in \mathbb{R}^{1024\times D} A∈R1024×D,其中 1024 1024 1024 是從原始點云中采樣的點補丁數, D D D 是特征向量的維度。 我們旨在生成一個新的特征圖 A ′ \text{A}' A′,以編碼任意兩點補丁之間的相關性,其可表示為非局部操作:
A ′ = f ( θ ( A ) , ? ( A ) ) g ( A ) ( 1 ) \text{A}'=f(\theta(\text{A}),\phi(\text{A}))g(\text{A}) \quad (1) A′=f(θ(A),?(A))g(A)(1)
其中 θ ( ? ) \theta(\cdot) θ(?)、 ? ( ? ) \phi(\cdot) ?(?)、 g ( ? ) g(\cdot) g(?) 是三種不同的變換函數, f ( ? , ? ) f(\cdot,\cdot) f(?,?) 用于編碼輸入特征任意兩位置間的相似度。 此外,如[41]所示,特征圖中的通道相關性同樣有助于目標檢測任務中的上下文信息建模,因此我們采用了緊湊廣義非局部網絡(CGNL)[44] 作為注意力模塊,以在特征空間中顯式建模任意點補丁對及通道對之間的豐富相關性。 CGNL 計算開銷輕、附加參數少,使其更具實用性。經過注意力模塊后,新特征圖的每一行仍對應一個點補丁,但不僅包含其自身的局部特征,還融合了與所有其他點補丁相關的信息。
- f ( ? , ? ) f(?,?) f(?,?): 這個函數用于編碼輸入特征中任意兩個位置(這里指任意兩個點補丁)之間的相似度。在自注意力機制中,這通常是計算查詢(query)和鍵(key)之間的點積或高斯核函數。
- 整體含義: 這個公式表示新的特征 A ′ \text{A}' A′ 是通過計算每個點補丁與其他所有點補丁之間的相似度,然后用這些相似度作為權重來聚合所有點補丁的特征(通過 g ( A ) g(\text{A}) g(A) 轉換后的特征)。
PPC 模塊的有效性在圖4(b)中得以可視化。如所示,使用 PPC 模塊后,投票得到的中心點更有意義,更集中地出現在物體上,而非非物體區域;相比之下,無該模塊時投票中心則更分散。該結果表明,我們基于自注意力的點補丁加權融合方法能夠增強對目標中心投票的性能。
- 使用 PPC 模塊: 投票得到的中心點(綠色點)更加“有意義”,更集中地落在物體上,而不是散布在非物體區域。這表明投票結果更加準確和聚焦。
- 不使用 PPC 模塊: 投票中心則顯得更分散,很多投票可能落在物體之外或不準確的位置。
3.3. OOC 模塊
大多數現有的目標檢測框架都是單獨檢測每個對象。VoteNet 也不例外,其中每個聚類都被獨立地送入 MLP 層以回歸其對象類別和邊界框。然而,結合來自其他對象的特征可以提供更多關于對象關系的信息,這在圖像目標檢測中已被證明是有幫助的[46]。直觀地,某個對象會從高度相關的對象那里接收加權信息。這樣,最終預測的對象結果不僅由其自身的特征向量決定,還會受到對象關系的影響。因此,我們將對象之間的關系視為第二層級的上下文信息,即對象–對象上下文(OOC)。
對投票中心進行聚類后,我們得到一組投票聚類 C = { C 1 , C 2 , … , C K } \text{C}=\{\mathcal{C}_1,\mathcal{C}_2,\dots,\mathcal{C}_K\} C={C1?,C2?,…,CK?},其中 K K K 是本工作中生成的聚類數。每個聚類 C = { v 1 , v 2 , … , v n } \mathcal{C}=\{v_1,v_2,\dots,v_n\} C={v1?,v2?,…,vn?} 都通過一個 MLP,并隨后進行最大池化,形成一個表示該聚類的單一向量。這里 v i v_i vi? 表示聚類 C \mathcal{C} C 中的第 i i i 個投票, n n n 是聚類中投票的數量。接下來,與 VoteNet 的區別在于,我們不再獨立處理每個聚類向量以生成提議和分類,而是考慮對象之間的關系。
具體地,我們在提議和分類步驟之前引入了一個自注意力模塊,如圖3(藍色模塊)所示。圖5(a) 展示了 OOC 模塊內部的細節。具體而言,在最大池化之后,將聚類向量 C ∈ R K × D ′ \text{C}\in\mathbb{R}^{K\times D'} C∈RK×D′ 輸入到 CGNL 注意力模塊,以生成一個新的特征圖,用于記錄所有聚類之間的親和度。對象關系的編碼可總結為:
C O O C = A t t e n t i o n ( max ? i = 1 , … , n { M L P ( v i ) } ) ( 2 ) \mathcal{C}_{OOC} = {Attention}\bigl(\max_{i=1,\dots,n}\{{MLP}(v_i)\}\bigr) \quad (2) COOC?=Attention(i=1,…,nmax?{MLP(vi?)})(2)
其中 C O O C \mathcal{C}_{OOC} COOC? 是新的特征圖中增強后的特征向量, C O O C ∈ R K × D ′ \mathcal{C}_{OOC}\in\mathbb{R}^{K\times D'} COOC?∈RK×D′, A t t e n t i o n ( ? ) {Attention}(\cdot) Attention(?) 是 CGNL 注意力映射。通過這種方式,這些聚類(對象)之間的上下文關系被編碼到新的特征圖中。OOC 模塊的有效性在圖5(b)中可視化展示。如圖所示,使用 OOC 模塊后,檢測到的對象重疊情況減少,檢測對象的位置也更加準確。
圖5. (a) OOC 模塊的架構細節。本文中采用 CGNL [44] 作為自注意力模塊。 (b) 使用(有)和未使用(無)OOC 模塊的結果比較。
我們來詳細解釋一下 VoteNet 中“一組投票聚類 C = { C 1 , C 2 , … , C K } \text{C}=\{\mathcal{C}_1,\mathcal{C}_2,\dots,\mathcal{C}_K\} C={C1?,C2?,…,CK?} 是怎么得到的”以及“每個聚類 C = { v 1 , v 2 , … , v n } \mathcal{C}=\{v_1,v_2,\dots,v_n\} C={v1?,v2?,…,vn?} 是如何得到的”。這涉及 VoteNet 的核心“投票”和“聚類”機制。
1. “投票”的生成 (Hough Voting for 3D Object Centers)
起點:種子點和特征提取
- VoteNet 的第一步是使用像 PointNet++ 這樣的骨干網絡,從輸入的原始點云中采樣出一定數量的“種子點”(seed points)。這些種子點通常是原始點云的一個子集。
- 同時,PointNet++ 會為每個種子點提取一個高維特征向量。這個特征向量包含了該種子點及其局部鄰域(在一定半徑范圍內)的點的信息。在論文中,這些帶特征的種子點被稱為“點補丁”(point patches)。
投票過程:MLP 回歸中心偏移
- 每個種子點(或點補丁)都會獨立地通過一個多層感知機(MLP)。
- 這個 MLP 的作用是回歸一個“投票偏移量”(vote offset)。這個偏移量是從種子點的位置指向它所屬對象的中心位置的向量。
- 通過將種子點的位置加上這個回歸出的偏移量,我們就得到了一個**“投票”(vote)。這個“投票”實際上就是模型預測的一個潛在的對象中心點**。
- 這個過程模擬了經典的霍夫投票(Hough Voting)思想:場景中的每個點(在這里是種子點)都對它可能屬于的對象的中心進行“投票”,理想情況下,屬于同一個對象的點會投票到相似的中心位置。
投票的集合:
- 經過這個投票階段,我們從 M M M 個種子點得到了 M M M 個投票,每個投票都是一個3D坐標(潛在的對象中心)以及一個 associated feature(由種子點特征經過MLP得到的)。
2. “聚類”的形成 (Clustering of Votes)
目的:聚合相似的投票
- 由于屬于同一個對象的多個種子點會投票到該對象的中心附近,這些投票會在空間中形成密集的“簇”(clusters)。
- 聚類的目的是將這些空間上接近的投票分組,從而識別出潛在的對象實例。
聚類方法:通常使用最遠點采樣(Farthest Point Sampling, FPS)和半徑鄰域分組
- 選擇聚類中心(Query Points): VoteNet 不會對所有生成的投票都進行聚類。它會先從這 M M M 個投票中,使用最遠點采樣(Farthest Point Sampling, FPS)的方法,采樣出 K K K 個具有代表性的投票作為聚類查詢點(cluster query points)。FPS 確保選出的這些查詢點在空間上分布均勻,從而避免在同一個局部區域選擇過多的聚類中心。這 K K K 就是你問題中的 K K K 個聚類數。
- 分組(Grouping): 對于每個選出的聚類查詢點,VoteNet 會在其周圍設定一個固定的半徑范圍(或者說一個“邊界球”)。所有落在這個半徑范圍內的其他投票都會被歸到同一個聚類中。
- 這樣,我們就得到了一組投票聚類 C = { C 1 , C 2 , … , C K } \text{C}=\{\mathcal{C}_1,\mathcal{C}_2,\dots,\mathcal{C}_K\} C={C1?,C2?,…,CK?}。其中每個 C k \mathcal{C}_k Ck? 就是一個由多個投票組成的集合。
3. 每個聚類 C = { v 1 , v 2 , … , v n } \mathcal{C}=\{v_1,v_2,\dots,v_n\} C={v1?,v2?,…,vn?} 的含義與后續處理
C = { v 1 , v 2 , … , v n } \mathcal{C}=\{v_1,v_2,\dots,v_n\} C={v1?,v2?,…,vn?}: 這表示第 k k k 個聚類 C k \mathcal{C}_k Ck? 包含了 n n n 個投票 v 1 , v 2 , … , v n v_1, v_2, \dots, v_n v1?,v2?,…,vn?。
- 每個 v i v_i vi? 都是一個具體的投票,它由一個3D坐標(預測的對象中心)和一個特征向量組成。
- 這些 v i v_i vi? 都是在第二步“聚類”過程中,被分配到同一個聚類查詢點附近的投票。
后續處理 (轉換為單一向量):
- 為了將這個包含多個投票的集合 C \mathcal{C} C 轉換為一個可以用于后續目標提議和分類的單一特征向量,VoteNet 通常會執行以下操作:
- MLP: 聚類中的每個投票 v i v_i vi?(包含其預測的中心坐標和特征)會先通過一個獨立的 MLP 進行處理。這可以對每個投票的特征進行進一步的提煉。
- 特征聚合(例如:最大池化): 接著,通過對所有經過 MLP 處理的投票特征進行**最大池化(max pooling)**操作,得到一個代表整個聚類的最終特征向量。最大池化能夠捕捉聚類中所有投票的最顯著特征。
與 OOC 模塊的連接:
- 正是這個經過 MLP 和最大池化后形成的單一聚類向量(在文本中表示為 max ? i = 1 , … , n { MLP ( v i ) } \max_{i=1,\dots,n}\{\text{MLP}(v_i)\} maxi=1,…,n?{MLP(vi?)}),作為 OOC 模塊的輸入。
- OOC 模塊再利用自注意力機制,對這些代表不同對象的聚類向量進行交互和上下文編碼,以生成增強后的特征 C O O C \mathcal{C}_{OOC} COOC?,用于最終的3D邊界框預測和分類。
總結流程:
- 點特征提取: PointNet++ 從原始點云中采樣種子點,并提取它們的特征(形成“點補丁”)。
- 投票: 每個點補丁通過 MLP 回歸一個“投票”(即潛在的對象中心及其特征)。
- 聚類:
- 使用最遠點采樣(FPS)從所有投票中選擇 K K K 個聚類查詢點。
- 以每個查詢點為中心,在一定半徑內收集所有落入其中的投票,形成 K K K 個投票聚類 C = { C 1 , C 2 , … , C K } \text{C}=\{\mathcal{C}_1,\mathcal{C}_2,\dots,\mathcal{C}_K\} C={C1?,C2?,…,CK?}。
- 聚類特征聚合: 每個聚類 C = { v 1 , v 2 , … , v n } \mathcal{C}=\{v_1,v_2,\dots,v_n\} C={v1?,v2?,…,vn?} 中的所有投票 v i v_i vi? 經過 MLP 處理,然后通過最大池化聚合成一個單一的特征向量,代表這個潛在的對象。
- OOC 模塊(MLCVNet 的新增): 這些聚合后的聚類特征向量被輸入到 OOC 模塊,通過自注意力機制進行對象間上下文信息的編碼,生成最終用于邊界框提議和分類的增強特征。
3.4. GSC 模塊
整個點云通常包含豐富的場景上下文信息,可幫助提高目標檢測精度。例如,當整個場景是餐廳而不是浴室時,更有可能將目標識別為椅子而不是馬桶。因此,我們將關于整體場景的信息視為第三級上下文,即全局場景上下文(GSC)。受[34]中場景上下文提取思想的啟發,我們提出了GSC模塊(圖3中的綠色模塊),在無需場景顯式監督的情況下,利用全局場景上下文信息來改進3D邊界框提議和目標分類的特征表示。
圖3. 所提 MLCVNet 在點云數據中進行 3D 目標檢測的架構。 提出了三個新的子模塊,用于捕捉 3D 室內場景目標檢測中的多層次上下文信息。
GSC模塊通過引入全局場景特征提取分支來捕捉全局場景上下文信息。具體地,我們新建一個分支,從補丁級和目標級獲取輸入,將在PPC和OOC自注意力前的特征進行拼接。如圖6(a)所示,在這兩層中,每一行分別表示一個點補丁 P ∈ P = { P 1 , P 2 , … , P M } \mathcal{P}\in \text{P}=\{\mathcal{P}_1,\mathcal{P}_2,\dots,\mathcal{P}_M\} P∈P={P1?,P2?,…,PM?} 或一個目標候選 C ∈ C = { C 1 , C 2 , … , C K } \mathcal{C}\in \text{C}=\{\mathcal{C}_1,\mathcal{C}_2,\dots,\mathcal{C}_K\} C∈C={C1?,C2?,…,CK?},其中 M M M 和 K K K 分別是采樣的點補丁數和聚類數。首先對其應用最大池化,得到兩個向量(即補丁向量和聚類向量),融合了所有點補丁和目標候選的信息。遵循2D檢測器上下文建模策略中的多尺度特征融合思想,將這兩個向量拼接形成全局特征向量。隨后通過一個MLP層進一步聚合全局信息,并將輸出擴展后與OOC模塊的輸出特征圖相結合。該多尺度特征融合過程可表示為:
C n e w = M L P ( [ max ? ( C ) ; max ? ( P ) ] ) + C O O C \text{C}_{new}=MLP\bigl([\,\max(\text{C});\max(\text{P})\,]\bigr)+\text{C}_{OOC} Cnew?=MLP([max(C);max(P)])+COOC?
通過這種方式,最終的3D邊界框和目標分類推斷將考慮與場景上下文的兼容性,使全局線索下的最終預測更加可靠。如圖6(b)所示,GSC模塊有效減少了場景中的誤檢。
圖6. (a) 所提 GSC 模塊的架構細節(含多尺度特征融合)。 (b) 使用(有)和未使用(無)GSC 模塊的結果比較。
4. 結果與討論
4.1. 數據集
我們在 SUN RGB-D [49] 和 ScanNet [50] 數據集上評估了我們的方法。 SUN RGB-D 是一個知名的室內場景 RGB-D 圖像公開數據集,由 10,335 幀帶有 3D 目標邊界框標注的數據組成。整個數據集中共提供了超過 64,000 個 3D 邊界框。正如[13]中所述,這些場景大多取自具有強上下文的家庭環境。SUN RGB-D 數據集中的遮擋問題相當嚴重。有時僅給出 3D 點云而不含任何顏色信息時,甚至人類都難以識別場景中的物體。因此,它是一個具有挑戰性的 3D 目標檢測數據集。 ScanNet 數據集包含 1,513 個掃描的 3D 室內場景,并帶有密集標注的網格。也提供了對象的真實 3D 邊界框。ScanNet 中場景的完整性使其成為訓練我們的網絡以學習多層次上下文信息的理想數據集。
4.2. 訓練細節
我們的網絡端到端訓練,使用 Adam 優化器和批量大小 8。ScanNet 數據集的基礎學習率設為 0.01,SUN RGB-D 數據集的基礎學習率設為 0.001。兩個數據集均訓練 220 個 epoch。學習率衰減步長分別設為 ScanNet 的 {120, 160, 200} 和 SUN RGB-D 的 {100, 140, 180},衰減率均為 {0.1, 0.1, 0.1}。在單張 RTX 2080 Ti GPU 上訓練至收斂,大約需要 4 小時(ScanNetV2)和 11 小時(SUN RGB-D)。訓練過程中我們發現 mAP 結果在小范圍內波動,因此論文中報告的 mAP 為三次獨立運行的平均結果。 在參數規模方面,我們檢查了我們方法和 VoteNet 存儲的 PyTorch 模型文件大小。我們網絡的模型大小為 13.9MB,而 VoteNet 為 11.2MB。就訓練時間而言,VoteNet 在批量大小為 8 時每個 epoch 大約需要 40s,而我們的約為 42s。就推理時間而言,對一個批次進行檢測并計時,VoteNet 大約為 0.13s,而我們的方法為 0.14s。這里報告的時間均在 ScanNet 數據集上測試。以上數據表明,我們的方法僅略微增加了計算復雜度。
4.3. 與最先進方法的比較
我們首先在 SUN RGB-D 數據集上,使用與[7]中相同的 10 個常見目標類別,對我們的方法進行評估。表 1 給出了我們的方法與深度滑動立方體(DSS)[1]、梯度云(COG)[47]、2D 驅動方法[26]、F-PointNet[27] 和 VoteNet[7] 的定量比較。 值得注意的是,我們的方法在 SUN RGB-D 數據集上整體性能優于其他所有方法。在 SUN RGB-D 驗證集上的整體 mAP 達到 59.8%,比現有最先進的 VoteNet 高出 2.1%。SUN RGB-D 數據集中的嚴重遮擋對逐點補丁獨立處理的方法(如 VoteNet)是一個挑戰。然而,MLCVNet 中上下文信息的利用有助于檢測缺失部分的遮擋物體,我們認為這正是檢測精度提升的原因。
我們還在 ScanNet 基準上,將 MLCVNet 與其他幾種競爭方法(MRCNN 2D-3D[48]、GSPN[31] 和 3D-SIS[6])進行了對比,結果見表 2。
我們報告了 mAP@0.25 和 mAP@0.5 兩種指標的檢測結果。MLCVNet 在 ScanNet 驗證集上的 mAP@0.25 達到 64.5%,相比最佳競爭方法 VoteNet 提升了 5.9 個絕對百分點;mAP@0.50 增幅更高,達 7.9 個百分點。顯著的性能提升證明了我們多層次上下文信息整合的有效性。表 3 列出了 ScanNetV2 數據集中各目標類別在 mAP@0.25 下的詳細結果。可以看到,對于一些特定類別,如浴簾和窗戶,性能提升超 8 個百分點。我們發現平面類物體(如門、窗、畫和浴簾)通常獲得更高的提升,這可能是因為這些物體包含更多相似的點補丁,注意力模塊能夠在很大程度上互相補充。
4.4 消融研究
為了定量評估所提上下文子模塊的有效性,我們進行了不同組合的實驗。定量結果如表4所示。基線方法為 VoteNet。然后我們將所提子模塊逐一添加到基線模型中。
- 應用 PPC 模塊后,mAP@0.25 在兩個數據集上分別提升了 0.8 和 2.6 個百分點。
- PPC 和 OOC 模塊的組合進一步將評估得分提升至 59.1 和 63.4。
- 如預期,當配備了所有三個子模塊時,我們的 MLCVNet 在兩個數據集上的 mAP@0.25 均提升至最高分。
可以看出,所設計子模塊捕捉的上下文信息確實給最先進方法帶來了顯著提升。
4.5 定性結果
圖7 展示了在 ScanNetV2 驗證集上使用 MLCVNet 和 VoteNet 進行 3D 邊界框預測的定性對比。可以觀察到,所提 MLCVNet 檢測到了更多合理的對象(紅色箭頭),并預測了更精確的邊界框(藍色箭頭)。VoteNet 生成的粉色邊界框被錯誤地分類為窗戶,與門重疊,而我們的方法確保了對象與場景的一致性。
圖8 展示了 SUN RGB-D 數據集上的定性對比結果。如圖所示,盡管場景高度遮擋且信息較少,我們的模型仍能生成高質量的邊界框。例如,在圖8 的臥室示例中,VoteNet 存在重疊和漏檢(紅色箭頭),而我們的模型成功檢測到所有對象,并與真實標注保持較高精度。對于圖8 的第二個場景,VoteNet 錯誤分類餐桌、產生重疊并預測出不準確的邊界框(紅色箭頭),而我們的模型給出了更干凈、更準確的結果。
然而,值得注意的是,我們的方法在某些預測中仍可能失敗,例如圖7 紅色方框中的重疊窗戶。因此,在處理復雜場景時,3D 邊界框預測仍有改進空間。
5. 結論
在本文中,我們提出了一個將多層次上下文信息集成到 3D 目標檢測中的新穎網絡。我們利用自注意力機制和多尺度特征融合來建模多層次上下文信息,并提出了三個子模塊PPC 模塊編碼點補丁之間的關系,OOC 模塊捕獲目標候選的上下文信息,GSC 模塊聚合全局場景上下文。消融研究表明,所提上下文子模塊能夠有效提升檢測精度。定量和定性實驗進一步證明了我們的架構在提升 3D 目標檢測性能方面的成功。
未來工作
3D 目標檢測中的上下文信息分析仍有巨大探索空間。例如,為了增強全局場景上下文約束,一種可能的方法是在 GSC 模塊中使用全局特征來預測場景類型,作為輔助學習任務,從而顯式監督全局特征表示。另一個方向是采用更有效的機制來編碼上下文信息,如[8]所示。
致謝
本工作部分由中國國家自然科學基金(批準號 61772267、61572507、61532003、61622212)、中央高校基本科研業務費專項資金(批準號 NE2016004)、中國國家重點研發計劃(編號 2018AAA0102200)及江蘇省自然科學基金(批準號 BK20190016)資助。