深度学习(11):RangeNet++论文翻译与学习

RangeNet++是一种针对旋转LiDAR扫描的快速、准确的语义分割方法,利用深度图像作为中间表示进行2D全卷积语义分割。该方法通过高效的后处理算法,处理离散化错误和模糊CNN输出,实现在单个嵌入式GPU上以传感器帧率运行的完整点云语义分割。实验表明,RangeNet++在准确性和实时性上优于现有技术。
摘要由CSDN通过智能技术生成

RangeNet++: Fast and Accurate LiDAR Semantic Segmentation

RangeNet++:快速准确的 LiDAR 语义分割

如果想要了解原理的话,阅读重点可以集中在3 Our Approach和4 Experimantal Evaluation

自己的其他博客:深度学习(七):RangeNet++代码运行与与学习_biter0088的博客-CSDN博客 

这篇博客也是很认真的写啦,大家可以瞅一眼啦。

目录

摘要

1 Introduction

2 Related Work

3 Our Approach

A. Range Image Point Cloud Proxy Representation(距离图像点云代替表示)

B. Fully Convolutional Semantic Segmentation(全卷积语义分割)

C. Point Cloud Reconstruction from Range Image(从深度图像重建点云)

D. Efficient Point Cloud Post-processing(高效的点云后处理)

IV. Experimantal Evalution

A. Performance of RangeNet++ w.r.t. State-of-the-art ( 关于RangeNet++的性能--最先进的)

B. Ablation Studies(消融研究)

C. Post-Processing Influence(后处理影响)

D. Runtime(运行时间)

V. Conclusion

References

部分笔记:


摘要

        自动驾驶汽车的感知通常是通过一套不同的传感方式(sensing modalities)进行的。鉴于大量公开可用的标记 RGB 数据(labeled RGB data)以及用于基于图像的识别的高质量深度学习算法的出现,高级语义感知任务主要使用高分辨率相机来解决。因此,可能对这项任务有用的其他传感器模式经常被忽略。在本文中,我们推动了仅 LiDAR 语义分割的最新技术,以便为车辆提供另一个独立的语义信息源。我们的方法可以以传感器帧速率(a sensor frame rate)准确地执行 LiDAR 点云的完整语义分割。我们利用深度图像(range images)作为中间表示(intermediate representation),结合利用旋转 LiDAR 传感器模型(the rotating LiDAR sensor model)的卷积神经网络 (CNN)。为了获得准确的结果,我们提出了一种新的后处理算法来处理由这种中间表示引起的问题,例如离散化错误(discretization errors)和模糊的 CNN 输出。我们实施并彻底评估了我们的方法,包括与最先进的几个比较。我们的实验表明,我们的方法优于最先进的方法,同时仍然在单个嵌入式 GPU (single embedded GPU)上在线运行。该代码可以在

https://github.com/PRBonn/lidar-bonnetal 访问。

1 Introduction

        语义场景理解(semantic scene understanding)是在动态、真实世界环境中工作的自主机器人的关键组成部分之一。 为了实现所需的场景理解,机器人通常配备多个传感器,使它们能够利用(leverage)每种模式的优势(strengths)。 结合多种互补的传感模式可以弥补单个传感器(如相机、激光扫描仪或雷达)的缺点。这在自动驾驶的背景下尤为重要,如果一种模式的故障没有被另一个冗余传感器正确覆盖,则可能会产生致命或重大的经济后果(lethal or significant monetary consequences)。

        语义场景理解中的一个重要任务是语义分割(semantic segmentation)任务。语义分割为输入模态中的每个数据点分配一个类标签,其中数据点可以是相机的一个像素或者是从雷达获取的一个3D点。在本文中,我们明确解决了旋转 3D LiDAR 的语义分割问题,例如常用的 Velodyne 扫描仪。不幸的是,目前可用于对 LiDAR 数据进行语义分割的大多数最先进的方法要么没有足够的表示能力(representational capacity)来解决该任务,要么计算成本太高而无法在移动 GPU 上以帧速率(frame-rate)运行。这使得它们不适合帮助支持自动驾驶汽车的任务,解决这些问题是这项工作的目的。

        本文的主要贡献是一种准确、快速、仅限 LiDAR(LiDAR-only)的语义分割的新方法。我们通过对输入点云的球面投影(spherical projection)进行操作来实现这一点,即类似于深度图像(range image)的 2D 图像(2D image representation)表示,因此需要利用旋转 LiDAR 传感器(rotating LiDAR sensor)检测点的方式。我们的方法使用任何 CNN 作为主干来推断图像每个像素的完整语义分割。这产生了一种有效的方法,但可能产生由离散化或模糊 CNN (discretization or blurry CNN)输出引起的问题。无论使用基于图像的 CNN 的分辨率如何,我们都通过使用语义重建原始点(reconstruction of the original point with semantics)而不丢弃原始点云中的任何点来有效地解决这些问题。这个后处理步骤也在线运行,对图像表示进行操作,并针对效率进行定制。我们可以在恒定时间内为每个点计算最近邻(calculate nearest neighbors),并利用基于 GPU 的计算。这使我们能够准确且比传感器的帧速率更快地推断出 LiDAR 点云的完整语义分割。由于该方法适用于任何基于深度图像(range image-based)的 CNN 主干网络,因此我们将其称为 RangeNet++。示例见图 1

        总之,我们提出三个关键主张: 我们的方法能够(i) 准确地执行仅 LiDAR 点云的语义分割,显着超越现有技术,(ii) 为完整的原始点云推断语义标签,无论 CNN 中使用的离散化水平如何,都避免丢弃点,(iii) 在可以轻松安装在机器人或车辆中的嵌入式计算机上以 Velodyne 扫描仪的帧速率工作。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

