outdoor LiDAR 点云中的前景点(即物体)和背景点之间经常存在很大的不平衡。它阻碍了检测器专注于信息区域以产生准确的 3D 目标检测结果。

本文通过语义Point-Voxel特征交互提出了一种新颖的目标检测网络,称为 PV-RCNN++。与大多数现有方法不同,PV-RCNN++ 探索语义信息以提高目标检测的质量。

首先,提出了一个语义分割模块来保留更多的判别前景关键点。这样的模块将指导 PV-RCNN++ 在关键区域集成更多与目标相关的point-wisevoxel-wise特征。然后,为了使point-wisevoxel-wise有效地交互,作者利用基于曼哈顿距离的voxel query来快速采样关键点周围的voxel-wise特征。与ball query相比,这样的voxel query将把时间复杂度从 O(N) 降低到 O(K)

此外,为了避免只学习局部特征,作者设计了一个基于注意力的残差 PointNet 模块来扩展感受野,以自适应地将相邻的voxel-wise特征聚合到关键点中。

在 KITTI 数据集上的大量实验表明,PV-RCNN++ 在 CarPedestrian 和 Cyclist 上实现了 81.60%、40.18%、68.21% 的 3D mAP,实现了与最先进技术相当甚至更好的性能。

1、简介

随着自动驾驶、机器人系统和虚拟现实的发展,2D 和 3D 领域的目标检测变得越来越重要。

通过各种数据表示(例如,单目图像、立体相机和 LiDAR 点云)在 3D 目标检测方面取得了很大进展。与从 2D 图像中检测 3D 目标相比,LiDAR 点云在检测 3D 目标中发挥着关键作用,因为它包含相对精确的深度和 3D 空间结构信息。

基于 LiDAR 的 3D 目标检测器大致可分为两大类:Voxel-basedPoint-based

Voxel-based将点离散为规则网格以方便 3D 稀疏卷积神经网络 (CNN)。然后,可以将体素化的特征图压缩为鸟瞰图(BEV),然后将其送到区域建议网络(RPN)以产生预测。相反,Point-based的主要采用PointNet++作为Backbone,以原始Point为输入,通过迭代采样和分组操作抽象Point特征集。

与仅Voxel-basedPoint-based的方法不同,PV-RCNN 探索了point-wisevoxel-wise特征之间的交互。特别是,PV-RCNN 深度集成了 3D Voxel CNN 和基于 PointNet 的集合抽象(SA),以增强特征学习能力。具体来说,提出了一种Voxel Set AbstractionVSA),通过最远点采样(FPS)的采样关键点对不同尺度的voxel-wise特征进行编码。VSA 还通过坐标变换和投影,将 BEV 的特征和原始点特征连接成关键点,以更全面地了解 3D 场景。

尽管如此,作者观察到outdoor LiDAR点云中存在包含 3D 目标的小信息区域和大的冗余背景区域之间的巨大不平衡。它对精确的 3D 目标检测提出了挑战。一般来说,激光雷达获得的点云覆盖范围有数百米,其中只有几辆小汽车被捕获,其余的都是大量的背景点。然而,在 PV-RCNN 中,整个 3D 场景是通过 FPS 的少量采样关键点来概括的。在选择关键点时,FPS倾向于选择较远的点以均匀地覆盖整个点云,这导致过多的不重要的背景点被保留,许多有价值的前景点被丢弃。

因此,PV-RCNN 的性能主要是由于前景物体提供的特征不足而受到限制。因此,作者认为如果有先验知识可以引导检测器专注于关键的前景对象以提取更有价值的特征。具体灵感则是利用点云语义分割的结果作为先验知识来指导3D目标检测器。

为此,作者通过语义Point-Voxel特征交互(称为 PV-RCNN++)提出了一种新颖的 3D 目标检测网络。首先,引入了一个轻量级且快速的前景点采样Head,该Head是从 PointNet++ 精心修改的,以选择适当的与目标相关的关键点。作者删除了 PointNet++ 中的特征传播(FP)层,以避免大量的内存使用和时间消耗。只保留 SA 层以产生更有价值的关键点。

