我们提出了一种鲁棒的基线方法用于实例分割,该方法专为大型户外LiDAR点云而设计。我们的方法包括一种新颖的密集特征编码技术,允许对远处的小物体进行定位和分割,为单次实例预测提供简单但有效的解决方案,以及处理严重类别不平衡的有效策略。由于没有用于研究LiDAR实例分割的公共数据集,我们还构建了一个新的公开可用的LiDAR点云数据集,以包括精确的3D边界框和用于实例分割的逐点标签,同时仍然是大约3∼20倍与其他现有的LiDAR数据集一样大。数据集将发布在https://github.com/feihuzhang/LiDARSeg。
准确捕捉户外场景中物体(例如汽车、行人、骑自行车的人等)的位置、速度、类型、形状、姿势、大小等对于许多视觉和机器人应用来说是一项至关重要的任务。 LiDAR系统可以在各种光照条件下从周围环境中高精度提取3D信息,已成为自动驾驶和机器人系统等的关键组件。
随着诸如[7]、[42]、[55]、[58]之类的方法的引入,激光雷达检测已经看到了许多最近的工作,这些方法将例如汽车的位置估计为3D或2D边界框。但是,对于检测,许多异常值(例如,来自道路或邻域的点)将被混合到边界框中。此外,任何缺陷(方位、尺寸、中心等误差。)将严重降低精度(如图1(b)所示)。
一个鲜为人知的研究途径是LiDAR数据中的实例分割。与物体检测的粗略估计不同,实例分割旨在准确地拾取每个前景物体的每个反射点。它可以显着减少离群点对每个物体的干扰,更好地表示不规则的形状,有助于更准确的传感器融合(图图1(c ))、运动规划和3D高清地图构建。此外,分割可以更好地处理3D边界框难以估计且通常具有大重叠的模糊不清的遮挡或邻域目标(如图1(b-c)所示)。