Fig. 1: Velodyne HDL-64E laser scan from KITTI dataset [7] with semantic information from RangeNet++. Best viewed in color, each color represents a different semantic class.

图 1:来自 KITTI 数据集 [7] 的 Velodyne HDL-64E 激光扫描以及来自RangeNet++ 的语义信息。最好从颜色角度来看,每种颜色代表不同的语义类别。

2 Related Work

        近年来,由于深度学习的出现以及用于该任务的越来越大规模的数据集(例如 CamVid [2]、Cityscapes [4] 或 Mapillary [12)的可用性,使用图像进行自动驾驶的语义分割取得了巨大进展]。总之,这可以生成具有数百万个参数的复杂深度神经网络架构,从而获得高质量的结果。突出的例子是 Deeplab V3 [3] 和 PSPNet [23]。

        尽管取得了令人印象深刻的结果,但这些架构的计算成本太高,无法在自主系统上实时运行,而这对于利用语义线索(semantic cues)的自主导航来说是必须的。这催生了更有效的方法,如 Bonnet [11]、ENet [13]、ERFNet [17] 和 Mobilenets V2 [18],它们它利用收益递减规律(the law pf diminishing returns)在运行时间、参数数量和准确性之间找到最佳权衡(the best trade-off)。然而,这些是为图像设计的,而不是为激光雷达扫描而设计的。

        到目前为止,将这些结果传输到 LiDAR 数据受到两个因素的阻碍:(i) 缺乏用于自动驾驶语义分割任务的公开可用的大规模数据集,以及(ii) 运行大多数 LiDAR 语义分割模型的成本高得令人望而却步。

        为了解决缺乏数据的问题,Wu 等人[21]、[22] 使用了 KITTI 数据集 [7] 提供的边界框。他们还利用模拟从游戏引擎生成逼真(realistic looking)的扫描。我们发布了第一个对 LiDAR 扫描进行全语义分割的大规模数据集 [1],其中 KITTI 里程计数据集 [7] 的所有扫描都被密集注释,即超过 43 000 次扫描,超过 35 亿个注释点。在没有数据匮乏障碍(data-starvation barriers)的情况下,本文研究了哪些当前最先进的算法可以在自动驾驶环境(autonomous driving context)中被利用和适应点云。

        利用其他场景(context)的大型数据集 [5]、[8],最近开发了几种基于深度学习的 3D 语义分割方法,例如 PointNet [14]、PointNet++ [15]、TangentConvolutions [20]、SPLATNet [19]、 SuperPointGraph [10] 和 SqueezeSeg [21]、[22]。

        直接处理点云数据的问题之一是缺乏正确的顺序,这使得学习顺序不变(order-invariant)的特征提取器极具挑战性。Qi等人[14]、[15] 使用原始的无序点云(un-ordered point clouds)作为输入,并应用能够处理此排序问题的对称算子(symmetrical operators)。为此,PointNet [14] 使用最大池化来组合特征并生成排列不变(permutation-invariant)的特征提取器。然而,这是 PointNet 的一个限制因素,导致它失去了捕捉特征之间空间关系(spatial relationships between features)的能力。这限制了它对复杂场景的适用性。PointNet++ [15] 通过使用分层方法(hierarchical approach)进行特征提取来解决这个问题。通过利用局部附近(local vicinity)的单个 PointNet,它捕获短程依赖关系(short-range dependencies),然后分层应用此概念来捕获全局依赖关系(global dependencies)。

        Tatarchencko等人[20]采用不同的方法来处理非结构化(unstructured)点云。他们提出了将 CNN 直接应用在表面上的 TangentConvolutions,这只有在从同一表面(the same surface)采样相邻点(neighboring points)时才能实现。在这种情况下,作者可以将切线卷积(tangent convolution)定义为平面卷积(planar convolution),该卷积应用于每个点的表面投影(projection of the surface)。然而,在旋转 LiDAR 和LiDAR产生依赖于距离稀疏性点云(the generated distance-dependent sparsity)的情况下,这个假设就被违反了。

        Su等人 [19] 在 SPLATNet 中以不同的方式处理表示问题,方法是将点投影在高维稀疏格(a high-dimensional sparse lattice)中。然而,这种方法在计算和内存消耗方面都不能很好地扩展。为了缓解这种情况,双边卷积(bilateral convolutions)[9]允许他们将这些算子专门应用于格子的占用扇区。

        Landrieu等人[10] 通过定义 SuperPoint Graph 以与 PointNets 类似的方式设法总结局部关系(local relationships)。这是通过创建所谓的 SuperPoints 来实现的,SuperPoints 是由 PointNet 嵌入的局部连贯(locally coherent)、几何均匀(geometrically homogeneous)的点组(groups of points)。他们创建了一个原始点云的增强版本的SuperPoints graph,并训练了一个图卷积网络(a graph convolution network)来编码全局关系(global relationships)。

        在旋转激光雷达分割分割的情况下,每次扫描的点数在 10^5 的数量级。这种规模阻止了所有上述方法的实时运行,限制了它们在自动驾驶中的适用性。相比之下,我们提出了一种系统,该系统可提供准确的语义分割结果,同时仍以传感器的帧速率运行。

        Wu 等人在在线处理方面处于领先地位的 SqueezeSeg 和 SqueezeSegV2 [21]、[22] 也使用点云的球面投影,从而可以使用 2D 卷积。此外,轻量级全卷积语义分割与条件随机场(CRF)一起应用以平滑结果。最后一步是将深度图像中的点非离散化(un-discretization)回 3D 世界。两者都能够以比传感器速率(即 10 Hz)更快的速度运行,我们将它们用作我们方法的基础。

        为了使用该框架提供完整的语义分割,需要解决几个限制。首先,需要扩展投影以包括完整的 LiDAR 扫描,因为 SqueezeSeg 框架仅使用正面 90 度的扫描(the frontal 90 degrees of the scan),其中原始 KITTI 数据集标签的对象由边界框(bounding boxes)注释。其次,SqueezeNet backbone的描述性不足(not descriptive enough)以推断我们的数据集 [1] 提供的所有 19 个语义类。第三,我们通过直接作用于完整无序点云的高效、基于 GPU 的最近邻搜索(nearest neighbor search)替换了在图像域(image domain)中运行的 CRF。最后一步可以检索云中所有点的标签,即使它们没有直接在深度图(range image)中表示,也不管使用的分辨率如何。

        我们提出了一种受基于投影(projection-based)的方法启发的新方法,该方法允许使用平面卷积(planar convolutions)并克服其缺点。我们的方法以传感器的帧速率(大约 10 Hz)或更快的速度准确分割整个 LiDAR 扫描,使用深度图像和 2D CNN 作为代替(proxy),并正确处理重新投影(re-projecting)结果到 3D 点云后需要解决的离散化错误(discretization errors)。

