这篇文章是激光雷达点云数据分割算法的嵌入式平台上的部署实现。主要的创新点有两点:一是利用多路分支采用不同分辨率输入后再用不同的卷积块进行处理,达到性能和计算量之间的平衡;二是对基于投影的点云分割方法进行了改进。在嵌入式平台上性能不错,代码将在文章被收录后开源,值得关注。
论文地址:http://xxx.itp.ac.cn/pdf/2008.09162v1
LiDAR数据的实时语义分割对于自动驾驶车辆至关重要,然而自动驾驶车辆通常配备嵌入式平台并且计算资源有限,这使得点云分割算法的部署具有挑战性。通常的点云分割算法直接在点云上使用复杂的空间聚合操作,这些操作非常昂贵且难以针对嵌入式平台进行优化。因此,它们不适用于带有嵌入式系统的实时场景下应用。作为替代,基于投影的方法更有效并且可以在嵌入式平台上运行。但是,当前基于投影的最新方法无法实现与基于点的方法相同的精度,并且需要使用数百万个参数。因此,在本文中,提出了一种基于投影的方法,称为Multi-scale Interaction Network(MINet),该方法有效且准确,具体而言网络使用具有不同尺度的多个通路,并且在不同尺度之间对计算资源进行平衡,同时不同尺度之间的额外密集交互可避免冗余计算,并使网络高效。所提出的网络在准确性,参数数量和运行时间方面优于基于直接点云的分割方法、基于图像的分割方法和一般的基于投影的分割方法。此外,该网络在嵌入式平台上每秒处理超过24次扫描,这比LiDAR传感器的帧速率更高,因此,该网络适用于自动驾驶汽车。
简介
对环境的感知和理解是实现自动驾驶汽车的关键。为了全面了解环境,自动驾驶车辆通常配备多传感器系统,其中光检测和测距(LiDAR)传感器由于其精确的距离测量而起着关键作用。但是,为了理解环境,需要对由LiDAR传感器生成的大点云进行解释。尽管卷积神经网络(CNN)在语义图像分割方面表现良好,但它们不能直接应用于3D点云。这是因为标准卷积需要呈规则网格结构,而原始点云是无序结构。为了解决这个问题,一些方法PointNet、PointNet 、PointCNN尝试使用一些空间聚合操作(例如grouping和gathering)直接处理点云。尽管这些方法在室内场景下效果很好,但很难将其应用于大型室外场景,尤其是聚合操作的计算成本随着点数的增加而增加,使得这些方法对于自动驾驶而言效率太低。另一个问题是,由于存在许多复杂的操作,很难使用TensorRT等现代技术来优化基于点云的分割方法以提高效率,从而阻止它们轻松部署在嵌入式平台上。但是,运行时效率对于现实世界的应用至关重要,特别是对于自动驾驶汽车而言。因此,基于点的方法不能直接应用于自动驾驶。
Wuet等人在SqueezeSeg和SqueezeSeg V2的工作中发现,LiDAR传感器产生的点云可以表示为有序投影图像,因此可以应用于卷积神经网络。但是,投影的LiDAR数据和RGB图像是不同的模态,并且直接应用基于2D图像的方法并不能获得良好的性能。因此,目前已经为基于LiDAR的距离图像设计了一些特定的CNN,称为基于投影的方法。然而,当前基于投影的最先进方法(《RangeNet : Fastand accurate LiDAR semantic segmentation》)参数量很大超过50M,使其在嵌入式平台上效率低下。
因此,在本文的工作中提出了一种新颖的基于投影的方法,该方法可以实现高精度,并且在嵌入式平台上比LiDAR传感器具有更高的帧速率。具体而言有三大贡献:首先,提出了一种非常有效的多尺度体系结构,该体系结构以最佳方式平衡了不同尺度上的计算资源。因此,将网络称为多尺度交互网络(MINet)。其次,提供了额外的监督损失函数,从而在不增加运行时间或推理内存消耗的情况下提高了准确性。第三,在融合之前,首先独立地处理不同的模态,这也提高了准确性。
处理户外场景中物体的大尺度变化是自动驾驶的一个重要挑战,虽然可以通过多尺度方法来解决,但它们的计算成本很高。在本文工作中,提出了一种高效的多路径架构,如图1所示,其中每个路径在不同的尺度上运行,并且路径之间相互影响,具体使用三个路径,从上到下,分辨率递减,感受野增加。与标准的多尺度方法相比,该方法对每条路径的计算操作进行了调整,上层路径提取的是低层细节信息,在高分辨率的特征图上用简单操作就可以很容易地捕获细节信息,而下层路径提取的是高层语义信息,需要更复杂的操作,但该操作作用在低分辨率的特征图上。为了避免各路径之间的冗余计算,提出了一种密集的从上到下的交互策略,即一条路径的特征图被传递给所有下层路径。因此,这种设计实现了效果和效率之间的较好的平衡。
另外,增加额外的监督损失函数可以提高准确性,本文的方法建议在网络的不同部分添加不同类型的损失函数,这更加有效。最后,该方法首先独立处理包含3D坐标、反射率和范围信息的多模态数据,然后在特征空间中融合它们。这与仅将模态串联在一起,因此忽略了每种模态的特征是不同的的先前工作相反。
实验结果表明,与基于投影的最新方法RangeNet 相比,本文的方法减少了约98%的参数数量,并且速度提高了约4倍,同时实现了更高的精度。同时,还在嵌入式平台上评估了我们的模型,并证明了本文的方法可用于自动驾驶。
本文方法:MULTI-SCALE INTERACTION NETWORK
本文的多尺度交互网络(MINet)对从LiDAR点云生成的投影图像进行操作。为了将LiDAR点与投影图像中的像素相关联,转换公式为:
在这里,将尺寸为(h,w)的投影图像中的LiDAR point(x,y,z)关联到像素(u,v)。经过此转换后,将生成具有大小(h,w,5)的投影图像,其中每个像素都包含相关3D点的坐标(x,y,z)、范围和反射信息。
图1:多尺度交互网络架构的图示。插值算法(U)和平均池(D)的数字2和4表示上采样和下采样因子。虚线箭头表示损失函数类型。
MINet的架构如图1所示。 融合模块(Mini Fusion Module)首先对点云投影图像进行处理,融合特征空间中的多模型信息。在多尺度交互模块(MIM)中,数据在三个不同的尺度上进行处理,其分辨率在每条路径上降低了2个因子,如表1所示。
每条路径的计算方式不同,使用两个基本组件,即 MobileBlock 和 BasicBlock实现。MobileBlock利用深度可分离卷积,因此参数较少,但其学习能力也有限。BasicBlock的提取特征的能力更强,但代价也更高。MobilBlock和BasicBlock如图2所示。
同时,对三种路径的计算资源进行了平衡,虽然在分辨率最低的底层路径上使用昂贵的BasicBlock,但随着分辨率的增加,在中间路径上使用5个MobileBlock,在顶层路径上使用3个MobileBlock,从而降低了计算成本。从每条路径到下层路径的连接避免了下层路径的冗余计算,使网络更加高效。最后,原始分辨率的2D预测由上采样融合模块(UFM)产生,然后映射回3D空间。
1、Mini Fusion Module
与RGB图像不同,投影的图像包含不同形式的通道。以前的基于投影的分割方法均等地对待这些不同的形式,但是本文的作者表明,首先独立处理每个通道更为有效。具体来说,使用5个卷积块将 multi-modal 图像的每个通道映射到一个独立的特征空间,卷积块操作中包括归一化BN和激活函数,这对应于表1的第一行。在将每个模态融合之前,可以将此步骤视为特征校准步骤。需要注意的是,同时还将x,y和z坐标分开对待,因为将它们组合并不能提高准确性,并且需要对网络体系结构中的输入通道进行硬编码。在前5个卷积层之后,将这些特征图串联起来,并送入到几个MobileBlock中以进行融合。由于较小的分辨率导致较少的计算,因此通过平均池化操作逐渐聚集了特征图的信息。
2、Multi-scale Interaction Module
融合模块之后,数据通过三个路径进行处理,其中每个路径对应于一个不同的比例,如图1所示。从上到下,使用平均池化层将特征图的分辨率降低两倍,并相应地增加了感受野。对于top路径,使用最高分辨率,由于处理高分辨率特征图非常耗费计算量,因此仅使用三个MobileBlock,如表1中所示。底部路径具有最大的感受野和最低的分辨率,可以提供更多抽象的语义信息,因此,底部路径使用三个BasicBlocks。中间路径是顶部和底部路径之间的折衷,由五个MobileBlock组成。
本文的实验表明,与对所有路径使用相同的块相比,随着分辨率的降低而增加计算操作将会有更高的效率。如果对所有路径都使用相同BasicBlocks,则与多尺度交互的体系结构相比,参数的数量将增加一倍,但如果仅使用MobileBlocks,则精度会下降。
多尺度交互模块的第二个重要设计选择是允许路径之间的交互。由于较低路径的路径计算复杂度增加,因此使用密集的顶部到底部融合设计来实现有效的多尺度特征交互,尤其是第一路径和第二路径的特征图将通过平均池化层调整大小并传递给所有较低路径。为了避免通道数量的不匹配,针对每个路径逐渐增加通道数量,在每个交互位置保持相同。因此,没有其他操作可用于调整通道数,如表1所示。由于交互作用,较低的路径受益于较高路径计算出的特征,同时由于有限的计算资源,较低的路径因此可以集中处理尚未由较高的路径提取的信息。
3、Up Fusion Module
为了获得投影的输入图像的每个像素的语义标签,图3所示的Up Fusion模块将不同比例的特征进行组合,并将其上采样到输入分辨率。另外,Mini Fusion Module的第一个MobileBlock之后的特征用于恢复详细的空间信息,如图1所示。图3的下半部分输入为三个不同路径的特征图,这些路径首先被调整为相同的大小,并串联在一起,并通过1×1卷积融合。然后将融合后的特征图上采样到原始分辨率,并通过包括3x3卷积,批处理归一化和ReLU激活函数的卷积块进行处理。上半部分输入为Mini Fusion Module中已经具有原始分辨率的特征图。它们由一个MobileBlock和卷积块处理。最后,将两个模块的处理后的特征添加在一起。尽管原始特征图的空间信息已经有助于锐化线段边界,但由于上采样的缘故,这可能会变得模糊,但对线段边界添加额外的监督会强化这种锐化增强的效果。
4、 Booster Training Strategy
在网络的中间部分添加损失函数进行训练已经被证明对网络优化是有用的。在这项工作中,提出了两种不同类型的损失函数在网络的中间部分。与平衡不同规模的计算资源类似,对网络的正确部分使用正确的损失函数进行监督训练是非常重要的。
除了在网络的末端,还对顶部和中间路径使用加权交叉熵损失Ls,如图1中的虚线箭头所示。然而,由于下部路径的分辨率太低并且ground truth的下采样引入了太多的伪像,因此在底部路径上添加这种语义损失函数无济于事。
在上采样后获得准确的分割边界是一个问题。由于使用CRF进行后处理需要大量的计算量,并且使用k-NN进行后处理对LiDAR数据的效果甚至更好,因此本文使用了额外的损失函数来指导上采样过程,通过语义边缘损失来完成。
同时,在网络末端使用了Lov́asz-Softmax损失函数 Lls,该方法可以最大程度地增加交并比(IoU)得分:
总的来说,
实验与结果
数据集: Semantic KITTI 、SemanticPOSS
评价指标:平均交并比mIoU
消融实验:
1、模块的消融
如图1所示,本文的网络由三个模块组成。如图2所示,我们评估了MiniFusion模块(MFM),多尺度交互模块(Interaction)和up-融合模块(UFM)的一些设计选择。虽然所提出的方法达到了51.8%的mIoU(第4行),但将在将它们分别融合到第一行的特征空间之前,分别评估了处理每种模态的影响。为了保持参数数量相同,使用3×3卷积来处理输入的多模态图像,而不是在Mini Fusion模块中分别处理每个模态。在这种情况下,精度下降了0.9%(行1)。这显示了在开始时分别处理每个模态的好处。在图1中,在三个路径之间建立了连接,如果删除了从上到下的交互,则准确性降低了1.1%(第2行)。这证明了允许多尺度特征之间进行交互的好处。如果仅通过卷积层调整多分辨率特征的大小,对其进行级联和处理,而不使用Up Fusion模块,则精度会降低1.2%(第3行)。
2、损失函数的消融
对比实验
可视化实验
嵌入式设备上的实验
最后,将本文的方法与RangeNet在嵌入式平台上进行比较。使用了一个Jetson AGX,这是一个用于嵌入式系统的人工智能模块,因为它们被用于自主驾驶,并通过TensorRT优化所有方法。结果显示在图8中,并在图8中可视化。由于输入分辨率可以降低以减少运行时间,实验报告了三种不同输入分辨率的结果。可以看到,在每个分辨率下,无论是否进行后处理,多尺度交互网络都优于RangeNet53。而且,它的速度比RangeNet53快得多,即使在全分辨率和后处理的情况下,多尺度交互网络也能实时运行,因为激光雷达的扫描频率是10Hz。与Tab. 此外,后处理是在点云上进行的,它不能从降低投影图像的分辨率中获益。多尺度交互网络在不进行后处理的情况下比RangeNet53快4倍左右,而在进行后处理的情况下则快2倍左右。
更多细节可参考论文原文。