图 1:问题和性能说明。(a)我们的方法产生的实例分割结果。(b)最先进的检测方法[42]的结果(在2D图像上投影)。©我们的方法(在2D图像上)。它可以生成更准确的实例segments,并通过合并图像和点云segments/masks(放大以查看传感器融合结果)来帮助获得更好的传感器融合。
然而,LiDAR实例分割更具挑战性,并且不同于2D图像或基于RGB-D的实例分割(例如[9]、[16])。如图1(a)所示:
1)数据表示:LiDAR点在一个大的3D空间中稀疏且不规则分布。稀疏性也随着距离的增加而显着增加;
2)大尺度场景:一帧LiDAR可以在大于140m×100m×5m的空间中捕获超过120k个点;
3)小物体:有许多小而重要的物体(例如行人、骑自行车的人等)。这些物体相对较小,反射点很少,在大尺度场景中尤其难以被发现。例如,在140m×100m×5m的点云中,一个行人小于 0.5 m 3 0.5 m^{3} 0.5m3。
4)类不平衡:在现实世界的道路场景中,类不平衡问题很严重。例如,主要类别(例如汽车)和次要类别(例如行人)之间的不平衡比率可以大于20倍。
在本文中,我们专注于大规模户外场景中激光雷达点云的多类和多目标实例分割。我们提出了一个鲁棒的基线模型,其中包括一个新的点云表示密集特征编码方案,以实现对远小目标更好的定位和分割,一个强大的密集连接的堆叠骨干网和一个简单但有效的实例预测方法。
此外,我们为基于LiDAR点云的实例分割的研究提供了一个大型数据集。现有数据集(例如KITTI[12]和Nuscenes[4])仅标记3D边界框。我们的新数据集具有3D边界框和逐点标签,可以训练稳健的实例分割模型。它共有130k点云帧,具有超过300万个前景目标,比现有的LiDAR数据集大3∼20倍。
在本节中,我们回顾了基于点云的检测和实例分割的相关工作。我们还探索了可用于训练点云方法的数据集。
几种方法[7]、[10]、[42]、[42]、[46]、[51]、[55]、[58]提出了基于点云的检测器,可估计物体位置并产生2D或3D边界框。在[5]、[6]、[20]、[34]、[53]、[56]、[59]等方法中,还利用了图像信息。然而,基于图像的3D检测方法的准确性在很大程度上取决于图像数据的质量,因此它们在所有光照条件下(例如在黑暗中)都不可靠。还提出了多传感器融合方法 [23]、[54]以提高检测器的可靠性。
这些检测方法依赖于生成准确的3D边界框proposal。随着目标大小和形状的变化增加,特别是对于许多小目标,产生准确的边界框proposal变得更加困难。
实例分割是同时定位和描绘场景中出现的每个不同的感兴趣目标的问题。基于目标检测[13]、[25]、[26]、[29]、[37]-[40]的最新进展,实例分割[9]、[32]、[33]在2D上取得了很好的效果图片。许多最新的实例分割模型都基于分割或掩码proposals[9]、[16]、[32]。然而,由于大型3D空间的不规则性和稀疏性以及生成proposal的难度,这些方法不能立即扩展到 3D点云。
最近的方法已经显示出在较小的室内环境中点云的良好性能。其中一些(例如[52]、[28])学习相似度或亲和度矩阵,用于对点进行分组并生成实例级段。体积方法,如3D-SIS[18],使用 3D几何和2D图像作为输入用于基于anchor的检测和mask预测。[57]中使用了直接边界框回归,具有形状生成/重建阶段。
然而,目前对于大规模的户外点云实例分割的工作很有限。现有的方法是为室内场景设计的,这些场景(i)相当小,(ii)有更密集的点云,(iii)需要物体形状和尺寸的巨大变化。一些方法还假设了相关的RGB数据,因此不适用于具有挑战性的室外场景,或者性能不佳。
有几个流行的点云数据集用于语义分割和检测。它们中的大多数提供由ToF相机拍摄的RGB-D数据。示例是(i)[14]、[24]、[44]、[48]、[49],专为2D目标检测而构建;(ii)LabelMe [41]和SUN RGB-D[47],提供2D多边形和3D边界框;(iii)NYU v2[45]由464个带有语义标签的短序列组成;(iv)Armeni 等人[1],[2]为265个房间提供具有3D网格和语义注释的室内数据集,以及(v)ScanNet[8],一个RGB-D视频数据集,在1513个场景中包含250万个视图3D语义和实例标签。
所有这些数据集都针对(相对)小规模的室内场景。也有一些大规模户外场景的点云数据集。Semantic3D[15]是为大规模语义分割而构建的。KITTI[12]、Apollo[3]、H3D[31]和Nuscenes[4]都是仅使用3D边界框标签为目标检测开发的激光雷达数据集。
我们在第四节中介绍了我们的激光雷达分割数据集,它具有3D边界框和点状标签。