3 Our Approach

        我们方法的目标是实现点云的准确和快速的语义分割,以使自主机器能够及时做出决策。为了实现这种分割,我们提出了一种基于投影(projection-based)的2D CNN来处理输入点云,并利用每个激光扫描的深度图像表示来执行语义推理(semantic inference)。我们在下文中使用专业术语深度图像(range image)来表示点云的球面投影结果,但深度图像中一个水平和垂直方向上的像素,可以存储的不只一个点云距离值(but each pixel,which corresponds to a horizontal and vertical direction,can store more than only a range value)。投影之后是对整个点云进行快速、基于 GPU 的 k-最近邻 (kNN) 搜索,这使我们能够恢复整个输入云的语义标签(semantic labels)。这在使用小分辨率深度/距离图像时尤其重要,因为投影会导致信息丢失。

        因此,我们的方法分为四个步骤,如图 2 所示。这四个步骤将在以下小节中详细讨论:(A) 将输入点云转换为深度图像表示,(B) 2D 全卷积语义分割,(C) 从 2D 到 3D 的语义转移,来从原始点云中恢复所有点,而不管使用的距离/深度图像的离散化,以及(D) 使用基于 GPU 的快速 kNN 搜索对所有点进行操作,以高效的基于距离/深度图像的 3D 后处理来清除点云中不想要的离散化和推理伪影(undesired discretization and inference artifacts)。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

图 2:该方法的框图。 每个箭头对应于我们的一个模块。

/* (原始)点云 球投影|语义分割 原始输出 过滤后输出 */

A. Range Image Point Cloud Proxy Representation(用深度图替代原始点云表示)

        一些LiDAR 传感器,例如 Velodyne 传感器,以类似深度图像(range-image-like)的方式表示原始输入数据。每列代表一组激光测距仪(range-finders)在某个时间点测量的距离,每一行代表每个测距仪的不同转向位置(turn positions),这些测距仪以恒定的速率发射。然而,在高速行驶的车辆中,LiDAR旋转发生的速度不足以忽略这种“卷帘快门(rolling shutter)”行为产生的倾斜/歪斜。为了在每次扫描中获得更几何上一致的环境表示,我们必须考虑车辆运动(vehicle motion),从而产生一个不再包含每个像素(each pixel)的距离测量值的点云,而是包含其他一些像素的多个测量值(这句话提到了pixel,怎么点云数据是pixel?参考本段第一、二句话就可以大致理解了)。为了获得完整 LiDAR 点云的准确语义分割,我们的第一步是将每个去偏斜(de-skewed)点云转换为深度表示。为此,我们通过映射 Π : R^3→ R^2 将每个点 pi = (x, y, z) 转换为球坐标,最后转换为图像坐标,定义为:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

(注:对该公式的理解见本文末尾“部分笔记(5)”)

        式中 (u, v) 是所述图像坐标,(h, w) 是所需深度图像表示的高度和宽度,f = f_up + f_down 是传感器的垂直视场(field-of-view),r = ||pi||2是每个点的距离。这个过程产生了一个 (u, v) 元组列表,其中包含每个 pi 的一对图像坐标,我们用它来生成我们的代替表示(proxy representation)。使用这些索引,我们为每个 pi 提取它的距离 r、它的 x、y 和 z 坐标以及它的缓解率(remission),并将它们存储在图像中,最终创建一个 [5 × h × w] 张量。由于扫描的去偏斜,每个点到其对应的(u,v)的分配是按距离降序(a descending range order)完成的,以确保图像中渲染的所有点都在传感器的当前视野(current field view of the sensor)中 .我们还保存了这个 (u, v) 对列表,以收集和清理结果点云的语义,正如我们在Sec. III-C和 Sec. III-D中描述的那样。

