点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
点击进入→自动驾驶之心技术交流群
后台回复【领域综述】获取自动驾驶全栈近80篇综述论文!
outdoor LiDAR
点云中的前景点(即物体)和背景点之间经常存在很大的不平衡。它阻碍了检测器专注于信息区域以产生准确的 3D 目标检测结果。本文通过语义
Point-Voxel
特征交互提出了一种新颖的目标检测网络,称为PV-RCNN++
。与大多数现有方法不同,PV-RCNN++
探索语义信息以提高目标检测的质量。首先,提出了一个语义分割模块来保留更多的判别前景关键点。这样的模块将指导
PV-RCNN++
在关键区域集成更多与目标相关的point-wise
和voxel-wise
特征。然后,为了使point-wise
和voxel-wise
有效地交互,作者利用基于曼哈顿距离的voxel query
来快速采样关键点周围的voxel-wise
特征。与ball query
相比,这样的voxel query
将把时间复杂度从O(N)
降低到O(K)
。此外,为了避免只学习局部特征,作者设计了一个基于注意力的残差 PointNet 模块来扩展感受野,以自适应地将相邻的
voxel-wise
特征聚合到关键点中。在 KITTI 数据集上的大量实验表明,
PV-RCNN++
在Car
、Pedestrian
和Cyclist
上实现了 81.60%、40.18%、68.21% 的 3D mAP,实现了与最先进技术相当甚至更好的性能。
随着自动驾驶、机器人系统和虚拟现实的发展,2D 和 3D 领域的目标检测变得越来越重要。
通过各种数据表示(例如,单目图像、立体相机和 LiDAR 点云)在 3D 目标检测方面取得了很大进展。与从 2D 图像中检测 3D 目标相比,LiDAR 点云在检测 3D 目标中发挥着关键作用,因为它包含相对精确的深度和 3D 空间结构信息。
基于 LiDAR 的 3D 目标检测器大致可分为两大类:Voxel-based
和Point-based
。
Voxel-based
将点离散为规则网格以方便 3D 稀疏卷积神经网络 (CNN)。然后,可以将体素化的特征图压缩为鸟瞰图(BEV),然后将其送到区域建议网络(RPN)以产生预测。相反,Point-based
的主要采用PointNet++
作为Backbone
,以原始Point
为输入,通过迭代采样和分组操作抽象Point
特征集。
与仅Voxel-based
和Point-based
的方法不同,PV-RCNN
探索了point-wise
和voxel-wise
特征之间的交互。特别是,PV-RCNN
深度集成了 3D Voxel CNN
和基于 PointNet
的集合抽象(SA),以增强特征学习能力。具体来说,提出了一种Voxel Set Abstraction
(VSA
),通过最远点采样(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-wise
和voxel-wise
特征。
作者有2个需求:
加快point
和voxel
之间的交互;
有效地从voxel-wise
特征中提取3D信息。
具体来说,首先采用 3D 稀疏卷积对体素化点云进行编码。然后,提出了一个快速voxel
到point
交互模块,以有效地对关键点周围的相邻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 数据集上取得了相当的性能。
一般来说,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 提案的几何线索,为细化提供更完整的结构和形状信息。
虽然基于点的方法有可能实现更准确的检测,但时间复杂度和内存消耗问题无法妥善解决,这限制了它们的进一步发展。
基于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
特征,它们为降低定位精度付出了代价。
为了同时实现效率和准确性,Point-Voxel
混合方法尝试利用基于Voxel
的主干的高效计算和来自原始点云的准确位置信息。
STD
设计了一个 Spherical Anchor
,在 PointNet
类网络的帮助下从原始点云生成建议。然后在第二阶段,使用局部 VFE
来提取Voxel
特征以帮助进行框预测。在 SECOND
的基础上,SA-SSD
增加了一个可分离的辅助网络,将Voxel
张量转换为point-wise
特征,然后利用point-wise
结构信息帮助训练骨干网络。PV-RCNN
设计了一个Voxel Set
抽象模块,通过采样的关键点集成多尺度Voxel-wise
和point-wise
特征。VIC-Net
提出了一个双分支网络,它由一个用于几何细节提取的点分支和一个用于有效生成Proposals
的Voxel
分支组成。
在本文中提出了一种语义引导的point-voxel
交互方法 PV-RCNN++
,以有效地整合Voxel-wise
和point-wise
特征,为准确预测提供更全面和判别力更强的特征。
最近,已经提出了许多多模态工作来探索不同传感器数据的融合以进行 3D 目标检测。MV3D
是直接结合点云BEV
图、前视图和2D
图像的特征来定位物体的开创性工作。
EPNet
采用了一种精细化的方式,将点云中的每个点与对应的图像像素融合,以获得更多准确检测。然而,所有这些方法都不可避免地消耗大量的计算时间和内存。此外,Point
和Pixels
之间的对齐误差会对精度产生负面影响。
在过去的几年中,注意力机制在许多 2D
视觉任务中显示出其强大性能,因为它可以有效地捕获非局部信息以进行特征提取。如今,一些工作将注意力机制应用于 3D
点云处理(例如,点云分割)以获得出色的结果。
然而,这些方法只探索Point
之间的注意力关系,而忽略了对Voxel
的潜在影响。因此,本文引入了一个基于注意力的Voxel
聚合模块来自适应地提取 3D
场景中的空间信息,从而实现更准确的 3D
目标检测。
不像以往的工作,作者认为
更多的前景点有利于捕捉关键结构和位置特征;
需要更快的查询策略来减轻点和体素之间的耗时交互;
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轴的旋转角θ。
首先,将无序点云转换为voxel
大小为 v 的统一 3D 网格,每个网格包含 k 个点。然后,采用平均voxel
特征编码器计算k个点的平均特征作为网格的代表特征。
通过平均 VFE
,点云形状为 L×W×H 特征体积。利用 3D 稀疏卷积神经网络对具有 1×、2×、4×、8× 下采样大小的特征量进行编码。为后续的 point-voxel
交互模块保留所有4个下采样的 voxel-wise
特征图。
在 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个类别的提议:Car
、Pedestrian
和Cyclist
。
作者的动机是保留更多的前景点以捕获更有价值的空间和位置信息,同时不带来时间消耗的负担,因此精心重新设计了 PointNet++
前景点采样模块。
正如在 3D-SSD
中提到的,尽管 PointNet++
中的 FP
层可以将语义特征广播到所有点以提高分割精度,但对点进行上采样需要很多时间。因此,在 SA
层中捕获更多的前景点将是一个更好的选择。本文删除了 PointNet++
中的 FP
层,并在 SA
层中采用了语义引导的采样策略。首先将具有特征 F 的原始点 P 输入分割模块以计算得分 S。然后在 S 的指导下,采用修改后的采样策略对 SA
层中的 K 个关键点进行采样。
具体过程如图2所示,描述如下:
为了避免带来高计算量,采用 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
层的损失权重。
由于已经从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所示:
PV-RCNN
中原始的相邻voxel
采样策略采用Ball
查询对关键点周围的 3D voxel
特征进行采样。但是,Ball
查询在计算每个voxel
和关键点之间的欧几里得距离时占用了太多时间,效率相当低。值得注意的是,voxel
有规律地排列在有序的 3D 空间中,可以通过索引轻松访问。
受 Voxel-R-CNN
的启发应用曼哈顿距离代替欧几里得距离来计算查询距离。不同的是,本文直接在关键点上操作,而 Voxel R-CNN
在 3D 提议网格上操作,这使得本文的方法需要更少的计算,但更多地关注关键信息。
必须将选定关键点的坐标转换为voxel
坐标,以查询相应 3D voxel
特征图中的voxel
索引。给定点坐标,voxel
大小,点云范围,以及3D CNN
下采样Stride
,voxel
坐标 在第 k 个 3D voxel
特征图中可以计算如下:
与Ball
查询相比,voxel
查询利用正整数 I(默认 I = 4)作为查询范围来产生偏移量 以访问中心voxel
周围的相邻voxel
。为了确定相邻voxel
是否在查询半径内,设置距离半径阈值来计算曼哈顿距离。具体来说,给定中心voxel
坐标 和查询voxel
坐标 ,曼哈顿距离 可以计算为:
为了在总共N个voxel
中采样M个附近的voxel
,球查询需要计算距离N次,而voxel
查询只需要K次(Mvoxel
数,将时间复杂度从O(N)降低到O(K)。
在之前的工作中,直接采用简单的 PointNet-like MLP
来聚合采样voxel
的粗略特征。然而,每个查询的voxel
特征对学习局部结构信息的贡献是不平等的。3D 稀疏卷积操作限制了voxel
更好地理解相邻 3D 结构和语义信息的能力。因此,作者考虑如何自适应地关注关键的voxel
特征以获得更全面和重要的特征。
注意力机制在各种视觉任务中已经显示出它的强大威力。得益于self-attention
机制,模型可以获得更大的感受野来概括非局部特征。作者注意到,通过voxel
查询采样的voxel
特征可以提供来自点云不同区域的不同结构和空间信息。因此,作者提出了一个基于注意力的残差点网络聚合模块来自适应地聚合来自点云热点区域的voxel
特征。
如图 4 所示,给定特征集 由voxel
查询采样的 N 个voxel
,通过query Q、key K 和value V 得到 F 如下公式:
其中 , , 是由可学习矩阵组成的线性投影。那么第 i 个query的注意力权重 是通过 softmax 函数对key 和query 之间的点积相似度计算的:
其中 是比例因子,设置为voxel
特征维度的长度。由于已经获得了每个query的注意力权重,因此通过计算 的加权和来生成细粒度值 :
最后,加入加权值和原始voxel-level
特征来表示注意力特征。
通过self-attention
机制,每个voxel
点融合了来自周围voxel
的加权特征,可以自适应地关注局部结构信息的热点区域。接下来,加权值 被输入前馈网络以产生最终特征。
与采用简单线性层的 Transformer
不同,作者提出了一个轻量级的残差 PointNet 来传播加权值。如图5所示,给定加权值,由Convolution1D
、Batch Normalization
和Relu
组成的即插即用模块以跳跃连接的方式堆叠以提取的特征。最后,采用 MaxPooling
函数来产生具有代表性的voxel
聚合特征。
如图 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层MLP
将RoI-grid
特征向量化为256维来表示最终特征。
本文方法是一个端到端可训练的网络,通过多任务损失进行优化如下:
正如在第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
来计算的。
在这一部分中测试了不同数量的前景点对检测精度的影响,如表2所示。前景点越多,结果越准确似乎是可行的。因此,将方程 3 中的 γ 设置为 1、2、3 和 100,以增加采样前景点的数量。
然而,事实证明,当 γ 变大时,性能反而下降。原因是在背景点较少的情况下采样过多的前景点(如 Top-K
采样策略)使得模型很难对整个 3D 场景有全局感知,这限制了其精确定位正确目标的能力。
如图 7 所示,当 γ = 1 时,采样的关键点可以聚焦在前景目标上,同时保留适当的背景点。
Voxel Query
的作用是在不损失性能的情况下提高Voxel
采样的速度。表 3 显示了在Ball
查询和Voxel
查询条件下 Car 类和每秒帧数 (FPS) 的 3D 检测精度。只用Voxel
查询替换了Ball
查询,同时保持其他模块不变。结果表明,Voxel
查询提高了推理速度,但不影响精度。
提出了Ball
注意模块,以便Ball
特征可以获得更大的感受野来整合其他Ball
的特征,而不是自身唯一的局部特征。此外,添加了一个轻量级的残差 PointNet
模块以有效地聚合Ball
特征。如表 4 所示,通过带有残差 PointNet
的注意力机制进一步提高了性能。
图 8 显示了编码成关键点的Ball
注意特征,其中几乎整个目标都高度关注,不仅学习了局部空间特征,表明了基于注意力的残差 PointNet
模块的重要性。
在本文中介绍了 PV-RCNN++
框架,这是一种用于 3D
目标检测的新型语义Point-Voxel
特征交互,在 KITTI
基准测试中,它在汽车、行人和自行车上的 3D mAP
分别达到了 81.60%、40.18%、68.21%。
引入了一个精心设计的点云分割模块,作为对更多与目标相关的关键点进行采样的指南。通过基于曼哈顿距离的快速Voxel
查询,加快了关键Point-Voxel
之间的交互,以有效地对相邻的Voxel
特征进行分组。
所提出的基于注意力的残差 PointNet
从附近的Voxel
中提取了更细粒度的 3D
信息,为后续的细化提供了更全面的特征。
在 KITTI
数据集上的大量实验表明提出的语义引导Voxel
到关键点检测器准确地总结了点云中关键区域的有价值信息,并与以前的最先进方法相比提高了性能。
[1].PV-RCNN++: SEMANTICAL POINT-VOXEL FEATURE INTERACTION FOR 3D OBJECT DETECTION
往期回顾
史上最全综述 | 3D目标检测算法汇总!(单目/双目/LiDAR/多模态/时序/半弱自监督)
【自动驾驶之心】全栈技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D感知、多传感器融合、SLAM、高精地图、规划控制、AI模型部署落地等方向;
加入我们:自动驾驶之心技术交流群汇总!
自动驾驶之心【知识星球】
想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D感知、多传感器融合、目标跟踪)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!