具体来说,在每个 SA 层中,采用Binary Segmentation Module对前景和背景点进行分类。然后,采用一种新颖的采样策略,语义引导的最远点采样(S-FPS),以分割分数作为样本和组代表点的指导。与 FPS 不同,S-FPS 更偏爱正样本点,使得更多的前景点保留在 SA 层中。因此,SA 层中的采样点可以作为后续操作的关键逐点表示。

在获得更具判别性的关键点之后,挑战将是如何通过关键点有效地整合point-wisevoxel-wise特征。

作者有2个需求:

  1. 加快pointvoxel之间的交互;

  2. 有效地从voxel-wise特征中提取3D信息。

具体来说,首先采用 3D 稀疏卷积对体素化点云进行编码。然后,提出了一个快速voxelpoint交互模块,以有效地对关键点周围的相邻voxel-wise特征进行采样和分组。现有的Query策略为Ball Query,花费太多时间来计算从每个voxel到关键点的欧几里得距离,以确定voxel是否在给定的半径内。因此,本文将关键点视为voxel,在 3D 空间中规则排列,然后利用基于曼哈顿距离的Voxel Query策略快速识别每个关键点的相邻voxel-wise特征。与Ball Query相比,Voxel Query大大减少了从 O(N) 到 O(K) 的时间消耗,其中 N 是voxel的总数,K 是关键点周围相邻voxel的数量。

本文还提出了一种基于注意力的残差PointNet模块来抽象相邻的voxel-wise特征以提取多尺度 3D 信息。作者在每个关键点的Voxel Set上应用自注意力机制来生成相应的注意力图,让每个voxel拥有更全面的感知场,包含更多的 3D 结构和附近其他voxel的场景信息。最后,引入了一个轻量级的残差 PointNet 模块,以进一步提取和聚合精细的voxel-wise特征。

主要贡献总结如下:

  • 引入了semantic-guided keypoint sampling module,以从点云中保留更多有价值的前景点,这有助于检测器专注于包含 3D 目标的关键区域。

  • 利用基于曼哈顿距离的Voxel Query来快速收集关键点周围的相邻voxel-wise特征,与Ball Query相比减少了时间消耗,提高了Point-Voxel交互的效率。

  • 提出了一个基于注意力的残差 PointNet 模块,它允许每个Voxel对邻域进行自适应和非局部总结,以实现更准确的预测。

  • 大量实验和结果表明,提出的方法在常见的 3D 目标检测基准 KITTI 数据集上取得了相当的性能。

2、相关方法

2.1、Point-Based 方法

一般来说,Point-Based 方法主要依靠 PointNet++ 和图神经网络。为了保留位置信息,Point-Based 方法直接对点云进行操作以提取point-wise特征。受 Faster R-CNN 的启发,PointRCNN 利用 PointNet++ 设计了一个自下而上的 3D 区域提议网络来生成 3D 提议框,然后在第二阶段在规范坐标中进行细化。

为了减少PointNet++Feature Propagation(FP)层的耗时操作,3DSSD去掉了FP层,提出了一种特征引导的采样方法来引导SA层选择更多的判别点。

与常见的Point-Based方法不同,PC-RGNN 提出了一种基于 Graph 的点云补全模块来捕获 3D 提案的几何线索,为细化提供更完整的结构和形状信息。

虽然基于点的方法有可能实现更准确的检测,但时间复杂度和内存消耗问题无法妥善解决,这限制了它们的进一步发展。

2.2、Voxel-Based 方法

基于Voxel的方法采用常规体素化点云作为数据表示。VoxelNet 首先提出了一个用于 3D 框回归的通用单阶段网络。在 VoxelNet 中,Voxel Feature Encoder (VFE) 旨在将无序点划分为网格,并利用简化的 PointNet 生成每个Voxel的代表特征。然后应用 3D CNN 来提取整个 3D 场景的特征。

CIA-SSD 提出了一个 Spatial-Semantic 特征聚合模块来提取 BEV 特征图的Low-Level空间特征和High-Level语义特征,以获得更准确的Proposals