B. Fully Convolutional Semantic Segmentation(全卷积语义分割)

        为了获得点云的这个深度图像表示的语义分割,我们使用了一个 2D 语义分割 CNN,它经过修改以适应这个特定的输入类型和形状因子(particular input type and form factor)。与Wu等人类似[21],我们使用编码器-解码器沙漏形架构(encoder-decoder hour-glass-shaped architecture),如图 3 所示。这些类型的深沙漏形分割网络(deep hour-glass-shaped segmentation networks)的特点是具有显着下采样的编码器(encoder),这允许更高抽象的深层内核对上下文信息进行编码,同时比非下采样对应部分(non-downsampling counter-parts)运行得更快。在我们的例子中,这个下采样是 32(见图 3)。随后是一个解码器(decoder)模块,它将卷积骨干编码器提取的“特征代码(feature code)”上采样到原始图像分辨率,还添加了卷积层来细化这些结果。同时,在每次上采样之后,我们还在编码器的不同级别的输出步长(OS)之间添加跳跃连接(skip connections),并将它们与解码器中相应的输出步长特征量(feature volume)相加,如黑色箭头所示,以恢复一些在下采样过程中丢失的高频边缘信息(high-frequency edge information)。在这种编码-解码行为之后,架构的最后一层执行一组 [1 × 1] 卷积( [1 × 1] 卷积理解,见“部分笔记(6)”)。这会生成 [n × h × w]向量(logits)的输出量(output volume),其中 n 是我们数据中的类数。推理期间的最后一层是c295cc409d6b4151aaa3fd7976b755ed.png形式的无界向量(logits)上的 softmax 函数。这给出了深度图像中每个像素的概率分布,其中 logit_c 是对应于类 c 的切片中的无界输出。在训练期间,该网络使用随机梯度下降(stochastic gradient descent)和加权交叉熵损失(a weighted cross-entropy) L 进行端到端(end to end)优化:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

        式中根据(出现)频率 f_c 的倒数对 c 类进行惩罚。这可以处理不平衡的数据(imbalanced data),就像语义分割中的大多数数据集一样,例如 “road”类表示数据集中比“pedestrian”类多得多的点。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

图 3:我们的全卷积语义分割架构。 RangeNet53 受到 Darknet53 Backbone [16] 的启发。

        为了为使我们的编码器主干(encoder backbone)提取丰富的特征,我们通过修改 Darknet [16] 主干架构来定义我们的 RangeNet 架构,使其可用于我们的目的。该主干在设计时考虑了一般图像分类和对象检测任务,并且非常具有描述性,在这些任务的多个基准测试中实现了最先进的性能。但是,它被设计用于处理正方形纵横比(square aspect ratio)的 RGB 图像。对主干的第一个必要修改是允许第一个通道能够输入具有 5 个通道的图像。由于我们正在处理一个具有 64 个垂直放置的激光测距仪阵列的传感器,它每次扫描产生大约 130 000 个点,这给我们留下了大约 w = 2048 像素的深度图像。为了保留垂直方向的信息,我们因此只在水平方向进行下采样。这意味着在编码器中,OS 为 32 意味着在宽度方向w 上减少了 32 倍,但在垂直方向 h 上仍有 64 个像素保持不变。为了评估我们的后处理恢复原始点云信息的能力,我们在实验评估中分析了 [64 × 2048]、[64 × 1024] 和 [64 × 512] 的输入大小,最终产生特征量(feature volumes)大小分别为[64×64]、[64×32]和[64×16]的编码器。

C. Point Cloud Reconstruction from Range Image(从深度图像重建点云)

        从深度图像表示映射到点云的常见做法是使用距离信息、像素坐标和传感器内参校准来实现映射 Π∗ : R^2→ R^3 。但是,如 Sec.III-A 中所述,由于我们最初是从点云生成深度图像,这可能意味着需要从原始表示(original representation)中丢失大量点。当使用较小的图像以使 CNN 的推理更快时,这一点尤其重要。例如,一次扫描(can)对每个像素的平截头体中最近的点进行采样,将 130 000 个点投影到 [64 × 512] 深度图像的扫描将仅表示 32 768 个点(a scan with 130 000 points projected to a [64 × 512] range image will represent only 32 768 points, sampling the closest point in each pixel’s frustum. )。因此,为了推断语义云表示中的所有原始点,我们使用所有 (u, v) 对来表示在初始处理(rendering)过程中获得的所有 pi,并使用对应于每个点的图像坐标索引深度图像(注:“初始处理过程”指的是从点云生成深度图像)。这可以在下一个后处理步骤发生之前在 GPU 中以极快的速度执行,并且它会以无损的方式为整个输入扫描中存在的每个点生成一个语义标签。

