西班牙Zaragoza大学的研究人员提出的最新3D点云语义分割的深度学习方法,网络分为两大部分,提出新的滑动框搜索球形投影后的“像素点”,接着使用改进的MiniNetV2网络进行分割,然后将带着标签数据的点反投影回3D点云,最后加入后处理过程,网络结构比较清晰。发布的两个不同参数大小的网络在emanticKITTI和KITTI数据集上都刷新了成绩,成为新的SoTA。源码可能会在四月份开源,作者提到实现部分会参照RangeNet 和LuNet的网络。
摘要
LIDAR语义分割为每个由LIDAR测量的3D点分配一个语义标签,这已成为许多机器人应用(例如自动驾驶)的一项重要任务。快速高效的语义分割方法来满足实际应用中的时间和算力的要求。这项工作介绍了3D-MiniNet,这是一种结合3D和2D学习层的LIDAR语义分割新方法。它首先通过新颖的投影从原始点学习2D表示,从3D数据中抽取局部和全局信息。该表示被输入到一个2D全卷积神经网络(FCNN),可产生2D语义分割。然后获得的2D语义标签被重新投影回3D空间,并通过后处理模块进行了增强。模型的新颖之处在于投影学习模块。作者进行了详细的消融研究,显示出模块所设计的每个组件如何对3D-MiniNet的最终性能做出贡献。在SemanticKITTI和KITTI数据集上进行了验证,使用3D-MiniNet-tiny和3D-MiniNet分别刷新3D实时(real-time)分割与点云分割的记录(当前的SOTA),比以前的方法更快,参数效率更高。
前言
机器人自主导航系统使用传感器感知周围的世界,RGB摄像机和LIDAR是常见的必不可少的部件。自主机器人系统的关键组成部分之一是语义分割。语义分割为每个LIDAR点或相机像素分配一个类别标签。这种详细的语义信息对于现实世界中动态场景中的决策至关重要。在自主机器人系统中,LIDAR语义分割为自动机器人提供了非常有用的信息,如SLAM,自动驾驶等任务,尤其是用于识别动态的对象。因此,这项任务非常需要能够快速有效地提供准确语义信息的点云分割模型,这对于处理3D LIDAR数据尤其具有挑战性。目前存在两类分割方法:
- Point-based:直接对点云数据进行处理,对于实时系统而言,在高帧数下计算量太大。
- Projection-based :先将3D信息投影到2D图像中的方法。效率更高,但通常精度较低,因为没有利用原始3D信息。获得计算速度快速,参数量小的语义分割模型是当前的需求也是研究的重点。
受到Point-based和Projection-based方法的启发,本文提出了3D-MiniNet,这是一种新颖的高效的3D LIDAR语义分割方法。3D-MiniNet首先直接在3D点上执行基于点的操作以学习丰富的2D表示,然后通过快速2D全卷积神经网络计算进行分割。最后,将语义标签重新投影回3D点,并通过一种快速的后处理方法。
该网络的主要贡献是投影学习模块,该模块首先学习对点云进行成组,提取局部和全局特征,并生成学习点云的2D表示。利用在该模块上进行的消融研究,可以显示每个部分如何提高3D-MiniNet的性能。为了向这个新颖的模块提供3D点的相邻组,作者实现了快速点云近邻搜索,该搜索会生成3D点的结构化组。这些组中的每一个对应于2D表示中的单个像素。为了从这种表示中学习分割,作者使用MiniNetV2(2D分割网络模型)的修改版本。最终在SemanticKITTI基准和KITTI数据集上进行验证。网络的最佳配置在两个基准测试中均获得了比以前的最新技术更高的mIoU,计算速度提升了2倍,参数减少为之前模型的1/12。
相关工作
1
2D语义分割
当前的2D语义分割的state-of-the-art基本全是深度学习方法。2D语义分割架构是从原本用于分类任务的卷积神经网络(CNN)演变而来,只需要在CNN最后添加一个解码器。FCNN为现代语义分割架构开辟了道路。这项工作的作者率先提出对CNN学习到的图片特征进行双线性内插upsample,直到取得输入时的分辨率大小,并计算每个像素的交叉熵损失。另一个早期的方法是SegNet,提出了一种使用unpooling操作作为上采样层的对称编码器-解码器结构。最近的工作通过添加最初在CNN体系结构中提出的用于分类任务的新颖操作或模块,改进了这些早期的分段体系结构。
FC-DenseNet 学习DenseNet使用密集模块。PSPNet使用ResNet作为其编码器,将金字塔池化模块引入到CNN末尾层中,以学习有效的全局上下文先验。
Deeplab-v3 是分割效果最好的架构之一,其编码器基于Xception,它利用了深度可分离卷积和空洞卷积,降低了模型参数和计算消耗。就网络的效率而言,ENet建立了诸如ERFNet,ICNet等后续工作的基础。主要思想是在低分辨率下工作,即快速下采样。MiniNetV2使用了多次扩展的深度可分离卷积,可以有效地学习局部和全局空间关系。在这项工作中,作者以MiniNetV2为网络骨干(backbone),并对其进行调整以捕获原始LIDAR点云的信息。
2
3D语义分割
有两类主要的点云深度学习方法:
1)基于点云的方法
点云的无序性限制了通用的卷积神经网络CNN对点云数据进行处理。基于点云进行处理的先驱方法和基础是PointNet网络。PointNet建议通过共享的MLP(多层感知器)来学习到每个点的特征,然后再使用对称函数maxpooling来处理点云的无序性。后来基于PointNet又提出了许多新的网络结构。遵循逐点MLP思想,PoinNet 以分层的方式对点进行分组,并从较大的局部区域中学习。同时作者还提出了一种多尺度分组方法,以应对数据的非均匀性。相反,还有一些方法遵循卷积思想提出了不同类型的操作,比如将相邻点合并到内核单元中,以便能够执行逐点卷积。还有一些工作采用图网络来捕获点云的基本几何结构,使用有向图来捕获结构和上下文信息。为此,作者将点云表示为一组互连的超点。
2)基于投影的方法
原始点云数据的不同中间表示形式已用于3D语义分割。Felix等人证明多视图表示非常有效,作者建议将3D点投影到来自不同捕获视图的几个2D图像中,然后对每个图像独立执行2D语义分割,每个点通过融合来自不同视图的不同重投影得分来计算其标签。这种方法的缺点是需要多次运行神经网络运算,每个视图都要一次。SegCloud利用体素表示,这是对3D空间进行编码和离散化的一种非常常用的方法。这种方法将3D体素输入3D-FCNN。然后,作者介绍了确定性的三线性插值,将粗体素预测映射回原始点云,并在最后一步中加入应用CRF优化输出。这种体素表示的主要缺点是3D-FCNN对于实时应用程序的执行时间非常慢。Su等人提出了SPLATNet,它使用了另一种表示形式:四面体晶格表示。这个该方法将3D点云插值到一个四面体的稀疏晶格,然后应用双边卷积层对所表示的占用部分进行卷积。后来提出了LatticeNet 来改进SPLATNet,并提出了其DeformsSlice模块,用于将晶格特征重新投影回点云。到目前为止,允许更有效处理的表示形式是球形表示形式,它是LIDAR语义分段的最常见投影。它是一种2D投影,允许应用2D图像操作,该操作非常快速并且在识别任务上效果很好。基于SqueezeNet体系结构的SqueezeSeg及其后继改进SqueezeSegV2,都表明通过球面投影,可以完成非常有效的语义分割任务。Milioto等人的最新工作,将DarkNet架构与基于GPU的后处理方法相结合,与之相比,对于实时语义分割而言,该方法比CRF可获得更好的结果。
与基于投影的方法相反,基于点的方法是直接对原始数据进行操作而不会丢失任何信息。但基于投影的方法往往更快,更适合于数据的非结构化性质,尤其是对于像LIDAR扫描这样的大型输入,会生成数十万个点。LuNet是结合基于投影的方法和基于点的方法的第一篇著作。它依赖于离线的点近邻搜索,这使方法对实时应用程序不可行。此外,它只有一个MLP池操作,只能从原始点学习局部信息。在3D-miniNet中,通过实现基于GPU的快速近邻搜索并集成了一个从原始3D点中学习上下文信息的新颖投影模块,解决了LuNet的缺点。
通过快速3D近邻搜索算法,输入的M个点(具有C_1C1个特征)被分为N个点的P组。每个点都有一个 C_1C1特征向量,该向量在此过程中使用相对于每个组的数据扩展到C_2C2。3DMiniNet将对点云组进行处理并预测每个点一个语义标签。最后加入后处理方法用于完善最终结果。
3D-minNet: LIDAR 点云分割
上图总结了新颖,有效的LIDAR语义分割方法。它由三个模块组成:
(A)快速近邻搜索;
(B)3D-MiniNet,共输入P组,每组N个点,并输出分割后的点云
(C)基于KNN的后处理,可优化最终细分。
与基于投影的方法相比,有两个主要问题限制了基于点的模型以实时性任务上的使用:
3D点近邻搜索是必需的,但是使用3D点进行近邻搜索十分缓慢
同样的,在3D点云上进行MLP操作也较慢(如PointNet),特别是与2D卷积方法相比。
这是点云的特性决定的,为了缓解这两个问题,本文的方法包括使用一个快速点近邻搜索代理(见第3.1介绍)和一个用于最小化基于点操作的计算模块,该模块使用原始3D点作为输入并输出可使用 2D CNN进行处理的2D表示(第3.2中介绍)。
1
Fast 3D Point Neighbor Search
该方法的第一步是将输入的原始点云投影到W×H的球面投影,将3D点(x,y,z)映射到2D坐标(u,v)中,这部分是点云球面投影的通用操作,
对于以上球面投影的的公式是经过标准化后的形式,还有很多其他的变形,其中ff是传感器的垂直视场,初始特征数
C_1=(x,y,z,depth,remission)C1=(x,y,z,depth,remission)。
使用滑动窗口方法在球面投影空间中执行点近邻搜索。与卷积层类似,通过滑动k×k窗口来获得像素组,即投影点。生成的点组没有交集,即每个点仅属于一个组。此步骤生成PP个点组,每个点组N个点(N = k^2),其中使用了来自球面投影的所有点(P×N=W×H)。在为这些点组提供实际的分割模块3D-MiniNet之前,必须增强每个点的特征。对于得到的每个点组,我们计算C_1中五个特征的平均值以及每个点相所在组的各个特征平均值,得到相对应的r(relative)值。此外,我们计算每个点与所在点组的坐标均值3D欧式距离。因此,每个点现在有11个特征:
2
. 3D-MiniNet
3D-MiniNet由两个模块组成,如图3所示。对于论文所提出的投影模块,它利用原始点云并计算2D表示,接着作者使用基于MiniNetV2的高效骨干网络来计算语义分割。
1)投影学习模块:
此模块的目标是将原始3D点转换为可用于有效分割的2D表示。该模块的输入是一组3D点组(P×N×C_2),这些点组是通过在球形投影上进行滑动窗口搜索而收集的,如前面小节所述。从输入数据中提取以下三种类型的特征(参见图3的左部分),并在最后的模块步骤中将其融合:
局部特征提取器:
第一个特征是类似PointNet的局部特征提取(图3的投影学习模块的顶部)。它运行在组之间共享的四个线性层,然后是BatchNorm和LeakyRelu。文中将线性层实现为跨张量的1x1卷积,从而实现了非常高效的计算。
上下文特征提取器:
第二个特征提取(图3的投影学习模块的中间部分)从这些点中学习上下文信息。该上下文特征提取器的输入是局部特征提取器的第二线性层的输出。将该张量最大化,然后运行快速近邻搜索以获取点组。在这种情况下,使用3×3的滑动窗口分别以1,2,3的不同膨胀率执行三个不同的分组。膨胀率与卷积核具有相同的含义。文中使用零填充和跨度为1来保持相同的大小。每次分组后,执行一次线性化 BatchNorm LeakyRelu。将这两个特征提取器模块的输出连接起来,并在N维上应用maxpool操作。此maxpool操作使特征沿近邻维度具有更高的响应,相对于近邻维度是阶数不变的。maxpool操作还使学习对于无点云信息(无点云投影的球面投影坐标)的像素更健壮。
空间特征提取器:
最后的特征提取操作是内核1×N的卷积层(图3的投影学习模块的底部)。当存在底层空间结构时,卷积可以提取相对于相邻点的每个点的特征,因为上一步的点组是从2D球形投影中提取的。
特征融合:
最后,应用了具有自注意模块的特征融合。它学习将特征空间缩小为指定数量的特征,从而了解哪些特征更为重要。包括三个阶段:特征提取输出的级联将生成的张量reshape为(W / 4×H / 4×C_7W/4×H/4×C7),这是一种自注意操作,再乘以(均值池化 1×1卷积 Sigmid激活函数),具有与输入相同的串联张量,再经过一个1×1卷积层 BatchNorm LeakyRelu,这是将输出限制为C_6C6个特征数。所有实现细节,例如每层的特征数量,均会在后文实验部分说明,并展示了该学习模块的每个部分如何有助于提高3D-MiniNet的性能。
2). 2D分割模块(MiniNet作为Backbone):
一旦前一个模块已计算出W / 4×H / 4×C_6张量,便使用有效的CNN计算2D语义分割(有关详细的视觉描述,参见图3的MiniNet主干)。作者主要使用FCNN而不是多个MLP层的操作,原因是考虑相比较而言多层MLPs,使用卷积操作的计算更快。
基于MiniNetV2架构建立FCNN。此处编码器使用L_1层深度可分离卷积和L_2层多重扩张(multi-dilation)深度可分离卷积。对于解码器,使用双线性插值作为上采样层方式。它以W / 4×H / 4分辨率执行L_3深度可分离卷积,并以W / 2×H / 2分辨率执行L_4。最后,以W×H分辨率进行卷积以获得2D语义分割预测结果。
本文参照MiniNetV2方法,在第二个卷积分支中提取细粒度信息,即高分辨率的底层特征。第二个分支的输入是球面投影,具体细节在后文的Sect. IV-B部分指定。作为最后一步,必须将预测的2D语义分割再次重新投影回3D空间。对于已经投影到球面表示中的点,这是一个简单的步骤,因为只需要分配在球面投影中预测的语义标签即可。但是,尚未投影到球面中的点(得到的2D坐标可能对应不止一个3D点),他们没有语义标签。对于这些点,分配了其相应2D坐标的语义标签。此问题可能导致错误预测,因此需要执行后处理方法以完善结果。
数据集
1
数据集
SemanticKITTI基准测试:
SemanticKITTI数据集是一个大规模数据集,为整个KITTI里程表基准测试提供了密集的逐点注释。数据集包含43000多次扫描,从中可使用21000多个扫描数据(序列00到10)进行训练,其余的(序列11到21)用作测试集。数据集区分22种不同的语义类别,通过基准的官方在线平台在测试集上评估了19种类别。由于这是当前最相关,最大的单扫描3D LIDAR语义分割数据集,因此作者对该数据集进行了消融研究和更全面的评估。
KITTI基准:
SqueezeSeg的工作提供了从KITTI数据集的3D对象检测挑战中导出的语义分割标签。它是一个中等大小的数据集,分为8057个训练数据和2791个验证扫描。
2
设定
a)3D点近邻搜索参数:
对于SemanticKITTI数据集,作者将球面投影的分辨率设置为2048×64(注:2048是(360/水平分辨率),卷积网络中图像大小是2的次数,故设置为2048,64为激光器的数量,这里是64路激光器,故图像宽度为64),同样的对于KITTI,则将分辨率设置为512×64(与以前的网络相同,以便能够进行合理的比较)。然后将4 x 4的窗口大小步幅设置为4,这是保证分组之间恰好没有交集。进行快速点近邻搜索时不设置零填充导致,这样对于SemanticKITTI数据的产生8192组3D点和KITTI数据上产生的2048组。我们的投影模块将接收这些组作为输入,并为SemanticKITTI配置生成学习的表示,分辨率为512×16,对于KITTI生成分辨率为128×16。
b)网络参数:
完整的架构及其所有参数在图3中进行了描述。这里注意一下,作者实际提出了三种不同的配置来评估所提出的方法:3D-MiniNet,3D-MiniNet-small,3D-MiniNet-tiny。
c)后处理参数:
对于使用K近邻方法的后处理方法,我们将2D分割时近邻搜索的窗口大小设置为7×7,并将KK值设为7。
d)训练过程:
epochs = 500, 针对3D-MiniNet, 3D-MiniNet-small, 3D-MiniNettiny ,batch_size分别设置为 = 3, 6, 8
(由于内存限制而有所不同)。优化器使用随机梯度下降(SGD),其初始学习率为4·10^{-3}4⋅10−3,每个epoch的衰减率为0.99。使用交叉熵损失函数作为模型损失的优化。
e)数据增强:
在训练过程中,随机旋转和移动整个3D点云。作者将所有点云的X和Z值的符号随机反转,并且还删除了一些点。
结果
1
投影模块的消融研究
投影模块是该论文的新颖之处。本节展示其中的每个部分如何帮助改善学习的表示形式。对于本实验,作者只使用3D-MiniNet-small配置进行。消融研究的结果在表1中记录,测量了每种设置所对应的的mIoU,速度和学习参数。第一行显示了在学习层中仅使用1×N卷积以及在RangeNet中使用的5通道输入(C_1)的性能,将其建立为基线(即空间特征提取器)。第二行显示了如果将1×N卷积替换为基于点的操作(即局部特征提取器)的性能。结果表明,MLP操作对于3D点效果更好,但是需要更多的执行时间。第三行结合了卷积和本地MLP操作,结果表明卷积和MLP运算的结合可提高性能,作者认为这是由于每种运算类型学习到的特征类型不同。
2
基准结果
本节介绍了3D-MiniNet的定量和定性结果,并与其他相关工作进行了比较。
3
定量分析:
从3D-MiniNet的性能来看,它使用的参数减少了12倍,而速度提高了2倍,因此比以前的最新技术提高了近3%。有趣的是,3DMiniNet-small可以更高效,更快地提供最新性能。如果可以在效率与性能之间进行权衡,则较小版本的Mininet还将以较高的帧速率获得更好的性能指标。3D-MiniNet-tiny能够以98 fps的速度运行,并且mIoU仅下降9%(与以90 fps的SqueezeSeg版本的29%相比,下降了46.9%),并且使用的参数更少(参阅3D-MiniNettiny与TangentConv )。
4
定性分析:
图4显示了对测试数据进行3D-MiniNet推断的一些示例。由于没有为测试集提供测试依据(评估是在在线平台上外部进行的),因此我们只能显示视觉结果,而无需进行标签比较。请注意,在汽车等相关类别中以及在交通标志等具有挑战性的类别中,该方法均获得了高质量的结果。可以预见,最大的困难是区分在具有相似几何形状和结构(例如建筑物和围墙)的类之间进行切换。
结论
本文所提出的3D-MiniNet,是一种快速高效的3D LIDAR语义分割的方法。3D-MiniNet先将3D点云投影到二维空间中,然后使用全卷积神经网络学习语义分割。与常规基于预定义的投影方法不同,3DMiniNet从原始3D点学习此投影,取得出非常出色结果。消融研究部分也说明该方法的每个部分如何有助于表征的学习。3D-MiniNet也在SemanticKITTI和KITTI数据集上成为新的SoTA,在实时性和准确性的要求上,都比以往的方法更有效。
[1.3D-MiniNet 原文地址](https://arxiv.org/pdf/2002.10893.pdf)
[2.3D-MiniNet Github地址](https://github.com/Shathe/3D-MiniNet)