SE-SSD 利用知识蒸馏设计了一对教师和学生 SSD 模型。提出了一种有效的基于 IoU 的匹配策略来过滤来自教师的软目标并制定一致性损失以使学生的预测与它们保持一致。

尽管基于Voxel的方法提高了检测的速度和效率,但由于丢失了point-wise特征,它们为降低定位精度付出了代价。

2.3、Point-Voxel Hybrid方法

为了同时实现效率和准确性,Point-Voxel 混合方法尝试利用基于Voxel的主干的高效计算和来自原始点云的准确位置信息。

STD 设计了一个 Spherical Anchor,在 PointNet 类网络的帮助下从原始点云生成建议。然后在第二阶段,使用局部 VFE 来提取Voxel特征以帮助进行框预测。在 SECOND 的基础上,SA-SSD 增加了一个可分离的辅助网络,将Voxel张量转换为point-wise特征,然后利用point-wise结构信息帮助训练骨干网络。PV-RCNN 设计了一个Voxel Set抽象模块,通过采样的关键点集成多尺度Voxel-wisepoint-wise特征。VIC-Net 提出了一个双分支网络,它由一个用于几何细节提取的点分支和一个用于有效生成ProposalsVoxel分支组成。

在本文中提出了一种语义引导的point-voxel交互方法 PV-RCNN++,以有效地整合Voxel-wisepoint-wise特征,为准确预测提供更全面和判别力更强的特征。

2.4、LiDAR-Camera Fusion方法

最近,已经提出了许多多模态工作来探索不同传感器数据的融合以进行 3D 目标检测。MV3D是直接结合点云BEV图、前视图和2D图像的特征来定位物体的开创性工作。

EPNet采用了一种精细化的方式,将点云中的每个点与对应的图像像素融合,以获得更多准确检测。然而,所有这些方法都不可避免地消耗大量的计算时间和内存。此外,PointPixels之间的对齐误差会对精度产生负面影响。

2.5、注意力机制

在过去的几年中,注意力机制在许多 2D 视觉任务中显示出其强大性能,因为它可以有效地捕获非局部信息以进行特征提取。如今,一些工作将注意力机制应用于 3D 点云处理(例如,点云分割)以获得出色的结果。

然而,这些方法只探索Point之间的注意力关系,而忽略了对Voxel的潜在影响。因此,本文引入了一个基于注意力的Voxel聚合模块来自适应地提取 3D 场景中的空间信息,从而实现更准确的 3D 目标检测。

3、本文方法

3.1、概览

不像以往的工作,作者认为

  1. 更多的前景点有利于捕捉关键结构和位置特征;

  2. 需要更快的查询策略来减轻点和体素之间的耗时交互;

  3. voxel-wise特征应该对相邻结构特征有更全面的感知,而不是局部卷积特征。

为此,提出了 PV-RCNN++: Semantical Point-Voxel Feature Interaction for 3D object detection,它由以下模块组成:

  • 引入 binary segmentation module ,引导 FPS 选择更多与目标相关的关键点;

  • 基于曼哈顿距离的voxel query代替了 ball query,更加快速采样voxel-wise特征;

  • 基于注意力的残差PointNet被设计为自适应地融合相邻体素特征以融合非局部3D结构信息。

Backbone如图 1 所示。给定点云  作为输入,其中 N = 16384,d 表示点特征(例如反射强度),目标是预测中心位置,box尺寸%(l,w,h)$和每个目标围绕Z轴的旋转角θ。

3.2、Voxel编码器和三维区域建议网络

首先,将无序点云转换为voxel大小为 v 的统一 3D 网格,每个网格包含 k 个点。然后,采用平均voxel特征编码器计算k个点的平均特征作为网格的代表特征。

3D Voxel CNN

通过平均 VFE,点云形状为 L×W×H 特征体积。利用 3D 稀疏卷积神经网络对具有 1×、2×、4×、8× 下采样大小的特征量进行编码。为后续的 point-voxel交互模块保留所有4个下采样的 voxel-wise特征图。

3D Region Proposal Network