D. Efficient Point Cloud Post-processing(高效的点云后处理)

        不幸的是,通过深度图像的 2D 语义分割加速(expedite) LiDAR 扫描语义分割的好处并非没有缺点。编码器-解码器类沙漏(encoder-decoder hour-glass-like)的 CNN 在推理过程中提供模糊的输出(blurry outputs),这也是 RGB 和 RGBD 语义分割的问题。一些方法,例如 [21] 在 2D 分割之后在图像域中的预测上使用条件随机场来消除输出标签的这种“渗色(bleeding)”。使用每个像素的 softmax 概率作为 CRF 的一元势,并将信号的跳跃和相邻点之间的欧几里得距离作为惩罚项(Using the softmax probabilities of each pixel as unary potentials for the CRF, and penalizing jumps in signal and Euclidean distance between neighboring points. )。尽管这在 2D 中有所帮助,但在重新投影到 3D 空间后并不能解决问题,因为一旦将标签投影到原始点云中,存储在同一深度图像像素(the same image pixel)中的两个或多个点将获得相同的语义标签。这种效果如图 4 所示,其中推理得到的点云的标签由于 CNN 掩码(the blurry CNN mask)和上述离散化(the mentioned discretization)而在背景中的对象中呈现阴影。此外,如果我们希望使用更小的深度图像表示来推断语义,这个问题会变得更加严重,导致不同类对象中语义信息的阴影状伪影(shadow-like artifacts)。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

图 4:标签重投影问题的说明。深度图像(左)中的栅栏和汽车都被赋予了适当的语义标签,但在将语义发送回原始点(右)的过程中,标签也被投影为“阴影”。

        为了解决这个问题,我们提出了一种直接在输入点云中运行的快速、支持 GPU 的 k 最近邻 (kNN) 搜索。这使我们能够为语义点云中的每个点找到扫描中最接近 3D 的 k 个点的共识投票(consensus vote)。由于在 kNN 搜索中很常见,我们还为搜索设置了一个称为cut-off的阈值,该阈值是一个被认为近邻点的最大允许距离。对 k 个最近点进行排名的距离指标可以是绝对距离差值(absolute differences),也可以是欧几里得距离。虽然,我们也尝试使用remiss(缓解)作为惩罚术语,但这对我们的经验没有帮助。从现在开始,我们解释使用绝对距离差作为距离的算法,但与欧几里德距离的工作原理类似,尽管欧几里德距离计算速度较慢。

        我们解释了算法的步骤,参照Alg.1中对应的行号。我们的近似最近邻搜索(approximate nearest neighbor search)使用深度图像表示,对于 [h, w] 范围图像中的每个点,获得它在图像表示中围绕它的 [S, S] 窗口,其中 S 是通过在验证集中的网格搜索(grid-search)凭经验找到的值。 此操作通过“im2col”原函数(primitive)执行,大多数并行计算库(parallel computing libraries)在内部使用该原函数来计算卷积,因此可通过所有深度学习框架直接访问。这会产生一个维度为 [S^2 , hw] 的矩阵,其中包含每列([S^2,hw]矩阵的列)中 [S, S] 邻域的展开版本,并且每个列中心包含实际像素的距离/深度(算法Alg.1第 2-4 行)。由于并非所有点都在深度图像中表示,因此我们使用在深度图像渲染过程中获得的每个 pi 的 (u, v) 对,并将此表示扩展为维度为 [S^2 , N ] 的矩阵,其中包含所有扫描点的距离/深度邻域(算法Alg.1第 5-7 行)。因为这是通过索引展开的图像矩阵(indexing the unfolded image matrix)来完成的,所以列的中心不再代表实际的距离/深度值。因此,我们将矩阵的中心行替换为每个点的实际距离/深度读数。其结果是一个 [S^2 , N ] 矩阵,其中包含中心行中点的所有距离/深度读数,并且在每一列中,它的展开 [S, S] 邻域(算法Alg.1第 8-9 行)。这是算法中的一个关键检查点(key checkpoint),因为它允许我们以快速的方式找到一组 S^2 候选者,以便在每个点的邻居搜索期间并行考虑。这使得我们的算法通过利用传感器中扫描点的排列,运行速度比其他最近邻搜索方法(例如 FLANN 中的那些在无序点云中工作的方法)快几个数量级(orders of magnitude)。这种关键的结构差异使我们即使对于大型点云也能实时运行。

        以下两个步骤类似上面步骤的展开(算法Alg.1第 10-15 行),但它不是获取相邻候选者的距离/深度,而是包含它们的标签。一旦找到 k 个邻点的索引,这个[S^2 , N ]标签矩阵稍后用于收集共识投票(consensus voting)的标签。在算法的这一点上,我们能够计算S^2个候选点中每个点到实际点的距离。如果我们从 [S^2 , N ] 邻域矩阵的每一行中减去 LiDAR 扫描的 [1, N ] 距离/深度表示,并逐点应用绝对值,我们得到一个 [S^2 , N ] 矩阵,其中每个点包含邻域中心(即查询点)与周围点(算法Alg.1第 16-18 行)之间的距离差。我们在每个点周围使用小的 [S, S] 邻域搜索这一事实允许我们假设范围内的绝对距离(absolute difference in the range)是欧几里德距离的一个很好的代替,因为在 (u, v ) 坐标只有在 3D 空间中的实际距离相似时才会具有相似的范围。这在我们的实验部分进行了经验测试,使我们能够更有效地计算距离,并在后处理中获得相同的结果。

        下一步是通过逆高斯核(inverse Gaussian kernel)对距离进行加权,这会引起(penalizes) (u, v)坐标中距离较远的点之间的距离差异变大(which penalizes the bigger differences in the range between points that are distant in (u, v) more)。这是通过将每一列与展开的内核逐点相乘来完成的(算法Alg.1 第 19-27 行)。

        之后,我们需要为包含 S^2 个候选者的每一列找到 k 个最近点,这是通过 argmin 操作完成的(算法Alg.1 第 28-29 行)。这使我们能够获得 S 邻域中具有最小加权距离的 k 个点的索引。

        我们搜索的最后一步是检查这些 k 点中的哪些点符合允许的阈值(the allowed threshold),我们称之为cut-off,并从该半径内的所有点的标签中累积投票。这是通过一个收集添加操作(a gather add operation)执行的,该操作生成一个 [C, N ] 矩阵,其中 C 是类数,每行包含其索引类中的投票数(算法Alg.1 第 30-41 行)。对该矩阵的列进行简单的 argmax 操作会返回一个 [1, N ] 向量,该向量包含输入 LiDAR 点云中每个点的干净标签,并用作我们方法的输出(算法Alg.1 第 42-43 行)。

        需要注意的是,考虑到算法 1 中循环内所有点的独立性,每个主要组件都可以用并行计算原函数(computing primitive)或高度矢量化的方式表示,这两种方式都可以直接在 GPU,使用现成的、高度抽象的深度学习或数据科学框架。

        该算法需要设置四个不同的超参数:

                (i) S 是搜索窗口的大小,

                (ii) k 这是最近邻点的数量,

                (iii) cut-off,它是 k 的最大允许距离差,以及

                (iv) 逆高斯的 σ。

        超参数的值是通过在我们的训练数据的验证集中通过数据驱动搜索凭经验计算得出的,实验部分提供了简要分析。