图 2:所提出方法的框架。(a)点云帧作为输入,(b)knn获得密集表示,(c )使用自注意块进行特征学习以重新组织无序点,(d)主干网络,(e)实例分割结果边界框。
图 2 概述了我们对 LiDAR 点云进行大规模实例分割的方法的组成部分,在以下部分中详细说明如下:§III-A 用于特征表示,§III-B 用于网络主干,§III-C 用于我们的我们的损失的最终实例预测和§III-D。
对于基于点云的识别任务来说,特征表示是第一步,也是关键的一步。在本节中,我们开发了用于实例分割的密集特征编码技术。
一种流行的不规则特征表示类型,用于点级语义分割,是PointNet[35]和PointNet++[36]采用的方法,其中为每个点学习局部和全局特征。输入点是无序的,因此这些方法对于使用强大的卷积层来学习空间或几何信息(例如边界框回归)是不稳定的。然后,Li等人提出了用于特征提取的变换后的CNN[22],它也用于分类和语义分割。
对于大型LiDAR 点云,常规表示,如体素或网格,可以通过卷积有效地捕获更丰富的几何信息(例如,高度、中心、距离等)。然后一些方法使用手工制作的特征[7]、[30]、[55]。当有丰富而详细的3D形状信息可用时,这些会产生令人满意的结果。然而,它们不能很好地适应稀疏的场景,并且对小物体产生的精度很差。其他方法,例如VoxelNet[58],学习体素的稀疏逐点特征,并使用3D卷积进行特征传播,这在3D目标检测中显示出良好的效果。
这些稀疏的规则特征表示在目标检测器中很流行。但是,它们对于分段模型的性能有限。实例分割需要高分辨率的特征地图来寻找微小的目标(例如,行人和骑自行车的人等。)在大规模点云中。这将导致大量空的/无效的体素/网格,尤其是对于较远的位置。无效/空位置将使卷积层不稳定,并降低特征传播、定位和回归的功效。这是因为传统的(密集)卷积并不专门用于稀疏数据结构,传播很容易被void元素停止或影响。
在针对目标推理时,很难仅从每个网格/体素中的有效点中提取足够的信息。我们设计了一种新颖的密集高分辨率鸟瞰图表示,用于实例分割。我们的点云编码基于这样一个事实,即每个点都包含丰富的信息,不仅针对其自身的网格/位置/体素,还针对其周围环境。这对于很少(例如在远处)或没有点的位置特别有意义。到有效点的距离和周围点的高度都为特征编码提供了丰富的几何信息。
为了提高效率,我们直接将点云编码为二维高分辨率鸟瞰图表示。然后基于这个常规表示进行分割和定位。与更复杂的3D体素相比,我们的方法更快且内存效率更高,因为不涉及3D卷积。
我们的特征编码和学习策略如图2(b)∼(c )所示。所有点都投影到高分辨率(H × W) 2D网格中。我们使用KNN来增加空的或较差的网格位置,其K靠近邻域。
KNN算法基于水平(x,y)距离运行,并且可以有效地并行化以在GPU上进行计算或使用K-D树进行加速。每个二维网格总共有K个点。我们将每个点表示为 P i = { ( g x , g y ) , ( Δ x i , Δ y i ) , ( z i , r i ) } P_{i}=\left\{\left(g_{x}, g_{y}\right),\left(\Delta x_{i}, \Delta y_{i}\right),\left(z_{i}, r_{i}\right)\right\} Pi={(gx,gy),(Δxi,Δyi),(zi,ri)},其中(i) ( g x , g y ) \left(g_{x}, g_{y}\right) (gx,gy)是网格中心的坐标; (ii) ( Δ x i , Δ y i ) = ( x i , y i ) − ( g x , g y ) \left(\Delta x_{i}\right., \left.\Delta y_{i}\right)=\left(x_{i}, y_{i}\right)-\left(g_{x}, g_{y}\right) (Δxi,Δyi)=(xi,yi)−(gx,gy)是点坐标和网格中心之间的偏移; (iii) r i r_{i} ri是接收到的反射率,(iv) z i z_{i} zi是点的高度。最后,对于每个网格位置,输入变为 { P 0 , P 1 , … P K − 1 } \left\{P_{0}, P_{1}, \ldots P_{K-1}\right\} {P0,P1,…PK−1}。
由于每个网格中K个点的输入是无序的,我们不能使用卷积层或全连接层直接从这些K个点中学习网格级特征。相反,我们利用一种新颖的自我注意和重新排序块从原始点学习网格级特征表示。
如[58]中提出的,注意块从两个体素特征编码(VFE)层开始,以学习逐点特征和注意矩阵。对于每个网格位置,我们假设K个点表示为 F p \mathbf{F}_{\mathbf{p}} Fp,它是一个 K × n K \times n K×n矩阵(K是点的数量,n是逐点特征的长度)。我们学习了一个自适应权重矩阵 A \mathbf{A} A,它起着两个关键作用。首先,它通过使权重适应点来帮助将点重新组织成规则和有序的表示,而不受点的顺序和位置的影响。其次,它为K个点学习了一个self-attention mask,自动决定哪个点应该起关键作用,并得到我们更多的关注。
网格级特征 F g \mathbf{F}_{\mathbf{g}} Fg可以通过以下方式学习:
F g = A T ⋅ F p with A = f ( F p ) (1) \mathbf{F}_{\mathbf{g}}=\mathbf{A}^{T} \cdot \mathbf{F}_{\mathrm{p}} \text { with } \mathbf{A}=\boldsymbol{f}\left(\mathbf{F}_{\mathbf{p}}\right) \tag{1} Fg=AT⋅Fp with A=f(Fp)(1)
其中, f f f是一个映射函数,用于得到自注意力和自重排序矩阵 A \mathbf{A} A。输出为 K × n K \times n K×n。具体来说, F g \mathbf{F}_{\mathbf{g}} Fg的每一 (i-th) 行被学习为:
F g i = a i 0 ⋅ F p 0 … + a i j ⋅ F p … + a i k − 1 j ⋅ F p k − 1 (2) \mathbf{F}_{\mathbf{g}}^{i}=a_{i}^{0} \cdot \mathbf{F}_{\mathbf{p}}^{0} \ldots+a_{i}^{j} \cdot \mathbf{F}_{\mathbf{p} \ldots+a_{i}^{k-1}}^{j} \cdot \mathbf{F}_{\mathbf{p}}^{k-1} \tag{2} Fgi=ai0⋅Fp0…+aij⋅Fp…+aik−1j⋅Fpk−1(2)
其中 [ F p 0 , … F p j , … F p k − 1 ] \left[\mathbf{F}_{\mathbf{p}}^{0}, \ldots \mathbf{F}_{\mathbf{p}}^{j}, \ldots \mathbf{F}_{\mathbf{p}}^{k-1}\right] [Fp0,…Fpj,…Fpk−1]是K个点的逐点特征。权重 a i j a_{i}^{j} aij是矩阵 A \mathbf{A} A中的第j行和第i列。因为 a i j a_{i}^{j} aij是自适应和学习的从 F g j \mathbf{F}_{\mathbf{g}}^{j} Fgj中,K点的顺序不会影响输出 F g i \mathbf{F}_{\mathrm{g}}^{i} Fgi. 此外,它有助于重新加权每个点的贡献并自动决定哪个点需要更多关注。
在self-attention块之后,网格级特征可以直接被标准卷积神经层消耗。我们进一步使用一个全连接层将n×n特征细化并重塑为48×特征向量。对于映射函数 f f f,我们简单地使用逐点全连接层和列归一化来学习自注意和自重排序权重矩阵。
最后,网格级特征构建了一个规则的密集鸟瞰图表示,将其馈送到主干网络进行定位、分割和分类。
我们使用修改后的堆叠hourglass块作为实例分割的主干。该体系结构如图2所示,表I详细说明。来自不同层的金字塔特征通过类似于[60]的级联紧密连接。