在 3D Voxel Encoder 之后,第4个 8×下采样特征图被压缩为 L/8×W/8 分辨率的 2D BEV 特征图。在 BEV 特征图上利用基于Anchor的方法来生成具有每个类别平均大小的 3D Anchor框。考虑到围绕 Z 轴的旋转角度,为每个Anchor像素设置 0 和 π/2 度。因此,整个 BEV 图总共产生了 3×2×L/8×W/8 3个类别的提议:CarPedestrianCyclist

3.3、前景点采样

作者的动机是保留更多的前景点以捕获更有价值的空间和位置信息,同时不带来时间消耗的负担,因此精心重新设计了 PointNet++ 前景点采样模块。

正如在 3D-SSD 中提到的,尽管 PointNet++ 中的 FP 层可以将语义特征广播到所有点以提高分割精度,但对点进行上采样需要很多时间。因此,在 SA 层中捕获更多的前景点将是一个更好的选择。本文删除了 PointNet++ 中的 FP 层,并在 SA 层中采用了语义引导的采样策略。首先将具有特征 F 的原始点 P 输入分割模块以计算得分 S。然后在 S 的指导下,采用修改后的采样策略对 SA 层中的 K 个关键点进行采样。

具体过程如图2所示,描述如下:

1、Binary Segmentation Module

为了避免带来高计算量,采用 2 层 MLP 作为Binary Segmentation Module,直接获得点的分数。

具体来说,给定点特征集 ,其中  表示输入第 k 个 SA 层的点特征  的 d 维,得分  的每个点定义为:

其中Ω表示sigmoid函数,表示第k个SA层的分割模块。真正的分割标签可以从ground-truth box中获得。这里将 ground-truth 框内的点定义为前景点,而将外面的点定义为背景点。因此分割模块的损失可以计算为:

其中表示预测分数,是第k个SA层中第i个点的ground-truth标签(背景为0,前景为1)。BCE 是二元交叉熵损失函数。m 表示 SA 层数,设置为 4。 是输入点的总数,  是第 k 个 SA 层的损失权重。

2、Semantic-guided Further Point Sampling

由于已经从Binary Segmentation Module中获得了点分数,这意味着可能的前景点已经被掩盖了。选择前景点的最简单方法是使用 Top-K 分数作为指导。但是,从图 7 和表 2 中可以看出,如果选择的前景点过多而涉及的背景点较少,则会降低整个 3D 场景的感知能力。

作者通过添加称为 S-FPS 的分数权重来修改最远点采样策略。在保持 FPS 的基本流程不变的情况下,利用未选择点的分数来校正到选定点的距离。

给定点坐标集  和对应的分数集 ,距离集  是 N 个未选点到已选点的最短距离。在原始 FPS 中,距离最远的点被选为最远点。然而,在 S-FPS 中用分数  重新计算每个距离 ,如下公式:

其中 γ 是一个可调整的参数,决定分数的重要性,默认设置为 1。当 γ 固定时,分数  越接近 1, 越大。因此,与 FPS 相比,S-FPS 可以选择更多的正点(即前景点)。显然,如果 γ = +∞,S-FPS 将类似于 Top-K 算法。

S-FPS的具体过程如算法1所示:

3.4、更快的相邻Voxel Group

PV-RCNN 中原始的相邻voxel采样策略采用Ball查询对关键点周围的 3D voxel 特征进行采样。但是,Ball查询在计算每个voxel和关键点之间的欧几里得距离时占用了太多时间,效率相当低。值得注意的是,voxel有规律地排列在有序的 3D 空间中,可以通过索引轻松访问。

受 Voxel-R-CNN 的启发应用曼哈顿距离代替欧几里得距离来计算查询距离。不同的是,本文直接在关键点上操作,而 Voxel R-CNN 在 3D 提议网格上操作,这使得本文的方法需要更少的计算,但更多地关注关键信息。

1、Point to Voxel Coordinate

必须将选定关键点的坐标转换为voxel坐标,以查询相应 3D voxel特征图中的voxel索引。给定点坐标,voxel大小,点云范围,以及3D CNN下采样Stride ,voxel坐标 在第 k 个 3D voxel特征图中可以计算如下:

2、Voxel Query