--------------------------------------------------------------------
算法 1:点标签的高效投影的最近邻搜索
    数据: 
        大小为W*H的深度图像I_range
        大小为W*H的预测标签图像I_label
        P中N个点每一个点p的距离/深度值集合R
        R中每一个点的图像坐标(u,v)
    结果:每个点的共同投票标签L_consensus,L_consensus大小为N

/* 对深度图像I_range中每一个像素,获取S^2个邻点,得到集合N’ */
/* 对点云中每一个点,获取其邻点;得到集合N  */
/* 填入真实点云中点的距离值  */
/* 对深度图像I_range中每一个像素,获取每一个像素的标签邻点集合L’ */
/* 对点云中每一个点,获取其邻点;得到集合L  */
/* 对点云中每一个点,获取其到邻点的距离值;得到集合D  */
/* 计算逆高斯核 */
/* 用逆高斯核给邻点赋予权重  */
/* 对点云中每一个点,找到k个最近邻点;得到集合S  */
/* 联合投票  */
/* 累计投票  */
/* 找到最大一致性投票  */
--------------------------------------------------------------------

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

IV. Experimantal Evalution

        实验评估旨在支持我们的主张,即我们的方法: (i) 在激光雷达扫描的语义分割任务中优于现有技术, (ii) 在非投影步骤(the un-projection step)中恢复高频信息的同时推断整个点云,以及(iii) 在嵌入式计算机中以传感器帧速率在线运行。

        Dataset(数据集)。 我们在大型数据集上训练和评估我们的方法,该数据集为整个 KITTI 里程计基准 [7]、[1] 提供密集的逐点注释。该数据集由超过 43 000 个扫描组成,其中序列 00 到 10 中的超过 21 000扫描 个可用于训练,序列 11 到 21 的剩余扫描用作测试集。我们使用序列 08 作为超参数选择的验证集,并在剩余的训练序列上训练我们的方法。总体而言,该数据集提供了 22 个类,其中 19 个类通过我们的基准网站在测试集上进行评估。

        Hyperparameter selection(超参数选择)。 在验证集(序列 8)上选择和评估 RangeNet 模型的所有超参数。对于所有主干训练,我们使用 1 · 10^-3 的学习率,每个 epoch 衰减 0.99,训练 150 个 epoch。对于所有 CNN 主干网,收敛时间不到 150 个 epoch。对于所有最先进的方法,超参数也在验证集上被选中。

        Metric(指标)。 为了评估标记性能,我们在所有类 [6] 上使用常用的平均 Jaccard 指数(mean Jaccard Index)或平均交叉联合 (IoU) 度量标准 mIoU,由下式给出

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

        其中 TPc 、 FPc 和 FNc 对应于类别 c 的真阳性、假阳性和假阴性(true positive, false positive, and false negative)预测的数量,C 是类别的数量。

        为了更好地评估预测精度方面的性能,我们提出了一个额外的评估指标,我们称之为边界 IoU(border-IoU)。该指标的定义方式与标准 IoU 相同,但仅适用于由一个额外参数定义的点子集,该额外参数考虑一个点与传感器的自遮挡(the self occlusion of the sensor)的距离,这表现为深度/距离图像中标签的变化(原文:This metric is defined in the same way as the standard IoU, but only applies within the subset of points defined by an extra parameter which considers how far a point is to the self occlusion of the sensor, which is manifested in a change in the label in the range image.)。该指标旨在显示我们的算法可以在多大程度上帮助语义点云(the senmantic point clouds)中的“shadow-like(阴影状)”的错误标签投影(wrong label projections)。

