MLCVNet: Multi-Level Context VoteNet for 3D Object Detection
文章概括
引用:
@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)资助。