Ball查询相比,voxel查询利用正整数 I(默认 I = 4)作为查询范围来产生偏移量  以访问中心voxel  周围的相邻voxel。为了确定相邻voxel是否在查询半径内,设置距离半径阈值来计算曼哈顿距离。具体来说,给定中心voxel坐标  和查询voxel坐标 ,曼哈顿距离  可以计算为:

为了在总共N个voxel中采样M个附近的voxel,球查询需要计算距离N次,而voxel查询只需要K次(M<K<N),其中K是中心voxel周围的相邻voxel数,将时间复杂度从O(N)降低到O(K)。

3.5、基于注意力的残差PointNet

在之前的工作中,直接采用简单的 PointNet-like MLP 来聚合采样voxel的粗略特征。然而,每个查询的voxel特征对学习局部结构信息的贡献是不平等的。3D 稀疏卷积操作限制了voxel更好地理解相邻 3D 结构和语义信息的能力。因此,作者考虑如何自适应地关注关键的voxel特征以获得更全面和重要的特征。

注意力机制在各种视觉任务中已经显示出它的强大威力。得益于self-attention机制,模型可以获得更大的感受野来概括非局部特征。作者注意到,通过voxel查询采样的voxel特征可以提供来自点云不同区域的不同结构和空间信息。因此,作者提出了一个基于注意力的残差点网络聚合模块来自适应地聚合来自点云热点区域的voxel特征。

1、Voxel Attention Module

如图 4 所示,给定特征集  由voxel查询采样的 N 个voxel,通过query Q、key K 和value V 得到 F 如下公式:

其中  , , 是由可学习矩阵组成的线性投影。那么第 i 个query的注意力权重  是通过 softmax 函数对key  和query  之间的点积相似度计算的:

其中  是比例因子,设置为voxel特征维度的长度。由于已经获得了每个query的注意力权重,因此通过计算  的加权和来生成细粒度值 :

最后,加入加权值和原始voxel-level特征来表示注意力特征。

2、Residual PointNet Aggregation

通过self-attention机制,每个voxel点融合了来自周围voxel的加权特征,可以自适应地关注局部结构信息的热点区域。接下来,加权值  被输入前馈网络以产生最终特征。

与采用简单线性层的 Transformer 不同,作者提出了一个轻量级的残差 PointNet 来传播加权值。如图5所示,给定加权值,由Convolution1DBatch NormalizationRelu组成的即插即用模块以跳跃连接的方式堆叠以提取的特征。最后,采用 MaxPooling 函数来产生具有代表性的voxel聚合特征。

3.6、ROI Grid Pooling

如图 1 所示,关键点  除了提取voxel特征外,还将原始点和 BEV 特征的分组特征连接起来,使关键点具有丰富的 3D 空间特征和语义特征。

接下来,将所有关键点特征  馈送到第二阶段 RoI-grid pooling,以细化 RPN 生成的 3D Proposals,以获得更准确和稳健的结果。

RoI-grid pooling 将每个 3D Proposal 均匀地划分为 6×6×6 的网格,可以表示为 。得益于前景采样模块,关键点特征包含更多与目标相关的特征,这使得每个网格  都包含更多信息丰富的前景关键点。

具体来说,给定半径  和网格点  ,如果关键点在内,则对关键点  的特征  进行分组。分组关键点特征集 K 定义如下:

其中  是从  到  的相对位置,它连接到特征  。然后将分组的关键点特征集 K 馈送到类似 PointNet 的模块以产生细化的特征。在获得每个proposal的细化RoI-grid特征后,采用2层MLPRoI-grid特征向量化为256维来表示最终特征。

3.7、损失函数

本文方法是一个端到端可训练的网络,通过多任务损失进行优化如下:

正如在第3.3节中提到的,分割损失是通过在SA层中采样的关键点上的二进制交叉熵损失来计算的。由3个部分损失组成:

其中α、α、α被赋值为{1.0, 2.0, 0.2},分别表示物体分类损失、位置回归损失和方向回归损失的权重系数。