A. Performance of RangeNet++ w.r.t. State-of-the-art ( 关于RangeNet++的性能--最先进的)

        第一个实验旨在支持我们的主张,即我们的方法在 LiDAR 点云的场景语义分割任务中表现出色。Tab 1展示了我们的 RangeNet 主干网络(使用 21 层和 53 层)与其他 7 种对照组方法(baseline methods)之间的差异。即使没有我们的清洗,我们的对照组RangeNet(RangeNet baseline)对于所有输入分辨率都有着卓越性能,也表明对照组RangeNet是我们高效kNN清洗(kNN cleaning)组的可靠对照。Tab 1还展示了我们的方法 RangeNet++,Tab 1中显示我们的 kNN 后处理始终优于未处理的 RangeNet 对照组(its unprocessed RangeNet counterpart),显示了我们的 kNN 搜索的功效。与 CRF 不同,kNN 清理对于除一个类之外的所有类都始终更好,即使整体 IoU 更高,这也是原始 SqueezeSeg [21] 论文得出的结论。

表 I:测试集上的 IoU [%](kitti数据集中序列 11 到 21)。RangeNet21 和 RangeNet53 表示具有增强的Darknet主干(分别为 21 和 53)的新对照组,带有 (++) 的版本使用我们基于深度/距离的快速点云后处理进行处理。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

B. Ablation Studies(消融研究)

        第二个实验显示了验证集中 k 和 S 参数的影响。对于 4 个参数 k、S、σ 和cut-off中的每一个,我们选择了广泛的值,并评估了对所有输入分辨率的 RangeNet53 主干的推理结果进行后处理的结果。对于各种 k 和 S 以及 σ 和cut-off的 argmax,图 5 显示了在kitti验证集中每个参数集的IoU 归一化结果。结果还表明,我们可以使用小核和绝对距离差(small kernels and the absolute range difference )作为欧几里得距离的代替来获得类似的结果。这支持了我们的说法,即这个距离差可以很好地代表实际距离越接近的图像中的点。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

 图 5:使用 RangeNet53++ 和不同输入分辨率对 Range--绝对距离(顶行)和欧几里德距离(底行)进行超参数搜索后处理。 所有实验均使用截止距离cut-off = 1.0 m。(注:图中σ与距离加权的逆高斯核有关)

C. Post-Processing Influence(后处理影响)

        第三个实验旨在支持我们的主张,即我们的算法改进了整个点云语义的重建,即使对于较小的深度图像分辨率也是如此。为此,我们使用了边界 IoU(border-IoU) 指标,它只考虑距离标签变化的一定数量的点。在图 6 中,我们展示了对于不同的边界距离的IoU值和边界 IoU值。请注意,我们的后处理方法不仅将 IoU 得分提高了几个百分点,而且显着提高了到边界参数的距离值较低的边界 IoU 得分。这意味着我们的方法对于帮助在第III-D节中描述的标签“bleeding(渗色)”或“shadowing(阴影)”的情况下特别有用。 另一个重要的结论是,在整个边界距离范围(entire spectrum of border distances)内以及在 IoU 中,使用更快计算距离差异和实际欧几里德距离之间只有微小的差异,这支持我们的说法,即它是一个很好的近似值。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

 图 6:边界 IoU (bIoU) 和 IoU 作为标签变化距离的函数。该图表明我们的后处理提高了 IoU,并显着提高了边界 IoU,这意味着它更好地恢复了模糊掩码和离散化错误。

D. Runtime(运行时间)

        第四个实验旨在支持我们的主张,即该方法可以使用单个 GPU 在移动平台上完全在线运行。Tab II 显示了主干的运行时间、不同的后处理距离函数(用于最佳参数)以及所需的总时间。正如预期的那样,基于距离的后处理计算速度更快,因为与 3 个平方、2 个求和和一个平方根相比,每个距离计算只都需要一个减法和一个绝对值。因此,由于性能差异可以忽略不计,我们使用我们的 CNN 主干网加上这个距离处理时间的总和作为我们的总运行时间,我们在两种不同类型的硬件中进行评估。

表2 RangeNet53++的运行时间

/* 硬件 像素分辨率 处理时间(CNN主干网络|绝对距离 欧几里得距离|总时间) 帧率 */

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

V. Conclusion

        在这项工作中,我们提出了一个快速准确的框架,用于对旋转 LiDAR 传感器记录的点云进行语义分割。我们的主要贡献是一种新颖的深度学习支持方法,该方法利用深度图像和 2D 卷积,然后是一种新颖的 GPU 加速后处理,以在整个 LiDAR 扫描的推理过程中恢复一致的语义信息。我们的实验评估表明,我们在距离/深度图像上运行的修改后的 2D 深度 CNN 在 LiDAR 点云的语义分割方面优于当前最先进的技术。此外,我们高效的、支持GPU的后处理可以通过恢复激光扫描去偏过程中丢失的重要边界信息、将有损离散化为代理表示(the lossy discretization into a proxy representation),以及通过一个沙漏形状的CNN进行推断,从而进一步改善这些结果。总体而言,我们的方法在准确性和运行时间方面都优于最先进的技术,朝着自动驾驶汽车和机器人语义分割的传感器冗余迈出了一步。

References

[1] J. Behley, M. Garbade, A. Milioto, J. Quenzel, S. Behnke, C. Stachniss, and J. Gall. SemanticKITTI: A Dataset for Semantic Scene Understanding of LiDAR Sequences. In Proc. of the IEEE/CVF International Conf. on Computer Vision (ICCV), 2019.

[2] G.J. Brostow, J. Fauqueur, and R. Cipolla. Semantic object classes in video: A high-definition ground truth database. Pattern Recognition Letters, 2008.