表1:骨干网参数。
我们的方法是单次的,即没有使用[7]、[10]、[42]、[46]、[51]、[58]中的区域提议网络。我们网络的输出大小为H×W×(5+C),用于(i)前景分类,(ii) 目标中心回归聚类(2个通道),(iii)预测目标的高度限制(去除误报的上限和下限)和(iv)将目标分类为C类(具有剩余的C通道)。
流行的方法[16]、[17]使用anchors来预测边界框并获得实例ID。然而,在LiDAR点云中,物体的大小和姿势具有很大的多样性(从大卡车到小孩),使得基于anchor的边界框回归变得困难。其他人,如SGPN[52],学习每对点的相似度得分,然后将它们合并到组中。然而,一个激光雷达点云帧通常包含超过10万个点,使得相似度矩阵的学习不易处理(时间复杂度为 N 2 N^{2} N2)。此外,基于相似性的聚类可能是模棱两可的,并且可能会错过大量户外场景的小物体。
我们使用一种简单而有效的方法来预测实例目标。我们预测目标的水平中心(类似于[50])和高度限制。我们使用它们作为约束将点分组到每个候选目标中并进一步删除异常值。即,对于每个前景网格,我们预测目标中心和高度限制。如果不同网格/点的预测中心足够接近(<0.3m),我们将它们合并为一个目标。这对于小物体非常有效,因为点彼此非常接近。此外,学习目标简单易学。
我们使用类平衡焦点损失 [26] 来寻找前景点并进行分类:
L
f
(
x
,
y
)
=
−
∑
i
=
1
C
(
1
−
p
i
)
γ
log
(
p
i
)
p
i
=
{
1
1
+
exp
(
−
x
i
)
,
if
i
=
y
1
1
+
exp
(
x
i
)
,
otherwise.
(3)
其中 x x x是 C C C二元分类任务的 C C C通道输出。 p i p_{i} pi是sigmoid函数后的概率。我们使用γ = 2,这与[26]中的相同。
对于实例预测,学习目标设置为 ( Δ x , Δ y , h ) (\Delta x, \Delta y, h) (Δx,Δy,h),其中 Δ x \Delta x Δx和 Δ y \Delta y Δy是从当前位置到目标中心的偏移量,h是目标的高度上限和下限.目标的中心被设置为边界框的中心。我们使用平滑L1损失进行回归。它被定义为:
L
s
(
x
)
=
{
0.5
x
2
,
if
∣
x
∣
<
1
∣
x
∣
−
0.5
,
otherwise
(4)
\mathrm{L}_{s}(x)=
分类和回归的最终多任务损失为:
L
=
∑
x
∈
I
L
f
(
x
seg
,
y
seg
)
+
∑
x
∈
I
′
α
1
⋅
L
f
(
x
c
l
s
,
y
c
l
s
)
+
∑
x
∈
I
′
α
2
⋅
L
s
(
x
c
t
−
y
c
t
)
+
α
3
⋅
L
s
(
x
h
−
y
h
)
(5)
其中, x s e g x_{seg} xseg和 y s e g y_{seg} yseg是用于对前景网格进行分类的预测和标签, x c t x_{ct} xct和 y c t y_{ct} yct是目标中心的2通道预测和ground truth, x h x_{h} xh和 y h y_{h} yh是目标高度限制的预测和ground truth, x c l s x_{cls} xcls和 y c l s y_{cls} ycls是分类的预测和标签。用于平衡不同任务的 ( α 1 , α 2 , α 3 ) \left(\alpha_{1}, \alpha_{2}, \alpha_{3}\right) (α1,α2,α3)的权重设置为 ( 0.1 , 20 , 0.1 ) (0.1,20,0.1) (0.1,20,0.1)。
分类和聚类的损失只对前景区域 I ′ I^{\prime} I′产生影响。我们使用“one point one vote”策略来预测目标的类别。这是为了减少意外噪声极值的影响。
为LiDAR数据开发稳健的实例分割算法的一大限制是缺乏公开可用的数据集。我们构建了一个新的大型LiDAR点云数据集,其中包含3D边界框和用于实例分割的逐点标签。
表II显示了我们的数据集与现有LiDAR数据集之间的比较。我们的新数据集包含130k LiDAR 帧和大约300万个前景目标,比现有数据集大3 ∼ 20倍。最重要的是,我们的数据集包含用于实例分割的逐点标签。
我们的数据集由两部分组成,真实数据和模拟数据,两者都比KITTI或Apollo大。标记实例片段比3D边界框更昂贵且更困难,为了保证数据集的多样性,我们用100k模拟样本扩充了30k真实数据集。我们的模拟和真实数据之间的领域差距非常小。在我们的实验中,模拟数据可以在训练中将AP提高2∼3.5%。
使用带有Velodyne HDL-64E S3激光扫描仪的Apollo汽车[3]获取数据。传感器位于汽车的顶部和中央。垂直扫描角度范围为[-24.9◦,2.0◦],扫描距离范围为120m。在数据采集期间,扫描仪速度设置为10Hz。还使用安装在车辆上的高精度GPS/IMU对点云进行运动补偿。
在彩色图像的帮助和指导下,在点云上手动标记数据,首先为每个单独的对象设置边界框,然后从3D边界框中删除误报(主要是来自地面和邻域目标的点).

表2:不同激光雷达点云数据集的比较。
我们使用真实背景和数百个前景3D目标模型构建了我们的LiDAR模拟系统[11]。我们使用专业 3D扫描仪Riegl VMX-1HA捕获真实世界背景,该扫描仪可以从真实交通场景中提供密集且高质量的点云.为了获得干净的背景,可以通过反复扫描交通场景几轮(例如,5轮)来移除移动物体。同时,为了去除静态可移动障碍物,我们使用Pointnet++[36]来获取初始语义掩码,然后手动纠正这些错误部分。
可以插入各种目标的合成模型,例如车辆和行人,以创建不同的交通场景。障碍物的放置基于概率图。我们使用训练有素的目标检测器[58]来计算不同类型目标的初始位置分布。在这些分布概率的指导下,我们能够尽可能真实地放置对象。
在本文中,我们为大规模激光雷达点云提出了一种鲁棒的基线实例分割解决方案。该模型提取了更可靠的密集特征,用于发现只有几个点的远小目标。我们还提供了一个大型LiDAR点云数据集。新数据集具有边界框和点状标签,用于实例分割,是现有LiDAR数据集的3∼20倍。