为了避免模型在确定物体的方向时卡住的情况,给 α 一个相对较小的参数。具体来说, 是由 RetinaNet 由于前景和背景类别之间的巨大不平衡而引入的Focal Loss计算的。 由用于框回归的 smooth-L1 损失函数优化, 由用于角度回归的正弦误差损失计算。

 是 RoI 和 ground-truth 标签之间的损失,由细化阶段的分类置信损失 $L_{rcnncls、位置回归损失L_{rcnnloc}和框角损失L_{rcnncorner}组成。L_{rcnn}$ 的计算定义如下:

其中$L_{rcnncls使用二元交叉熵损失函数进行优化,L_{rcnnloc}和L_{rcnncorner}$ 是优化的 smooth-L1 损失函数。

此外,在将整个 3D 场景归纳为少量关键点后,重新加权是合理的,以确保前景点特征具有更大的权重,从而为细化阶段做出更多贡献。如图 6 所示,关键点  的重新加权损失是通过预测的关键点分数和真实标签中的真实标签之间的Focal Loss来计算的。

4、实验

4.1、消融实验

1、Foreground Point Sampling的有效性

在这一部分中测试了不同数量的前景点对检测精度的影响,如表2所示。前景点越多,结果越准确似乎是可行的。因此,将方程 3 中的 γ 设置为 1、2、3 和 100,以增加采样前景点的数量。

然而,事实证明,当 γ 变大时,性能反而下降。原因是在背景点较少的情况下采样过多的前景点(如 Top-K 采样策略)使得模型很难对整个 3D 场景有全局感知,这限制了其精确定位正确目标的能力。

如图 7 所示,当 γ = 1 时,采样的关键点可以聚焦在前景目标上,同时保留适当的背景点。

2、Voxel Query的有效性

Voxel Query 的作用是在不损失性能的情况下提高Voxel采样的速度。表 3 显示了在Ball查询和Voxel查询条件下 Car 类和每秒帧数 (FPS) 的 3D 检测精度。只用Voxel查询替换了Ball查询,同时保持其他模块不变。结果表明,Voxel查询提高了推理速度,但不影响精度。

3、Attention-based Residual PointNet的有效性

提出了Ball注意模块,以便Ball特征可以获得更大的感受野来整合其他Ball的特征,而不是自身唯一的局部特征。此外,添加了一个轻量级的残差 PointNet 模块以有效地聚合Ball特征。如表 4 所示,通过带有残差 PointNet 的注意力机制进一步提高了性能。

图 8 显示了编码成关键点的Ball注意特征,其中几乎整个目标都高度关注,不仅学习了局部空间特征,表明了基于注意力的残差 PointNet 模块的重要性。

4.2、SOTA对比

4.3、可视化与讨论

5、总结

在本文中介绍了 PV-RCNN++ 框架,这是一种用于 3D 目标检测的新型语义Point-Voxel特征交互,在 KITTI 基准测试中,它在汽车、行人和自行车上的 3D mAP 分别达到了 81.60%、40.18%、68.21%。

引入了一个精心设计的点云分割模块,作为对更多与目标相关的关键点进行采样的指南。通过基于曼哈顿距离的快速Voxel查询,加快了关键Point-Voxel之间的交互,以有效地对相邻的Voxel特征进行分组。

所提出的基于注意力的残差 PointNet 从附近的Voxel中提取了更细粒度的 3D 信息,为后续的细化提供了更全面的特征。

在 KITTI 数据集上的大量实验表明提出的语义引导Voxel到关键点检测器准确地总结了点云中关键区域的有价值信息,并与以前的最先进方法相比提高了性能。

6、参考

[1].PV-RCNN++: SEMANTICAL POINT-VOXEL FEATURE INTERACTION FOR 3D OBJECT DETECTION

7、推荐阅读

YOLOX升级 | 阿里巴巴提出YOLOX-PAI,1ms内精度无敌,超越YOLOv6、PP-YOLOE

全新高性能 FPN | ssFPN 教您如何修改 FPN 让大小目标在目标检测中都有提升!!!

YOLOP v2来啦 | YOLOv7结合YOLOP的多任务版本,超越YOLOP以及HybridNets

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