[3] L. Chen, G. Papandreou, F. Schroff, and H. Adam. Rethinking Atrous Convolution for Semantic Image Segmentation. arXiv preprint, 2017.

[4] M. Cordts, S. Mohamed Omran, Ramos, T. Rehfeld, M. Enzweiler, R. Benenson, U. Franke, S. Roth, and B. Schiele. The cityscapes dataset for semantic urban scene understanding. In Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), 2016.

[5] A. Dai, A.X. Chang, M. Savva, M. Halber, T. Funkhouser, and M. Nießner. ScanNet: Richly-Annotated 3D Reconstructions of Indoor Scenes. In Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), 2017.

[6] M. Everingham, S. Eslami, L. van Gool, C. Williams, J. Winn, and A. Zisserman. The Pascal Visual Object Classes Challenge a Retrospective. International Journal on Computer Vision (IJCV), 111(1):98–136, 2015.

[7] A. Geiger, P. Lenz, and R. Urtasun. Are we ready for Autonomous Driving? The KITTI Vision Benchmark Suite. In Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), pages 3354–3361, 2012.

[8] T. Hackel, N. Savinov, L. Ladicky, Jan D. Wegner, K. Schindler, and M. Pollefeys. SEMANTIC3D.NET: A new large-scale point cloud classification benchmark. In ISPRS Annals of the Photogrammetry, Remote Sensing and Spatial Information Sciences, volume IV-1-W1, pages 91–98, 2017.

[9] V. Jampani, M. Kiefel, and P.V. Gehler. Learning Sparse High Dimensional Filters: Image Filtering, Dense CRFs and Bilateral Neural Networks. In Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), 2016.

[10] L. Landrieu and M. Simonovsky. Large-scale Point Cloud Semantic Segmentation with Superpoint Graphs. In Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), 2018.

[11] A. Milioto and C. Stachniss. Bonnet: An Open-Source Training and Deployment Framework for Semantic Segmentation in Robotics using CNNs. In Proc. of the IEEE Intl. Conf. on Robotics & Automation (ICRA), 2019.

[12] G. Neuhold, T. Ollmann, S. Rota Bulo, and P. Kontschieder. The Mapillary Vistas Dataset for Semantic Understanding of Street Scenes. In Proc. of the IEEE Intl. Conf. on Computer Vision (ICCV), 2017.

[13] A. Paszke, A. Chaurasia, S. Kim, and E. Culurciello. ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation. arXiv preprint, 2016.

[14] C. R. Qi, H. Su, K. Mo, and L. J. Guibas. PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation. In Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), 2017.

[15] C.R. Qi, K. Yi, H. Su, and L. J. Guibas. PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space. In Proc. of the Advances in Neural Information Processing Systems (NIPS), 2017.

[16] J. Redmon and A. Farhadi. YOLOv3: An Incremental Improvement. arXiv preprint, 2018.

[17] E. Romera, J. M. Alvarez, L. M. Bergasa, and R. Arroyo. Erfnet: Efficient residual factorized convnet for real-time semantic segmentation.IEEE Trans. on Intelligent Transportation Systems (ITS), 19(1):263–272, 2018.

[18] M. Sandler, A. Howard, M. Zhu, A. Zhmoginov, and L. Chen. MobileNetV2: Inverted Residuals and Linear Bottlenecks. arxiv, 2018.

[19] H. Su, V. Jampani, D. Sun, S. Maji, E. Kalogerakis, M-H. Yang, and J. Kautz. SPLATNet: Sparse Lattice Networks for Point Cloud Processing. In Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), 2018.

[20] M. Tatarchenko, J. Park, V. Koltun, and Q-Y. Zhou. Tangent Convolutions for Dense Prediction in 3D. In Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), 2018.

[22] B. Wu, X. Zhou, S. Zhao, X. Yue, and K. Keutzer. SqueezeSegV2: Improved Model Structure and Unsupervised Domain Adaptation for Road-Object Segmentation from a LiDAR Point Cloud. Proc. of the IEEE Intl. Conf. on Robotics & Automation (ICRA), 2019.

[23] H. Zhao, J. Shi, X. Qi, X. Wang, and J. Jia. Pyramid scene parsing network. arXiv preprint, abs/1612.01105, 2016.

部分笔记:

(1)神经网络中的logits:是一个向量,下一步通常被投给softmax的向量。

参考链接:神经网络中的logits是什么意思_五月的天气的博客-CSDN博客_logits

https://developers.google.com/machine-learning/glossary/#logits

(2)作者使用了绝对距离来代替欧几里得距离。

        其中绝对距离计算参考Alg1的第18行----对应位置求差后,再对对应位置求绝对值;欧几里得距离计算公式如下:(注:是不是觉得可以由绝对距离得到欧几里得距离,但作者就是只用了绝对距离)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

         参考百度百科:欧几里得度量_百度百科

(3)w.r.t.是with respect to的缩写,意思是关于、谈到、涉及等,参考https://www.cnblogs.com/ArdenWang/p/14296839.html

(4)argmax,最大值自变量点集,参考百度百科:argmax_百度百科

(5)对spherical projection球投影的理解,下面内容来自博客:https://www.cnblogs.com/xiaoaoran/p/12303877.html

        雷达点云P位置表示如下:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

 (6)[1*1]卷积核:参考知乎:https://www.zhihu.com/question/56024942

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYml0ZXIwMDg4,size_20,color_FFFFFF,t_70,g_se,x_16

(7)@meng

  • 7
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值