Abstract
我们提出了一种新颖的高性能3D目标检测框架,名为PointVoxel-RCNN(PV-RCNN),用于从点云进行准确的3D目标检测。我们提出的方法深度集成了3D体素卷积神经网络(CNN)和基于PointNet的集合抽象,以学习更多有区别的点云特征。它利用了3D体素CNN的高效学习和高质量proposals以及基于PointNet的网络的灵活感受野。具体来说,所提出的框架通过一个新颖的体素集抽象模块将具有3D体素CNN的3D场景总结为一小组关键点,以节省后续计算并编码具有代表性的场景特征。鉴于体素CNN生成的高质量3D proposals,提出了RoI-grid池化,以通过具有多个感受野的关键点集抽象将特定proposal的特征从关键点抽象到RoI网格点。与传统的池化操作相比,RoI-grid特征点编码了更丰富的上下文信息,用于准确估计目标置信度和位置。在KITTI数据集和Waymo Open数据集上的大量实验表明,我们提出的PV-RCNN仅使用点云就以显着的优势超越了最先进的3D检测方法。代码可在https://github.com/open-mmlab/OpenPCDet获得。
1. Introduction
3D目标检测由于其在自动驾驶和机器人等各个领域的广泛应用,越来越受到工业界和学术界的关注。LiDAR传感器广泛应用于自动驾驶车辆和机器人中,用于将3D场景信息捕获为稀疏和不规则的点云,为3D场景感知和理解提供重要线索。在本文中,我们建议通过设计新颖的点体素集成网络从不规则点云中学习更好的3D特征来实现高性能的3D目标检测。
图1.我们提出的PV-RCNN框架通过双步策略深度集成了基于体素和基于PointNet的网络,包括体素到关键点3D场景编码和关键点到网格RoI特征抽象以提高性能3D目标检测。
大多数现有的3D检测方法可以根据点云表示分为两类,即基于网格的方法和基于点的方法。基于网格的方法通常将不规则点云转换为规则表示,例如3D体素[27、41、34、2、26]或2D鸟瞰图[1、11、36、17、35、12、16],可以通过3D或2D卷积神经网络(CNN)进行有效处理,以学习用于3D检测的点特征。在开创性工作PointNet及其变体[23、24]的支持下,基于点的方法[22、25、32、37]直接从原始点云中提取判别特征用于3D检测。一般来说,基于网格的方法计算效率更高,但不可避免的信息丢失会降低细粒度的定位精度,而基于点的方法具有更高的计算成本,但可以通过点集抽象轻松实现更大的感受野[24]。然而,我们展示了一个统一的框架可以整合两种方法中最好的方法,并以显着的优势超越先前最先进的3D检测方法。
我们提出了一种新颖的3D目标检测框架PV-RCNN(如图1所示),它通过结合基于点和基于体素的特征学习方法的优势来提高3D检测性能。PV-RCNN的原理在于基于体素的操作有效地编码了多尺度特征表示并且可以生成高质量的3D proposals,而基于点网络的集合抽象操作通过灵活的感受野保留了准确的位置信息。我们认为,这两种类型的特征学习框架的集成可以帮助学习更多的判别特征,以实现准确的细粒度框细化。
主要挑战将是如何有效地将两种类型的特征学习方案,特别是具有稀疏卷积的3D体素CNN[6, 5]和基于PointNet的集合抽象[24]结合到一个统一的框架中。一个直观的解决方案是在每个3D proposal中统一采样几个网格点,并采用集合抽象来聚合这些网格点周围的3D体素特征以进行proposal细化。然而,这种策略是高度内存密集型的,因为体素的数量和网格点的数量都可能非常大,以达到令人满意的性能。
因此,为了更好地整合这两种类型的点云特征学习网络,我们提出了一个两步策略,第一个体素到关键点场景编码步骤和第二个关键点到网格RoI特征抽象步骤。具体来说,采用具有3D稀疏卷积的体素CNN进行体素特征学习和准确的proposal生成。为了缓解上述需要太多体素来对整个场景进行编码的问题,通过最远点采样(FPS)选择一小组关键点来总结来自体素特征的整体3D信息。每个关键点的特征通过基于PointNet的集合抽象对相邻的体素特征进行分组来聚合,以汇总多尺度点云信息。通过这种方式,整个场景可以通过具有相关多尺度特征的少量关键点进行有效且高效的编码。
对于第二个keypoint-to-grid RoI特征抽象步骤,给定每个box proposal及其网格点位置,提出了一个RoI-grid pooling模块,其中每个网格点采用具有多个半径的关键点集抽象层来聚合来自具有多尺度上下文的关键点的特征。然后,所有网格点的聚合特征可以共同用于后续的proposal细化。我们提出的PV-RCNN有效地利用了基于点和基于体素的网络来对每个框proposal的判别特征进行编码,以实现准确的置信度预测和细粒度的框细化。
我们的贡献可以概括为四方面。(1)我们提出了PV-RCNN框架,该框架有效地利用了基于体素和基于点的3D点云特征学习方法,从而提高了3D目标检测的性能,并且内存消耗可控。(2)我们提出体素-关键点场景编码方案,通过体素集抽象层将整个场景的多尺度体素特征编码为一小部分关键点。这些关键点特征不仅保留了准确的位置,而且还编码了丰富的场景上下文,从而显着提高了3D检测性能。(3)我们为每个proposal中的网格点提出了一个多尺度RoI特征抽象层,该层从具有多个感受野的场景中聚合更丰富的上下文信息,以实现准确的框细化和置信度预测。(4)我们提出的方法PV-RCNN在竞争激烈的KITTI 3D检测基准[10]上以显着的优势优于所有先前的方法,并且在大规模Waymo Open数据集上也以较大的优势超越了先前的方法。
2. Related Work
3D Object Detection with Grid-based Methods. 为了解决点云的不规则数据格式,大多数现有的工作将点云投影到规则网格中,以供2D或3D CNN处理。开创性的工作MV3D[1]将点云投影到2D鸟瞰网格并放置大量预定义的3D锚以生成3D边界框,以下工作[11、17、16]开发了更好的多传感器融合策略,同时[36,35,12]提出了更有效的鸟瞰表示框架。其他一些工作[27, 41]将点云划分为3D体素,由3D CNN处理,并引入3D稀疏卷积[5][34]以实现高效的3D体素处理。[30, 42]利用多个检测头,而[26]探索目标部分位置以提高性能。这些基于网格的方法对于准确的3D proposal生成通常是有效的,但感受野受到2D/3D卷积的内核大小的限制。
3D Object Detection with Point-based Methods. FPointNet[22]首先提出将PointNet[23, 24]应用于基于2D图像边界框的裁剪点云的3D检测。PointRCNN[25]直接从整个点云生成3D proposals,而不是仅使用点云进行3D检测的2D图像,以下工作STD[37]提出了从稀疏到密集的策略以更好地优化proposal。[21]提出了用于更好的目标特征分组的霍夫投票策略。这些基于点的方法大多基于PointNet系列,尤其是集合抽象操作[24],它为点云特征学习提供了灵活的感受野。
Representation Learning on Point Clouds. 最近,点云表示学习在提高点云分类和分割的性能方面引起了很多关注[23、24、41、31、7、38、15、28、33、8、29、3]。在3D检测方面,以前的方法通常将点云投影到常规鸟瞰网格[1, 36]或3D体素[41, 2]以使用2D/3D CNN处理点云。[34, 26]中采用3D稀疏卷积[6, 5]以有效地从点云中学习稀疏体素特征。Qi等人[23, 24]提出PointNet直接从原始点云中学习逐点特征,其中集合抽象操作通过设置不同的搜索半径来实现灵活的感受野。[19]结合了基于体素的CNN和基于点的SharedMLP,用于高效的点云特征学习。相比之下,我们提出的PVRCNN同时利用了基于体素的特征学习(即3D稀疏卷积)和基于PointNet的特征学习(即集合抽象操作),以实现高质量的3D proposal生成和灵活的接受域提高3D检测性能。
3. PV-RCNN for Point Cloud Object Detection
在本文中,我们提出了PointVoxel-RCNN(PV-RCNN),这是一个两阶段的3D检测框架,旨在从点云中进行更准确的3D目标检测。最先进的3D检测方法基于具有稀疏卷积的3D体素CNN或基于PointNet的网络作为主干。通常,具有稀疏卷积的3D体素CNN更有效[34, 26]并且能够生成高质量的3D目标proposals,而基于PointNet的方法可以通过灵活的感受野捕获更准确的上下文信息。
我们的PV-RCNN深度融合了两类网络的优势。如图2所示,PV-RCNN由一个3D体素CNN组成,稀疏卷积作为高效特征编码和proposal生成的主干。给定每个3D目标proposal,为了有效地从场景中汇集其相应的特征,我们提出了两种新颖的操作:体素到关键点的场景编码,它将整个场景特征量的所有体素汇总为少量特征关键点,以及点到网格RoI特征抽象,它有效地将场景关键点特征聚合到RoI网格中,用于proposal置信度预测和位置细化。
3.1. 3D Voxel CNN for Efficient Feature Encoding and Proposal Generation
具有3D稀疏卷积的Voxel CNN[6, 5, 34, 26]是最先进的3D检测器的流行选择,用于有效地将点云转换为稀疏3D特征量。由于它的高效率和准确性,我们采用它作为我们的特征编码和3D proposal生成框架的主干。
3D体素CNN。首先将输入点
P
\mathbf{P}
P划分为空间分辨率为
L
×
W
×
H
L \times W \times H
L×W×H的小体素,其中非空体素的特征直接计算为所有内部点的逐点特征的平均值。常用的特征是3D坐标和反射强度。该网络利用一系列
3
×
3
×
3
3 \times 3 \times 3
3×3×3 3D稀疏卷积将点云逐渐转换为具有
1
×
,
2
×
,
4
×
,
8
×
1 \times, 2 \times, 4 \times, 8 \times
1×,2×,4×,8×下采样大小的特征量。每个级别的这种稀疏特征量可以被视为一组体素特征向量。
3D proposal生成。通过将编码的8倍下采样3D特征量转换为2D鸟瞰特征图,按照基于锚的方法[34, 12]生成高质量的3D proposals。具体来说,我们沿Z轴堆叠3D特征量以获得
L
8
×
W
8
\frac{L}{8} \times \frac{W}{8}
8L?×8W?鸟瞰特征图。每个类有
2
×
L
8
×
W
8
2 \times \frac{L}{8} \times \frac{W}{8}
2×8L?×8W?锚框,采用该类的平均3D目标大小,并为鸟瞰特征图的每个像素评估两个0°、90°方向的锚。如表4所示,采用基于锚的方案的3D体素CNN主干网络比基于PointNet的方法[25, 37]实现了更高的召回性能。
Discussions. 最先进的检测器大多采用两阶段框架。他们需要从生成的3D特征量或2D地图中汇集RoI特定特征,以进一步优化proposal。然而,来自3D体素CNN的这些3D特征量在以下方面存在重大限制。(i)这些特征量通常具有低空间分辨率,因为它们被下采样多达8倍,这阻碍了输入场景中目标的准确定位。(ii)即使可以上采样以获得更大空间尺寸的特征量/地图,它们通常仍然非常稀疏。RoIPooling/RoIAlign操作中常用的三线性或双线性插值只能从非常小的邻域中提取特征(即双线性和三线性插值分别为4和8个最近邻)。因此,传统的池化方法将获得大部分为零的特征,并浪费大量计算和内存用于第2阶段的细化。
另一方面,PointNet[23,24]的变体中提出的集合抽象操作已经显示了对来自任意大小的邻域的特征点进行编码的强大能力。因此,我们建议将3D体素CNN与一系列集合抽象操作相结合,以进行精确和鲁棒的第二阶段proposal细化。
使用集合抽象操作来池化场景特征体素的一个简单的解决方案是直接将场景中的多尺度特征体积聚合到RoI网格。然而,这种直观的策略只是占用大量内存,在实践中使用效率低下。例如,来自KITTI数据集的常见场景可能会在4倍下采样的特征体积中产生18,000个体素。如果每个场景使用100个box proposal并且每个box proposal有
3
×
3
×
3
3 \times 3 \times 3
3×3×3个网格。即使在距离阈值化之后,也无法有效地计算
2
,
700
×
18
,
000
2,700 \times 18,000
2,700×18,000的成对距离和特征聚合。
为了解决这个问题,我们提出了一种两步方法,首先将整个场景的不同神经层的体素编码为少量关键点,然后将关键点特征聚合到RoI网格以进行框proposal细化。
图2.我们提出的PV-RCNN的整体架构。原始点云首先被体素化以馈入基于3D稀疏卷积的编码器,以学习多尺度语义特征并生成3D目标proposals。然后通过新颖的体素集抽象模块将在多个神经层学习到的体素特征量总结为一小组关键点。最后,关键点特征被聚合到RoI网格点,以学习用于细粒度proposal细化和置信度预测的proposal特定特征。
表4. 在KITTI val拆分集的中等难度级别的汽车类上召回不同的proposal生成网络。
3.2. Voxel-to-keypoint Scene Encoding via Voxel Set Abstraction
我们提出的框架首先将代表整个场景的多个神经层的体素聚合成少量的关键点,作为3D体素CNN特征编码器和proposal细化网络之间的桥梁。
Keypoints Sampling. 具体来说,我们采用FurthestPoint-Sampling (FPS)算法从点云
P
\mathbf{P}
P中采样少量的
n
n
n个关键点
K
=
{
p
1
,
?
?
,
p
n
}
\mathcal{K}=\left\{p_{1}, \cdots, p_{n}\right\}
K={p1?,?,pn?},其中KITTI数据集的
n
=
2048
n = 2048
n=2048,Waymo数据集的
n
=
4096
n = 4096
n=4096。这种策略鼓励关键点均匀分布在非空体素周围,并且可以代表整个场景。
Voxel Set Abstraction Module. 我们提出了Voxel Set Abstraction(VSA)模块来编码从3D CNN特征量到关键点的多尺度语义特征。[24]提出的集合抽象操作被用于聚合体素特征量。关键点的周围点现在是具有多尺度语义特征的常规体素,由3D体素CNN从多个级别编码,而不是具有从PointNet学习到的特征的相邻原始点。
具体而言,将
F
(
l
k
)
=
{
f
1
(
l
k
)
,
?
?
,
f
N
k
(
l
k
)
}
\mathcal{F}^{\left(l_{k}\right)}=\left\{f_{1}^{\left(l_{k}\right)}, \cdots, f_{N_{k}}^{\left(l_{k}\right)}\right\}
F(lk?)={f1(lk?)?,?,fNk?(lk?)?}表示为3D voxel CNN第
k
k
k层的体素特征向量集合,
V
(
l
k
)
=
{
v
1
(
l
k
)
,
?
?
,
v
N
k
(
l
k
)
}
\mathcal{V}^{\left(l_{k}\right)}=\left\{v_{1}^{\left(l_{k}\right)}, \cdots, v_{N_{k}}^{\left(l_{k}\right)}\right\}
V(lk?)={v1(lk?)?,?,vNk?(lk?)?}作为它们的3D坐标,由第
k
k
k层的体素索引和实际体素大小计算,其中
N
k
N_{k}
Nk?是第
k
k
k层中非空体素的数量。对于每个关键点
p
i
p_{i}
pi?,我们首先在半径
r
k
r_{k}
rk?内的第
k
k
k层识别其相邻的非空体素,以检索体素特征向量集:
S
i
(
l
k
)
=
{
[
[
f
j
(
l
k
)
;
v
j
(
l
k
)
?
p
i
]
T
∣
∥
v
j
(
l
k
)
?
p
i
∥
2
<
r
k
,
?
v
j
(
l
k
)
∈
V
(
l
k
)
,
?
f
j
(
l
k
)
∈
F
(
l
k
)
}
(1)
S_{i}^{\left(l_{k}\right)}=\left\{\left[\begin{array}{l|l} {\left[f_{j}^{\left(l_{k}\right)} ; v_{j}^{\left(l_{k}\right)}-p_{i}\right.} \end{array}\right]^{T} \mid \begin{array}{l} \left\|v_{j}^{\left(l_{k}\right)}-p_{i}\right\|^{2}< r_{k}, \\ \forall v_{j}^{\left(l_{k}\right)} \in \mathcal{V}^{\left(l_{k}\right)}, \\ \forall f_{j}^{\left(l_{k}\right)} \in \mathcal{F}^{\left(l_{k}\right)} \end{array}\right\} \tag{1}
Si(lk?)?=????????[[fj(lk?)?;vj(lk?)??pi??]T∣∥∥∥?vj(lk?)??pi?∥∥∥?2<rk?,?vj(lk?)?∈V(lk?),?fj(lk?)?∈F(lk?)?????????(1)
其中我们连接局部相对坐标
v
j
(
l
k
)
?
p
i
v_{j}^{\left(l_{k}\right)} - p_{i}
vj(lk?)??pi?以指示语义体素特征
f
j
(
l
k
)
f_{j}^{\left(l_{k}\right)}
fj(lk?)?的相对位置。然后将
p
i
p_{i}
pi?的相邻体素集
S
i
(
l
k
)
S_{i}^{\left(l_{k}\right)}
Si(lk?)?内的体素特征通过PointNet-block[23]转换,以生成关键点
p
i
p_{i}
pi?的特征:
f
i
(
p
v
k
)
=
max
?
{
G
(
M
(
S
i
(
l
k
)
)
)
}
(2)
f_{i}^{\left(p v_{k}\right)}=\max \left\{G\left(\mathcal{M}\left(S_{i}^{\left(l_{k}\right)}\right)\right)\right\} \tag{2}
fi(pvk?)?=max{G(M(Si(lk?)?))}(2)
其中
M
(
?
)
\mathcal{M}(\cdot)
M(?)表示从相邻集合
S
i
(
l
k
)
S_{i}^{\left(l_{k}\right)}
Si(lk?)?中随机采样至多
T
k
T_{k}
Tk?体素以节省计算量,
G
(
?
)
G(\cdot)
G(?)表示多层感知器网络以对体素特征和相对位置进行编码。尽管相邻体素的数量在不同的关键点上有所不同,但沿通道最大池化操作
max
?
(
?
)
\max (\cdot)
max(?)将不同数量的相邻体素特征向量映射到关键点
p
i
p_{i}
pi?的特征向量
f
i
(
p
v
k
)
f_{i}^{\left(p v_{k}\right)}
fi(pvk?)?。通常,我们还在第
k
k
k层设置多个半径,以聚合具有不同感受野的局部体素特征,以捕获更丰富的多尺度上下文信息。
上述体素集抽象是在3D体素CNN的不同层次上进行的,不同层次的聚合特征可以串联起来生成关键点
p
i
p_{i}
pi?的多尺度语义特征
f
i
(
p
v
)
=
[
f
i
(
p
v
1
)
,
f
i
(
p
v
2
)
,
f
i
(
p
v
3
)
,
f
i
(
p
v
4
)
]
,
?for?
i
=
1
,
?
?
,
n
(3)
f_{i}^{(p v)}=\left[f_{i}^{\left(p v_{1}\right)}, f_{i}^{\left(p v_{2}\right)}, f_{i}^{\left(p v_{3}\right)}, f_{i}^{\left(p v_{4}\right)}\right], \text { for } i=1, \cdots, n \tag{3}
fi(pv)?=[fi(pv1?)?,fi(pv2?)?,fi(pv3?)?,fi(pv4?)?],?for?i=1,?,n(3) 其中生成的特征
f
i
(
p
v
)
f_{i}^{(p v)}
fi(pv)?结合了从体素特征
f
j
(
l
k
)
f_{j}^{\left(l_{k}\right)}
fj(lk?)?中基于3D体素CNN的特征学习和从体素集抽象中基于PointNet的特征学习,如公式(2)。此外,
p
i
p_{i}
pi?的3D坐标还保留了准确的位置信息。
Extended VSA Module. 我们通过进一步丰富原始点云
P
\mathbf{P}
P和8倍下采样2D鸟瞰图特征图(如3.1节所述)的关键点特征来扩展VSA模块,其中原始点云部分弥补了原始点云的量化损失。初始点云体素化,而2D鸟瞰图沿Z轴具有更大的感受野。原始点云特征
f
i
(
r
a
w
)
f_{i}^{(r a w)}
fi(raw)?也被聚合为公式(2)。对于鸟瞰特征图,我们将关键点
p
i
p_{i}
pi?投影到2D鸟瞰坐标系,并利用双线性插值从鸟瞰特征图中获得特征
f
i
(
b
e
v
)
f_{i}^{(b e v)}
fi(bev)?。因此,通过连接所有相关特征进一步丰富了
p
i
p_{i}
pi?的关键点特征
f
i
(
p
)
=
[
f
i
(
p
v
)
,
f
i
(
raw?
)
,
f
i
(
b
e
v
)
]
,
?for?
i
=
1
,
?
?
,
n
(4)
f_{i}^{(p)}=\left[f_{i}^{(p v)}, f_{i}^{(\text {raw })}, f_{i}^{(b e v)}\right], \text { for } i=1, \cdots, n \tag{4}
fi(p)?=[fi(pv)?,fi(raw?)?,fi(bev)?],?for?i=1,?,n(4) 具有很强的保留整个场景的3D结构信息的能力,也可以大幅提升最终的检测性能。
图3.预测关键点加权模块示意图。
Predicted Keypoint Weighting. 在整个场景由少量关键点编码后,它们将被后续阶段进一步用于进行proposal细化。关键点由进Further Point Sampling策略选择,其中一些可能仅代表背景区域。直观地说,属于前景目标的关键点应该对proposals的精确细化贡献更大,而来自背景区域的关键点应该贡献更少。
因此,我们提出了一个Predicted Keypoint Weighting(PKW)模块(见图3),通过点云分割的额外监督来重新加权关键点特征。由于自动驾驶场景中的3D目标在3D空间中自然分离,因此可以通过3D检测框注释直接生成分割标签,即通过检查每个关键点是在ground-truth 3D框内部还是外部。每个关键点的特征
f
~
i
(
p
)
\tilde{f}_{i}^{(p)}
f~?i(p)?的预测特征权重可以表示为
f
~
i
(
p
)
=
A
(
f
i
(
p
)
)
?
f
i
(
p
)
(5)
\tilde{f}_{i}^{(p)}=\mathcal{A}\left(f_{i}^{(p)}\right) \cdot f_{i}^{(p)} \tag{5}
f~?i(p)?=A(fi(p)?)?fi(p)?(5)
其中
A
(
?
)
\mathcal{A}(\cdot)
A(?)是具有sigmoid函数的三层MLP网络,用于预测[0, 1]之间的前景置信度。PKW模块由具有默认超参数的焦点损失[18]进行训练,用于处理训练集中前景/背景点的不平衡数量。
3.3. Keypoint-to-grid RoI Feature Abstraction for Proposal Refinement
在上一步中,将整个场景归纳为少量具有多尺度语义特征的关键点。给定由3D体素CNN生成的每个3D proposal(RoI),每个RoI的特征需要从关键点特征
F
~
=
{
f
~
1
(
p
)
,
?
?
,
f
~
n
(
p
)
}
\tilde{\mathcal{F}}=\left\{\tilde{f}_{1}^{(p)}, \cdots, \tilde{f}_{n}^{(p)}\right\}
F~={f~?1(p)?,?,f~?n(p)?}准确和强大的proposal细化。我们提出了基于集合抽象操作的关键点到网格RoI特征抽象,用于多尺度RoI特征编码。
图4.RoI-grid pooling模块示意图。每个3D RoI的丰富上下文信息由具有多个感受野的集合抽象操作聚合而成。
RoI-grid Pooling via Set Abstraction. 给定每个3D RoI,如图4所示,我们提出RoI-grid pooling模块将关键点特征聚合到具有多个感受野的RoI-grid点。我们在每个3D proposal中统一采样
6
×
6
×
6
6 \times 6 \times 6
6×6×6网格点,表示为
G
=
{
g
1
,
?
?
,
g
216
}
\mathcal{G}=\left\{g_{1}, \cdots, g_{216}\right\}
G={g1?,?,g216?}。采用集合抽象操作从关键点特征中聚合网格点的特征。具体来说,我们首先将网格点
g
i
g_{i}
gi?在半径
r
~
\tilde{r}
r~内的相邻关键点识别为
Ψ
~
=
{
[
f
~
j
(
p
)
;
p
j
?
g
i
]
T
∥
p
j
?
g
i
∥
2
<
r
~
?
p
j
∈
K
,
?
f
~
j
(
p
)
∈
F
~
}
(6)
\tilde{\Psi}=\left\{\left[\begin{array}{l|l} \left.\tilde{f}_{j}^{(p)} ; p_{j}-g_{i}\right]^{T} & \begin{array}{l} \left\|p_{j}-g_{i}\right\|^{2}<\tilde{r} \\ \forall p_{j} \in \mathcal{K}, \forall \tilde{f}_{j}^{(p)} \in \tilde{\mathcal{F}} \end{array} \end{array}\right\}\right. \tag{6}
Ψ~={[f~?j(p)?;pj??gi?]T?∥pj??gi?∥2<r~?pj?∈K,?f~?j(p)?∈F~??}(6)
其中
p
j
?
g
i
p_{j}-g_{i}
pj??gi?被附加以指示特征
f
~
j
(
p
)
\tilde{f}_{j}^{(p)}
f~?j(p)?与关键点
p
j
p_{j}
pj?的局部相对位置。然后采用PointNet-block[23]聚合相邻关键点特征集
Ψ
~
\tilde{\Psi}
Ψ~以生成网格点
g
i
g_{i}
gi?的特征为
f
~
i
(
g
)
=
max
?
{
G
(
M
(
Ψ
~
)
)
}
(7)
\tilde{f}_{i}^{(g)}=\max \{G(\mathcal{M}(\tilde{\Psi}))\} \tag{7}
f~?i(g)?=max{G(M(Ψ~))}(7)
其中
M
(
?
)
\mathcal{M}(\cdot)
M(?)和
G
(
?
)
G(\cdot)
G(?)在公式(2)中定义相同。我们设置多个半径并聚合具有不同感受野的关键点特征,将它们连接在一起以捕获更丰富的多尺度上下文信息。
从其周围的关键点获得每个网格的聚合特征后,相同RoI的所有RoI-grid特征可以通过具有256个特征维度的两层MLP进行向量化和转换,以表示整体proposal。
与之前工作中的点云3D RoI池化操作[25, 37, 26]相比,我们提出的针对关键点的RoI-grid池化操作能够通过灵活的感受野捕获更丰富的上下文信息,其中感受野甚至超出用于捕获3D RoI之外的周围关键点特征的RoI边界,而之前的最新状态方法要么简单地将proposal中的所有逐点特征平均为RoI特征[25],要么将许多无信息的零作为RoI特征[26, 37]。
3D Proposal Refinement and Confidence Prediction. 给定每个框proposal的RoI特征,proposal细化网络学习预测相对于输入3D proposal的大小和位置(即中心、大小和方向)残差。细化网络采用2层MLP,有两个分支分别用于置信度预测和框细化。
对于置信度预测分支,我们按照[14,9,26]采用3D RoI与其对应的ground-truth框之间的3D Intersection-over-Union(IoU)作为训练目标。对于第
k
k
k个3D RoI,其置信度训练目标
y
k
y_{k}
yk?被归一化为[0, 1]之间
y
k
=
min
?
(
1
,
max
?
(
0
,
2
IoU
?
k
?
0.5
)
)
(8)
y_{k}=\min \left(1, \max \left(0,2 \operatorname{IoU}_{k}-0.5\right)\right) \tag{8}
yk?=min(1,max(0,2IoUk??0.5))(8)
其中
I
o
U
k
\mathrm{IoU}_{k}
IoUk?是第
k
k
k个RoI相对于其ground-truth框的IoU。然后训练我们的置信分支以最小化预测置信目标时的交叉熵损失,
L
i
o
u
=
?
y
k
log
?
(
y
~
k
)
?
(
1
?
y
k
)
log
?
(
1
?
y
~
k
)
(9)
L_{\mathrm{iou}}=-y_{k} \log \left(\tilde{y}_{k}\right)-\left(1-y_{k}\right) \log \left(1-\tilde{y}_{k}\right) \tag{9}
Liou?=?yk?log(y~?k?)?(1?yk?)log(1?y~?k?)(9)
其中
y
~
k
\tilde{y}_{k}
y~?k?是网络的预测分数。我们在表9中的实验表明,这种质量感知置信度预测策略比传统的分类目标具有更好的性能。
框细化分支的框回归目标采用传统的基于残差的方法进行编码,如[34, 26],并通过smooth-L1损失函数进行优化。
表9. 预测关键点加权模块、RoI-grid pooling模块和IoU引导的置信度预测的效果。
3.4. Training losses
提出的PV-RCNN框架使用区域proposal损失
L
r
p
n
L_{\mathrm{rpn}}
Lrpn?、关键点分割损失
L
S
e
g
L_{\mathrm{Seg}}
LSeg?和proposal细化损失
L
r
c
n
n
L_{\mathrm{rcnn}}
Lrcnn?进行端到端训练。(1)我们采用与[34]相同的region proposal loss
L
r
p
n
L_{\mathrm{rpn}}
Lrpn?作为
L
r
p
n
=
L
c
l
s
+
β
∑
r
∈
{
x
,
y
,
z
,
l
,
h
,
w
,
θ
}
L
s
m
o
o
t
h
?
L
1
(
Δ
r
a
^
,
Δ
r
a
)
(10)
L_{\mathrm{rpn}}=L_{\mathrm{cls}}+\beta \sum_{\mathrm{r} \in\{x, y, z, l, h, w, \theta\}} \mathcal{L}_{\mathrm{smooth}-\mathrm{L} 1}\left(\widehat{\Delta \mathrm{r}^{a}}, \Delta \mathrm{r}^{a}\right) \tag{10}
Lrpn?=Lcls?+βr∈{x,y,z,l,h,w,θ}∑?Lsmooth?L1?(Δra
,Δra)(10)
其中,锚分类损失
L
c
l
s
L_{\mathrm{cls}}
Lcls?是用默认超参数的焦点损失[18]计算的,smoothL1损失用于锚框回归,预测残差
Δ
r
a
^
\widehat{\Delta \mathrm{r}^{a}}
Δra
和回归目标
Δ
r
a
\Delta \mathrm{r}^{a}
Δra。(2)关键点分割损失
L
s
e
g
L_{seg}
Lseg?也通过第3.2节中提到的焦点损失来计算。(3)proposal细化损失
L
r
c
n
n
L_{\mathrm{rcnn}}
Lrcnn?包括IoU引导的置信度预测损失
L
iou?
L_{\text {iou }}
Liou??和box细化损失
L
r
c
n
n
=
L
i
o
u
+
∑
r
∈
{
x
,
y
,
z
,
l
,
h
,
w
,
θ
}
L
smooth-L1?
(
Δ
r
p
^
,
Δ
r
p
)
(11)
L_{\mathrm{rcnn}}=L_{\mathrm{iou}}+\sum_{\mathrm{r} \in\{x, y, z, l, h, w, \theta\}} \mathcal{L}_{\text {smooth-L1 }}\left(\widehat{\Delta \mathrm{r}^{p}}, \Delta \mathrm{r}^{p}\right) \tag{11}
Lrcnn?=Liou?+r∈{x,y,z,l,h,w,θ}∑?Lsmooth-L1??(Δrp
,Δrp)(11)
其中
Δ
r
p
^
\widehat{\Delta \mathrm{r}^{p}}
Δrp
是预测的box残差,
Δ
r
p
\Delta \mathbf{r}^{p}
Δrp是建议的回归目标,其编码与
Δ
r
a
\Delta \mathrm{r}^{a}
Δra相同。
然后,整体训练损失是这三个损失的总和,具有相同的损失权重。补充文件中提供了进一步的训练损失详细信息。
5. Conclusion
我们提出了PV-RCNN框架,这是一种从点云中准确检测3D目标的新方法。我们的方法通过新提出的体素集抽象层将多尺度3D体素CNN特征和基于PointNet的特征集成到一小组关键点,然后将学习到的关键点判别特征聚合到RoI网格点多个接受域来捕获更丰富的上下文信息,以进行细粒度的proposal细化。在KITTI数据集和Waymo Open数据集上的实验结果表明,与以前的最先进方法相比,我们提出的体素到关键点场景编码和关键点到网格RoI特征抽象策略显着提高了3D目标检测性能.
|