论文阅读:Rethinking Range View Representation for LiDAR Segmentation

news2024/11/20 15:28:03

来源ICCV2023

0、摘要

LiDAR分割对于自动驾驶感知至关重要。最近的趋势有利于基于点或体素的方法,因为它们通常产生比传统的距离视图表示更好的性能。在这项工作中,我们揭示了建立强大的距离视图模型的几个关键因素。我们观察到,“多对一”的映射语义不连贯性形状变形的可能障碍对有效的学习从距离视图投影。我们提出的RangeFormer -一个全周期的框架,包括跨网络架构,数据增强和后处理的新颖设计-更好地处理学习和处理LiDAR点云从范围的角度。我们进一步介绍了一个可扩展的训练范围视图(Scalable Training from Range view STR)的策略,训练任意低分辨率的2D范围图像,同时仍然保持令人满意的3D分割精度。我们表明,第一次,范围视图方法是能够超越点,体素,和多视图融合同行竞争的LiDAR语义和全景分割基准,即SemanticKITTI、nuScenes和ScribbleKITTI。

1. Introduction

        LiDAR点云具有独特的特性。作为现实世界场景的直接反映,它们往往是多样和无序的,从而给学习带来额外的困难[27,42]。不可避免地,高效和有效的LiDAR点云处理需要良好的表示[67]。

        尽管存在如Tab.1,主流方法主要基于点视图[33,64],体素视图[15,63,87,29]和多视图融合[43,75,54]。然而,这些方法需要计算密集的邻域搜索[53],3D卷积运算[45]或多分支网络[2,25],这些方法在训练和推理阶段通常效率低下。基于投影的表示,如范围视图[71,48]和鸟瞰视图[83,86],是更容易处理的选项。3D到2D光栅化和成熟的2D算子为快速和可扩展的车载LiDAR感知打开了大门[48,74,67]。不幸的是,当前基于投影的方法[85,13,83]的分割精度仍然远远落后于趋势[77,75,79]。

        从投影LiDAR扫描中学习的挑战来自LiDAR数据表示的潜在有害因素[48]。如图1、距离视图投影常常遇到几个困难,包括1)由于水平角分辨率有限而引起的相邻点的“多对一”冲突; 2)由于3D稀疏性和传感器中断导致的距离图像中的“洞”;以及3)光栅化过程中的潜在形状变形。虽然这些问题在范围视图学习中是普遍存在的,但以前的作品几乎没有考虑解决它们。源于图像分割社区[82],现有技术广泛采用全卷积网络(FCN)[46,8]用于范围视图LiDAR分割[48,85,13,36]。有限的接受领域的FCNs不能直接模拟长期的依赖性,因此在处理上述障碍是不太有效的。

        在这项工作中,我们寻求一种替代目前的范围视图激光雷达分割模型。受Vision Transformer(ViT)及其后续产品[19,70,73,44,60]的成功启发,我们设计了一个名为RangeFormer的新框架,以更好地处理距离视图中LiDAR点云的学习和处理。我们将范围视图网格的分割公式化为seq 2seq问题,并采用标准的自我注意模块[69]以“全局”方式捕获丰富的上下文信息,这在FCN中经常被省略[48,1,13]。然后,利用这种全局感知提取的分层特征被馈送到多层感知(MLP)中以进行解码。以这种方式,距离图像中的每个点都能够建立与其他点的交互-无论是近还是远以及有效还是空-并且进一步导致从LiDAR距离视图进行更有效的表示学习。

        值得注意的是,这种架构虽然简单,但仍然存在一些困难。第一个问题与数据多样性有关。流行的LiDAR分割数据集[7,21,5,62]包含数万个用于训练的LiDAR扫描。然而,这些扫描在以顺序方式收集它们的意义上是不太多样的。这阻碍了基于Transformer的架构的训练,因为它们通常依赖于足够的样本和强大的数据增强[19]。为了更好地处理这个问题,我们设计了一个增强组合,是为范围视图量身定制的。受最近的3D增强技术[86,37,49]的启发,我们通过行混合,视图移动,复制粘贴和网格填充来操纵范围视图网格。正如我们将在以下部分中展示的那样,这些轻量级操作可以显著提高SoTA范围视图方法的性能。

        第二个问题来自数据后处理。先前的工作采用CRF [71]或k-NN [48]来平滑/推断范围视图预测。然而,通常很难在无监督方式下找到3D标签的欠平滑和过平滑之间的良好平衡[35]。相比之下,我们设计了一种监督后处理方法,首先将整个LiDAR点云子采样为等间隔的“子云”,然后推断其语义,这从整体上降低了混叠范围视图网格的不确定性。

        为了进一步减少范围视图学习的开销,我们提出了STR -一个可扩展的范围视图训练范例。STR首先将整个LiDAR扫描沿方位方向沿着“划分”为多个组,然后“征服”每个组。这将高水平分辨率的距离图像转换为低分辨率的距离图像的堆叠,同时可以更好地保持最佳可能的粒度,以缓解“多对一”的冲突。经验上,我们发现STR有助于降低训练过程中的复杂性,而不会牺牲太多的收敛速度和分割精度。

        在现有的基准上,从LiDAR分割精度和效率方面展示了RangeFormer和STR的优势。具体而言,我们在SemanticKITTI [5]上实现了73.3%的mIoU和64.2%的PQ,显著超过了先前的范围视图方法[85,13],也优于基于SoTA融合的方法[77,31,79]。我们还在nuScenes [21](稀疏点云)和ScribbleKITTI [68](弱监督)数据集上建立了优势,这验证了我们的可扩展性。虽然更有效,但我们的方法比最近的体素[87,63]和融合[75,77]方法快2倍到5倍,并且可以以传感器帧速率运行。

2. Related Work

2.1 LiDAR Representation

        LiDAR传感器被设计为捕获高保真3D结构信息,该信息可以通过各种形式表示,即,原始点[52,53,64]、范围视图[32,72,74,1]、鸟瞰视图(BEV)[83]、体素[45,15,87,79,10]和多视图融合[43,75,77],如表1中所总结。1.点和稀疏体素方法是流行的,但具有O(N · d)的复杂度,其中N是点数,通常在105的数量级[67]。BEV提供了一种有效的表示,但仅产生低于标准的性能[9]。至于基于融合的方法,它们通常包含多个网络,这些网络太重,无法产生合理的训练开销和推理延迟[54,79,61]。在所有表示中,范围视图是直接反映LiDAR采样过程的视图[65,20,66]。因此,我们专注于这种模态,以进一步拥抱其紧凑性和丰富的语义/结构线索。

2.2 Architecture

        以前的范围视图方法建立在成熟的FCN结构上[46,71,72,74,3]。RangeNet++ [48]提出了一种基于DarkNet [56]的编码器-解码器FCN。SalsaNext [17]使用扩张的卷积来进一步扩大感受野。Lite-HDSeg [55]提出采用谐波卷积来减少计算开销。EfficientLPS [58]提出了一个邻近卷积模块来利用范围图像中的邻域点。FIDNet [85]和CENet [13]将编码器切换到ResNet,并用简单的插值替换解码器。与使用FCNs相比,我们建立RangeFormer自我关注,并展示了在范围视图学习中进行远程依赖建模的潜力和优势。

2.3 Augmentation

        大多数3D数据增强技术是以对象为中心的[81,11,57,39],因此不能推广到场景。Panoptic-PolarNet [86]在训练过程中对稀有实例点进行过采样。Mix 3D [49]通过从一个场景到另一个场景补充点来提出上下文外混合。MaskRange [26]设计了一个加权的粘贴下降增强,以减轻过拟合和改善类平衡。LaserMix [37]提出沿着倾斜轴混合标记和未标记的LiDAR扫描,以实现有效的半监督学习。在这项工作中,我们提出了一种新颖的轻量级增强组合,专为范围视图学习,结合混合,移动,工会和复制粘贴操作直接在栅格化的网格,同时仍然保持场景的结构一致性。

2.4 Post-Processing

尽管它是距离视图LiDAR分割的不可或缺的模块,但先前的工作几乎没有考虑改进后处理过程[67]。大多数作品遵循CRF [71]或k-NN [48]来平滑或推断冲突点的语义。最近,赵等。提出了另一种名为NLA的无监督方法用于最近标签分配[85]。我们通过从全点云创建“子云”并推断每个子集的标签,以监督的方式解决这个问题,这直接减少了信息丢失,并有助于缓解“多对一”问题。

3. Technical Approach

        在本节中,我们首先回顾范围视图光栅化的细节(第3.1节)为了更好地解决距离视图学习中的障碍,我们引入了RangeFormer(3.2)和STR(Sec.3.3)其分别强调可扩展LiDAR分割的有效性和效率。

3.1. Preliminaries

安装在车顶上的自我车辆(如图所示)。1),旋转LiDAR传感器以预定义角度发射各向同性激光束,并通过扫描周期中的时间测量来感知周围环境的位置和反射强度。具体地,每个LiDAR扫描在单个扫描周期中捕获并返回N个点,其中扫描中的每个点pn由笛卡尔坐标

光栅化。对于给定的LiDAR点云,我们将该扫描内的点光栅化为2D圆柱投影R(u,v)(也称为,范围图像),其中H和W分别是高度和宽度。每个点pn的光栅化过程可以公式化如下:

其中(un,vn)表示距离图像R(u,v)中的点pn的网格坐标; pd n = p(pxn)2 +(py n)2 +(pz n)2是点与LiDAR传感器(自我车辆)之间的深度; ξ =| ϕup|+的|向下倾斜|表示传感器的垂直视场(FOV),并且向上和向下分别是向上和向下方向的倾斜角。请注意,H通常由LiDAR传感器的光束编号预定义,而W可以根据要求设置。(该操作很常见,把点云映射到一个柱状平面)

最终的距离图像由六个光栅化特征嵌入组成,即:坐标(px,py,pz)、深度pd、强度pi和存在pe(指示网格是否被有效点占据)。范围语义标签y(u,v)∈ R(H,W)-其从3D中的每点标签光栅化-与R(u,v)共享相同的光栅化索引和分辨率。3D分割问题现在变成了2D问题,并且范围图像中的网格预测然后可以以Eq1反映射。(一般channel是5,这里多增加了一个是否占据,应该是前文有提到空洞)

3.2. RangeFormer: A Full-Cycle Framework

        如前所述,在图1的距离视图表示中存在潜在的有害因素。Eq.(1)的一对一映射通通常不成立,因为H ×W远小于N。现有技术[48,2,13]采用(H,W)=(64,512)来对每个约120k个点的激光雷达扫描进行光栅扫描[5],导致超过70%的信息损失2。深度图像中有限的水平角分辨率和大量的空网格会给模型训练带来额外的困难,如形状变形、语义不一致等。

3.2.1 Architecture.

为了追求更大的感受野和更长的依赖建模,我们设计了一个基于自我注意的网络,包括标准的Transformer块和MLP头,如图所示2.给定一批光栅化的距离图像R(u,v),由三层MLP层组成的距离嵌入模块(REM)首先将网格中的每个点映射到更高维度的嵌入。这与PointNet类似[52]。接下来,我们将F0划分为大小为3 × 3的重叠面片,并将它们送入Transformer块。类似于PVT [70],我们设计了一个金字塔结构来促进多尺度特征融合,分别为四个阶段产生{F1,F2,F3,F4},下采样因子为1,2,4和8。每个阶段由自定义数量的Transformer块组成,每个块包括两个模块。

1)多头自注意[69],作为主要的计算瓶颈,可以公式化为:

其中,headi = Attention(QWQ i,KWK i,VWV i)表示Attention = σ(QK_dhead)V的自注意操作; σ表示softmax,dhead是每个头的尺寸; WQ、WK、WV和WO是查询Q、键K、值V和输出O的权重矩阵。如[70]中所建议的,K和V的序列长度进一步减少因子R以保存计算开销。

2)前馈网络(FFN),由MLP和激活组成:

其中,R表示剩余连接[28]。与ViT [23]不同,我们放弃了显式的位置嵌入,而是直接将其合并到特征嵌入中。如[73]中所介绍的,这可以通过在FFN中添加一个具有零填充的3 × 3卷积来实现。

3.2.2 Semantic Head

为了避免解码中的繁重计算,我们采用简单的MLP作为分割头。在检索了四个阶段的所有特征后,我们首先统一了它们的维度。这通过两个步骤实现:1)信道统一,其中具有嵌入大小的每个Fi经由一个MLP层统一。2)空间统一,其中来自最后三个阶段的Fi通过简单的双线性插值被调整大小为范围嵌入大小H × W。因此,阶段i的解码过程为:

        如[85]中所证明的,范围视图网格的双线性插值等效于PointNet++ [53]中的距离插值(具有四个邻居)。在这里,前一种操作是更好的选择,因为它完全没有参数。最后,我们将四个Hi连接在一起并将其馈送到另外两个MLP层中,其中信道维度逐渐映射到d_{cls},即类数,以形成类概率分布。此外,我们为每个Hi添加一个额外的MLP层作为辅助磁头。在训练期间,分别监督来自主头和四个辅助头的预测。至于推理,我们只保留主分割头,丢弃辅助头。

(所以有跳跃连接吗?图中似乎没有,但是描述有,四个辅助分割头 + 主分割头)

3.2.3 Panoptic Head

        类似于Panoptic-PolarNet [86],我们在RangeFormer之上添加了一个panoptic头来估计实例中心和偏移,称为Panoptic-RangeFormer。由于我们以自下而上的方式解决这个问题,因此事物类的语义预测被用作前景掩码来形成3D中的实例组。接下来,我们通过预测XY平面上每个点的中心热图[12]和偏移量来进行2D类无关实例分组。基于[86],上述两个方面的预测可以通过多数投票进行融合。正如我们将在实验中展示的那样,RangeFormer在语义学习方面的优势进一步产生了更好的全景分割性能。

3.2.4 RangeAug

        数据增强通常有助于模型学习更一般的表示,从而提高准确性和鲁棒性。LiDAR分割中的现有技术在点级进行一系列增强[87],即,全局旋转、抖动、翻转和随机丢弃,我们将其称为“常见”增强。为了更好地包含范围视图表示的丰富语义和结构线索,我们提出了一个增强组合,包括以下四个操作。

RangeMix

        其混合了沿倾角和方位角θ方向的两个沿着扫描。这可以被解释为切换两个范围图像的某些行。在计算当前扫描和随机采样扫描的ϕ和θ之后,我们然后将点分成kmix相等的跨度倾斜范围,即,不同的混合策略。然后切换来自两次扫描的相同倾斜范围中的对应点。在我们的实验中,我们从组合中设计混合策略,kmix从列表中随机抽样[2,3,4,5,6]。

(个人理解是,要么沿着垂直要么沿着水平,将图像分成n份,然后两次扫面中随机交换一份)

RangeUnion

        其用来自另一个扫描的网格填充一个扫描的空网格。由于3D中的稀疏性和潜在的传感器中断,即使在光栅化之后,也有大量的网格是空的。因此,我们使用存在嵌入pe来搜索和填充这些空白网格,这进一步丰富了距离图像的实际容量。给定一定数量的N空范围视图网格,我们随机选择k*N候选网格进行点填充,其中k设置为50%。(这个空洞填充的是什么数据呢)

RangePaste

        其在距离图像中的对应位置处将尾部类从一个扫描复制到另一个扫描。这促进了稀有类的学习,并且还在投影中保持对象的空间布局。随机采样扫描的地面实况语义标签用于创建粘贴蒙版。要粘贴的类是那些在“tail”分布中的类,它形成了一个语义类列表(sem类)。在索引稀有类的点之后,我们将它们粘贴到当前扫描中,同时保持范围图像中的相应位置。(把不常见的类单独复制出来到别的scan上)

RangeShift

        其沿方位角方向θ = arctan(py/px)沿着滑动扫描以改变全局位置嵌入。这对应于使用kshift行沿行方向沿着移动范围视图网格。在我们的实验中,kshift是从W 4到3 W 4的范围内随机采样的。这四个增强是为范围视图量身定制的,可以在数据加载过程中实时操作,而不会在训练过程中增加额外的开销。正如我们将在下一节中展示的那样,它们在提高范围视图分割模型的性能方面发挥着至关重要的作用。(整体向左平移一定角度)

3.2.5RangePost

        广泛使用的k-NN [48]以无监督的方式为边界附近的点投票和分配标签,无法具体处理“多对一”冲突。因此,我们以监督的方式处理这一问题。我们首先将整个点云子采样为等间隔的“子云”。由于相邻点属于同一类的可能性很高,因此这些“子云”共享非常相似的语义。接下来,我们将这些子集堆叠并馈送到网络。在获得预测后,我们将它们缝合回原始位置。对于每次扫描,这将自动为在光栅化过程中合并的点分配标签,只需一次向前传递,这直接减少了“多对一”映射造成的信息丢失。最后,可以将先前的后处理技术[48,85]应用于这些新的预测,以进一步增强重新光栅化过程。

3.3. STR: Scalable Training from Range View

        为了追求更好的训练效率,现有技术采用低水平角分辨率,即,在等式中W的较小值。(1),用于范围图像光栅化[48,2]。这不可避免地加剧了“多对一”的冲突,导致更严重的形状扭曲,并导致低于标准的性能。

3.3.1 2D & 3D Occupancy.

我们不是直接为R(u,v)分配小W,而是首先查找最佳可能选项。我们发现在激光雷达扫描中的点的数量和范围图像的期望容量之间的“占用权衡”。如图3、常规选择,即,512、1024和2048不是最佳的。两条线的交叉指示宽度1920的范围图像倾向于是信息量最大的表示。然而,这种配置不可避免地消耗比传统使用的512或1024分辨率多得多的存储器,并且进一步增加了训练和推理开销。

3.3.2 Multi-View Partition

        为了在追求效率的同时保持W的相对高的分辨率,我们提出了一种“分而治之”的学习范式。具体来说,我们首先基于每个点的唯一方位角将LiDAR扫描中的点划分为多个组,即,θi = arctan(py i /px i)。这将构成Z个不重叠的“意见”的完整的360度全景范围内的看法,如图4所示,其中Z是超参数,并确定要分裂的组的总数。接下来,将以高水平分辨率分别对每组中的点进行栅格化,以缓解“多对一”和变形问题。以这种方式,距离图像的实际水平训练分辨率被放宽Z倍,即,,而每个“视图”中的范围视图投影的粒度(网格的数量)被完美地保持。(意思是分成Z个块?)

3.3.3 Training & Inference

        在训练过程中,对于每次LiDAR扫描,我们只随机选择一个Z点组进行光栅化。也就是说,模型将在每一步使用一批随机抽样的“视图”进行训练。在推理过程中,我们对给定扫描的所有组进行光栅扫描,并沿批次维度沿着堆叠范围图像。所有的“视图”现在都可以在一个过程中推断出来,然后将预测结果包装起来形成完整的扫描。尽管是一个经验的设计,我们发现这个STR范式在训练过程中具有高度的可扩展性。来自多个“视图”的训练的收敛率倾向于与传统的训练范例一致,即,STR可以使用相同的迭代次数获得有竞争力的结果,而内存消耗现在已经减少到只有1/Z,这解放了小内存GPU的使用,用于训练。

4. Experimental Analysis

4.1. Settings

4.1.1 Benchmarks

我们在三个标准的LiDAR分割数据集上进行实验。SemanticKITTI [5]提供了22个序列和19个语义类,由64束激光雷达传感器捕获。序列00至10(不包括08)、08和11至21分别用于训练、验证和测试。nuScenes [21]由从波士顿和新加坡收集的1000个驾驶场景组成,由于使用了32束传感器,这些场景较为稀疏。将相似类和不常见类合并后,采用16类。ScribbleKITTI [68]与[5]共享完全相同的数据配置,但用线条涂鸦进行了弱注释,这对应于训练期间可用的约8.06%的语义标签。

4.1.2 Evaluation Metrics

        按照标准实践,我们报告了类别i的交集(IoU)和所有类别的平均得分(mIoU),其中IoUi = TPi TPi+FPi+FNi。TPi、FPi和FNi是真阳性、假阳性和假阴性。对于全景分割,模型通过全景质量(PQ)进行测量[34]


它包括分割质量(SQ)和识别质量(RQ)。我们还报告了事物和东西类的单独得分,即,PQTh、SQTh、RQTh和PQSt、SQSt、RQSt。通过将每个填充类的PQ交换为其IoU,然后对所有类进行平均来定义PQ† [51]。

4.1.3 Network Configurations

        在距离视图光栅化之后,尺寸为6 ×H ×W的输入R(u,v)首先被馈送到REM中用于距离视图点嵌入。它由三个MLP层组成,分别将R(u,v)的嵌入dim从6映射到64、128和128,并使用批范数和GELU激活。REM的输出大小为128 × H × W,用作Transformer模块的输入。具体地,对于四个阶段中的每一个,补丁嵌入层将大小为Hemed、Wembed的输入划分为3 × 3补丁,其中重叠步幅等于1(对于第一阶段)和2(对于最后三个阶段)。在重叠补丁嵌入之后,使用标准多头注意操作处理补丁,如[19,70,73]中所述。我们保留使用残余连接和层规范化(Add & Norm)的默认设置。四个阶段中的每一个的头的数量是[3,4,6,3]。从不同阶段提取的分层特征被存储并用于解码。具体地,四个阶段中的每一个产生空间大小为[(H,W),(H 2,W 2),(H 4,W 4),(H 8,W 8)]的特征,其中通道维度为[128,128,320,512]。如前所述,我们执行两个统一步骤来统一不同特征图的通道和空间大小。我们首先将它们的通道尺寸映射到256,即,[128,H,W] → [256,H,W],[128,H 2,W 2 ] → [256,H 2,W 2 ],[320,H 4,W 4 ] → [256,H 4,W 4 ],[512,H 8,W 8 ] → [256,H 8,W 8 ],然后,我们将四个特征图插值到H ×W的空间大小。在RangeAug中进行四次扩增的概率设置为[0.9,0.2,0.9,1.0]。对于RangePost,我们将整个扫描分为三个“子云”,用于2D到3D的重新光栅化。

4.1.4 Implementation Details

按照常规设置[48,13],我们在SemanticKITTI [5]上进行了Wtrain = 512,1024,2048的实验,在nuScenes [21]上进行了Wtrain = 1920的实验。我们使用AdamW优化器[47]和OneCycle调度器[59],其中lr = 1 e-3。对于STR训练,我们首先将点划分为5个和2个视图,然后分别将它们光栅化为SemanticKITTI [5]和nuScenes [21]的大小为64×1920(Wtrain = 384)和32×960(Wtrain = 480)的范围图像。模型在Cityscapes [16]上预训练20个epoch,然后分别在SemanticKITTI [5]和ScribbleKITTI [68]上训练60个epoch,在nuScenes [21]上训练100个epoch,批量大小为32。与[55,13]类似,我们包括交叉熵骰子损失,Lovazz-Softmax损失[6]和边界损失[55]来监督模型训练。所有模型都可以在单个NVIDIA A100/V100 GPU上训练约32小时。

4.2. Comparative Study

4.2.1 Semantic Segmentation

首先,我们将所提出的RangeFormer与SemanticKITTI [5]上的13种先验和SoTA距离视图LiDAR分割方法进行比较(见表1)。2)的情况。在传统的512、1024和2048设置中,我们观察到比SoTA方法CENet [13]提高了9.3%、9.8%和8.6%的mIoU,比MaskRange [26]高7.2%的mIoU。这种优势是普遍的,几乎所有的类,尤其是明显的动态和小型的自行车和摩托车。在选项卡中。3.进一步比较了RangeFormer与其他模态的11种方法。我们可以看到,当前的趋势有利于基于融合的方法,这些方法通常将点视图和体素视图联合收割机结合起来[31,14]。虽然只使用范围视图,RangeFormer取得了迄今为止最好的成绩;它超过最好的基于融合的方法2DPASS [77] 0.4% mIoU和最好的仅体素的方法GSTK [79] 2.9% mIoU。类似的观察也适用于nuScenes [21](见表1)。(五)。

4.2.2 STR Paradigm

从Tab的最后三行可以看出。2,在STR范式(Wtrain = 384)下,FIDNet [85]和CENet [13]与其高分辨率(Wtrain = 2048)版本相比取得了更好的分数。RangeFormer使用STR实现了72.2%的mIoU,这比排行榜上的大多数方法都要好(参见表1)。3)同时比高训练分辨率快13.5%(即,2048)选项(参见选项卡。5)节省了80%的内存消耗。值得再次强调的是,收敛速度往往不会受到影响。相同数量的训练时期被应用于STR和常规训练,以确保比较是准确的。

4.2.3 Panoptic Segmentation.

        RangeFormer在语义分割方面的优势进一步带来了更好的全景分割性能。从Tab。4我们可以看到,Panoptic-RangeFormer在PQ,PQ†和RQ方面比最近的SoTA方法Panoptic-PHNet [41]获得了更好的分数。这种优越性在STR范式下仍然存在,并且对于物质类来说尤其明显。统一语义和实例LiDAR分割的能力进一步验证了我们框架的可扩展性。

4.2.4 Weakly-Supervised Segmentation.

最近,[68]采用线条涂鸦来标记LiDAR点云,这进一步节省了注释预算。从图5a中,我们可以观察到,在弱监督下,范围视图方法的性能远远优于基于体素的方法[15,63,87]。这归功于范围视图的紧凑和语义丰富的属性,它为学习保持了更好的表示。在没有额外模块或过程的情况下,RangeFormer实现了63.0%的mIoU,并在事物类和东西类方面表现出明显的优势。

4.2.5 Accuracy vs. Efficiency

        分割精度和推理运行时间之间的权衡对于车载LiDAR分割至关重要。选项卡.5总结了最近方法的延迟和mIoU分数。我们观察到,由于密集和计算友好的2D表示,基于投影的方法[83,85,13]往往比基于体素和融合的方法[54,75,87]快得多。在所有方法中,RangeFormer产生最佳可能的权衡;它实现了比现有范围视图方法更高的mIoU分数[85,13],同时比体素和融合对应物快2倍至5倍[77,63,75]。此外,范围视图方法还受益于在图像数据集上使用预先训练的模型,例如,[18]如表中所示,ImageNet和Cityscapes [16]。

4.2.6 Qualitative Assessment.

        图6提供了SemanticKITTI [5]序列08上SoTA范围视图LiDAR分割方法[85,13]的一些可视化示例。如从误差图清楚地示出的,现有技术发现分割稀疏分布的区域是困难的,地形和人行道。相比之下,RangeFormer能够对长距离依赖性进行建模并保持较大的感受野,能够从整体上减轻错误。我们还发现在分割对象的形状和边界的优势。更多的视觉比较见附录。

4.3. Ablation Study

在[13,74]之后,我们在SemanticKITTI [5]的瓦尔集合上使用大小为64 × 512的输入探测RangeFormer中的每个组件。由于我们的贡献是通用的,我们还报告了SoTA范围视图方法的结果[85,13]。

4.3.1 Augmentation

        如图5b,数据增强有助于缓解数据稀缺性,并大幅提高细分性能。基于注意力的模型更依赖于数据多样性[19]。作为一个典型的例子,RangeFormer的“普通”版本产生的分数略低于CENet [13]。在所有三种方法中,RangeAug有助于显着提高性能,并表现出明显优于常见增强和最近的Mix3D [49]。值得一提的是,RangeAug所需的额外开销在GPU上可以忽略不计。

4.3.2 Post-Processing

图5c再次证明了后处理在距离视图LiDAR分割中的重要性。如果不应用它,“多对一”问题将导致严重的性能下降。与广泛采用的k-NN [48]和最近的NLA [85]相比,RangePost可以更好地恢复正确的信息,因为相邻点之间的混叠已经整体减少。我们还发现额外的开销可以忽略不计,因为“子云”是沿着批次维度沿着堆叠的,并且可以在一个向前传递中处理。值得注意的是,这种改进发生在训练阶段之后,并且对于各种范围视图分割方法是现成的和通用的。

4.3.3 Scalable Training

为了揭示STR中可能的最佳粒度,我们将点云分为4,5,6,8和10个视图,并在图中显示其结果。7.我们对它们应用相同的训练迭代,因此它们的实际内存消耗变为1 Z。我们看到,4或5个视图的训练往往会产生更好的分数;而在更多视图上,会聚速率将受到影响,这可能是由于低分辨率距离图像中的有限相关性。总之,STR为距离视图LiDAR分割开辟了一种新的训练范例,可以更好地平衡准确性和效率。(实际上这个操作会损害性能,相当于输入变少了)

5、Conclusion

        在这项工作中,在防御传统的范围视图表示,我们提出了RangeFormer,一个新的框架,实现上级性能比其他形式的语义和全景激光雷达分割。我们还引入了STR,这是一种更具可扩展性的处理LiDAR点云学习和处理的方法,可以产生更好的准确性和效率权衡。我们的方法为准确的车载LiDAR感知带来了更多的可能性。在未来,我们将寻求更轻量级的自注意力结构和计算,以进一步提高效率。

Appendix

在本附录中,我们补充了更多的材料来支持本文的主体。具体而言,本附录的结构如下。·

6详细阐述了所提出的方法和实验的附加实现细节。

7提供了额外的定量结果,包括我们的比较研究和消融研究的类IoU评分。

8附加了额外的定性结果,包括更多的视觉比较(图)和演示(视频)。

9.承认在这项工作中使用的公共资源。

6. Additional Implementation Detail

        在本节中,我们提供了更多的技术细节,以帮助读者更好地理解我们的方法。具体来说,我们首先详细说明我们工作中使用的数据集和基准。然后,我们总结网络配置,并提供更多的训练和测试细节。

6.1. Benchmark

SemanticKITTI

作为KITTI视觉里程计基准的扩展,SemanticKITTI [5]数据集已被广泛用于评估和比较模型性能。它由总共22个序列组成,收集自德国的街景。训练、验证和测试扫描的数量分别为19130、4071和20351。激光雷达点云由Velodyne HDL64E传感器捕获,每次扫描约120k个点,垂直角分辨率为64。因此,我们在3D到2D光栅化期间将H设置为64。在这项工作中采用了19个类的常规映射。

nuScenes

作为一个多模式自动驾驶数据集,nuScenes [7]是迄今为止最全面的基准。它是由Motional(前身为nuTonomy)的团队开发的。数据收集自波士顿和新加坡。我们使用nuScenes中的lidarseg集[21]进行LiDAR分割。它包含28130个训练扫描和6019个验证扫描。Velodyne HDL32E传感器用于数据收集,可产生约40k至50k点的稀疏点云。因此,我们在3D到2D光栅化期间将H设置为32。在这项工作中,我们采用了传统的16个类从官方映射。

ScribbleKITTI

由于人工标注通常是昂贵和耗时的,越来越多的最近的作品已经开始寻求弱注释。ScribbleKITTI [68]用线条涂鸦重新标记了SemanticKITTI [5],从而保存了时间和精力。最终有效语义标签占点数的比例为8.06%。我们采用与SemanticKITTI相同的3D到2D光栅化配置,因为这两个集合共享相同的数据格式,即,64个波束,每次LiDAR扫描约120k个点,16个语义类。我们遵循作者的原始设置,并报告SemanticKITTI序列08的分数。

6.2. Model Configuration

Range Embedding Module (REM)在距离视图光栅化之后,尺寸为6 ×H ×W的输入R(u,v)首先被馈送到REM中用于距离视图点嵌入。它由三个MLP层组成,分别将R(u,v)的嵌入dim从6映射到64、128和128,并使用批范数和GELU激活。

Overlap Patch Embedding.REM的输出大小为128×H× W,用作Transformer模块的输入。具体地,对于四个阶段中的每一个,补丁嵌入层将大小为Hemed、Wembed的输入划分为3×3补丁,其中重叠步幅等于1(对于第一阶段)和2(对于最后三个阶段)。

Multi-Head Attention & Feed-Forward.在重叠补丁嵌入之后,使用标准多头注意操作处理补丁,如[19,70,73]中所述。我们保留使用残余连接和层规范化(Add & Norm)的默认设置。四个阶段中的每一个的头的数量是[3,4,6,3]。

Segmentation Head.从不同阶段提取的分层特征被存储并用于解码。具体地,四个阶段中的每一个产生空间大小为[(H,W),(H 2,W 2),(H 4,W 4),(H 8,W 8)]的特征,其中通道维度为[128,128,320,512]。如正文所述,我们执行两个统一步骤来统一不同特征图的通道和空间大小。我们首先将它们的通道尺寸映射到256,即,[128,H,W] → [256,H,W],[128,H 2,W 2 ] → [256,H 2,W 2 ],[320,H 4,W 4 ] → [256,H 4,W 4 ],[512,H 8,W 8 ] → [256,H 8,W 8 ],然后,我们将四个特征映射插值到H ×W的空间大小。

6.3. Training & Testing Configuration

我们的LiDAR分割模型使用PyTorch实现。所提出的数据扩充(RangeAug)、后处理技术(RangePost)和STR分区策略都是GPU辅助的,并且在数据准备过程中,这避免了在模型训练期间增加额外的开销。“共同”数据扩充的配置,即,缩放、全局旋转、抖动、翻转和随机丢弃描述如下。

随机缩放:点坐标(px,py,pz)的全局变换,其中每个点的坐标在−0.05%到0.05%的范围内随机缩放。

全局旋转:XY平面内点坐标(px,py)的全局变换,旋转角度在0度到360度范围内随机选择。

随机抖动:点坐标(px、py、pz)的全局变换,其中每个点的坐标在-0.3m 到0.3m 的范围内随机抖动。

随机翻转:点坐标(px,py)的全局变换,具有三种选项,即仅沿X 轴翻转、仅沿Y 轴翻转、沿X 轴和Y 轴翻转。

随机丢弃:全局变换,在范围视图光栅化之前从整个LiDAR 点云中随机删除一定比例的kdrop 点。在我们的实验中,kdrop 设置为 10%。

另外,所提出的范围视图增强组合的配置描述如下

RangeMix:计算出当前扫描和随机采样扫描的所有倾角 和方位角 θ 后,我们将点分割为 kmix 等跨倾角范围,即不同的混合策略。然后交换两次扫描中相同倾角范围内的对应点。在我们的实验中,我们从组合中设计混合策略,并且 kmix 从列表 [2,3,4,5,6] 中随机采样。

RangeUnion:点嵌入中的存在性pe用于创建潜在的掩模,然后将其用作用来自随机采样扫描的点(在相应位置)补充当前距离图像中的空网格的指示符。给定多个 Nunion = P n pe n 空范围视图网格,我们随机选择 kunionNunion 候选网格进行点填充,其中 kunion 设置为 50%。

RangePaste:随机采样扫描的真实语义标签用于创建粘贴蒙版。要粘贴的类是“尾部”分布中的类,它形成语义类列表(sem 类)。对稀有类的点进行索引后,我们将它们粘贴到当前扫描中,同时保持范围图像中的相应位置。

RangeShift:范围视图网格中的点相对于其方位角 θ 的全局变换。这对应于使用 kshift rows 沿着行方向移动范围视图网格。在我们的实验中,kshift是从W 4 到3W 4 的范围内随机采样的。

训练时,进行五种常见增强的概率设置为[1.0,1.0,1.0,1.0,0.9];而进行范围视图增强的概率设置为 [0.9, 0.2, 0.9, 1.0]。

在验证期间,所有数据增强,即常见增强操作和建议的范围视图增强操作,都设置为 false。我们注意到最近的一些工作在验证集上使用了一些技巧,例如测试时间增强、模型集成等。值得一提的是,我们没有使用任何技巧来提高验证性能,以便结果可以直接与遵循标准设置的方法。

在测试过程中,我们遵循 CENet [13] 中的常规设置,并在预测阶段应用测试时间增强。我们使用 CENet 作者的代码来实现这一点:它在多个增强输入中进行投票以生成最终预测。三种常见的增强,即全局旋转、随机抖动和随机翻转,用于产生增强输入。投票数设置为 11。我们不使用模型集成来提高测试性能。按照惯例,我们报告了 SemanticKITTI 和 nuScenes 基准测试集的增强结果。对于 ScribbleKITTI [68],我们重现了 FIDNet [85]、CENet [13]、SPVCNN [63] 和 Cylinder3D [87],并报告它们在标准 ScribbleKITTI val 集上的分数,而不使用测试时间增强或模型集成。

6.4. STR: Scalable Training Strategy

正如正文中所述,我们提出了一种可扩展的范围视图训练(STR)策略,以节省训练期间的计算成本。如图 8 所示,STR 允许我们在任意低分辨率 2D 距离图像上训练距离视图模型,同时仍然保持令人满意的 3D 分割精度。它在精度和效率之间提供了更好的权衡,这是车载 LiDAR 分割的两个最重要的因素。

6.5 Post-Processing Configuration

        正如正文中所述,我们提出了一种新颖的 RangePost 技术,以更好地处理范围视图光栅化中的“多对一”冲突。算法 3 显示了 RangeAug 操作的伪代码。具体来说,我们首先将整个 LiDAR 点云子采样为等间隔的“子云”,它们共享相似的语义。接下来,我们将点云的这些子集叠加并输入到 LiDAR 分割模型中进行推理。获得预测后,我们将它们缝合回原来的位置。正如我们在实验中的几种范围视图方法所验证的那样,RangePost可以更好地恢复正确的信息,因为相邻点之间的混叠已经得到了整体的减少。

7. Additional Quantitative Result

在本节中,我们提供了对三个测试的 LiDAR 分割数据集进行比较和消融研究的额外定量结果。

7.1. Comparative Study

        我们对三个流行的 LiDAR 分割基准进行了广泛的实验,即 SemanticKITTI [5]、nuScenes [21] 和 ScribbleKITTI [68]。表 7 显示了不同 LiDAR 语义分割方法在 SemanticKITTI [5] 测试集上的类 IoU 分数。在所有竞争对手中,我们观察到 RangeFormer 及其 STR 版本相对于原始点、鸟瞰图、范围视图和体素方法具有明显的优势。当仅使用范围视图表示时,我们还获得了比最近基于多视图融合的方法[77,31,79,40]更好的分数。表8显示了不同LiDAR语义分割方法在ScribbleKITTI [68]的val集上(与SemanticKITTI [5]的val集相同)的类别IoU分数。我们可以看到,在这个弱注释数据集上,RangeFormer 比 SoTA 体素和范围视图方法产生更高的 IoU 分数。对于汽车、自行车、摩托车和人等动态类别,这种优势尤其明显。还值得注意的是,我们的方法在仅使用 8.06% 语义标签的情况下比一些完全监督的方法取得了更好的分数(表 7)。标签。 9 和选项卡。图 10 分别显示了不同 LiDAR 语义分割方法在 nuScenes [21] 的验证集和测试集上的分类 IoU 分数。结果再次证明了 RangeFormer 和 STR 在 LiDAR 语义分割方面的优势。我们在涵盖各种情况的三个基准上取得了新的 SoTA 结果,即密集/稀疏 LiDAR 点云以及完整/弱监督信号。此外,选项卡。图 11 显示了 SemanticKITTI [5] 的 LiDAR 全景分割基准中 PQ、RQ、SQ 和 IoU 的类别分数。对于所有四个指标,我们观察到 Panoptic-RangeFormer 和 STR 与最近的 SoTA LiDAR 全景分割方法相比都有优势 [41]。

7.2. Ablation Study

表14 显示了 FIDNet [85]、CENet [13] 和 RangeFormer 在 STR 训练策略下的类 IoU 分数。我们可以看到,距离视图LiDAR分割方法能够在非常小的分辨率范围图像上进行训练,例如W = 192、W = 240和W = 320。在节省大量内存消耗的同时,分割性能相对较低。稳定的。例如,RangeFormer 在 W = 192 时可以达到 64.3% mIoU,这比之前的多种 LiDAR 分割方法都要好。水平分辨率越高,分割性能往往会得到改善。平衡准确性和效率的灵活性为从业者提供了更多的可能性和选择。

8. Additional Qualitative Result

在本节中,我们提供了我们方法的额外定性结果,以进一步证明我们的优势。

8.1. Visual Comparison

图 9 和图 10 包括 RangeFormer 和 SoTA 距离视图 LiDAR 分割方法的更多可视化结果 [85, 13]。与现有技术相比,我们可以看到RangeFormer产生了更好的LiDAR分割性能。它从整体上消除了围绕自我车辆的错误预测,特别是对于多个类别聚集在一起的复杂区域。

8.2. Failure Case

尽管RangeFormer大幅提升了LiDAR分割性能,但仍然容易出现一些失败案例。从图9和图10中的误差图可以看出,错误的预测很可能发生在物体和背景的边界处(图9中的第一个场景)。对于稀有类别(图 10 中的第二个场景)和长距离区域(图 10 中的第四个场景)也可能存在错误预测。考虑到此类情况的更复杂的设计可能会产生更好的激光雷达分割性能。

8.3. Video Demo

除了图片之外,我们还在补充材料中附上了四个视频演示,即 demo1.mp4、demo2.mp4、demo3.mp4 和 demo4.mp4。每个视频演示由数百个帧组成,可以对我们提出的方法进行更全面的评估。这些视频演示将在我们的网站上公开发布3。

自己总结(疑问):

1、整体很简洁,但是没开源,transfomer patch那里是怎么做的感觉没看太懂。

2、STR理解是拆分成小块,所以也算是一种数据增强? 384的宽度是怎么来的有点好奇,384*5=1920?但是原文消融实验最高的结果是480的时候得到的。在cenet str有增强,但是在作者提出的网络str没有增强。如果把一个图片分成N算,算完在拼接回去,时间为什么会更少呢?

3、Augmentation +10个点,传统的增强+作者自己的增强

4、RangePost +8个点,先把结果分成几份分别做推理,最后在推回去

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1098736.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux:mongodb数据库基础操作(3.4版本)

安装 3.*版本和4.*版本安装都是一样的 Linux:mongodb数据库源码包安装(4.4.25版本)_鲍海超-GNUBHCkalitarro的博客-CSDN博客https://blog.csdn.net/w14768855/article/details/133826626?spm1001.2014.3001.5501 mysql和mongodb对比 登录…

【SpringCloud-10】SCA-nacos

前言: 前面介绍的springcloud,可以看做第一代,称为:SCN(spring cloud Netflix); 接下来介绍的是第二代:SCA(spring cloud alibaba); SCA主要有以下组件&#…

【Java 进阶篇】创建 JavaScript 轮播图:让网页焕发生机

欢迎大家来到本篇博客,今天我们将一起探讨如何使用 JavaScript 创建一个精美的轮播图。轮播图是现代网站设计的关键元素之一,它能够使网页更加吸引人,提高用户体验。无需担心,本文将面向基础小白,从头开始解释每一步。…

“最强7B模型”论文发布,揭秘如何超越13B版Llama 2

来自“欧洲OpenAI”的“最强7B开源模型”Mistral最近可谓是圈粉无数。 它各方面的测试指标全面超越了13B的Llama2,甚至让一众网友觉得羊驼不香了。 最新消息是,Mistral AI团队已经发布了相关论文,透露背后的技术细节。 Mistral不仅全面战胜…

多个子div在父中垂直居中

在一个div下&#xff0c;有多个子div&#xff0c;且子div都是水平垂直居中 <template><div><div class"far"><!-- 注意需要多包裹一层 --><div><div class"son1">1</div><div class"son2">222…

30天工作量,推荐4个ai写作生成器工具,一键搞定!

全新升级&#xff01;畅销热门AI写作工具盘点40强&#xff0c;助你一键呈现顶尖文案&#xff01; AI写作工具&#xff0c;引领时代潮流&#xff0c;让办公生活更高效&#xff01;小编特意整理了市面上最好用的AI写作工具&#xff0c;共计40款&#xff01;你使用过哪些&#xff…

Centos中如何删除带有特殊符号的乱码文件_rz命令产生的乱码文件如何删除_使用文件号删除乱码文件---Linux运维工作笔记058

在使用rz命令进行文件上传的时候,偶尔会产生一堆的乱码文件,比如: 可以看到有一堆的乱码文件. 普通的乱码文件,直接rm -rf 文件名就可以删除了,但是有一些不行,包含特殊符号的,比如: 这个文件报错了,可以看到用rm -rf 根本删除不掉. 这个文件后面包含了一个.对吧 那该怎么解决…

C++前缀和算法应用:矩形区域不超过 K 的最大数值和

基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 题目 给你一个 m x n 的矩阵 matrix 和一个整数 k &#xff0c;找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。 题目数据保证总会存在一个数值和不超过 k 的矩形区域。 示例 1&#x…

消息队列(中间件)

通信协议&#xff1a; 为了实现客户端和服务器之间的通信来完成的逻辑&#xff0c;基于TCP实现的自定义应用层协议。通过这个协议,完成客户端–服务器远程方法调用。 序列化/反序列化&#xff1a; 通过网络传输对象把对象存储到硬盘上。 序列化&#xff1a;把对象转化为二进制的…

windwos文件句柄数限制

1、修改注册表&#xff0c;位置如下&#xff1a; HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Windows​ 2、设置 1、GDIProcessHandleQuota 此项设置GDI句柄数量&#xff0c;默认值为2710(16进制)/10000(10进制)&#xff0c;该值的允许范围为 256 ~ 16…

pip快速安装torch、opencv、scipy库

目录 一、pip安装torch 1.1 torch介绍 1.2 torch.nn相关库的导入 1.3win10上torch的安装命令 二、pip安装Opencv 三、pip安装scipy库 一、pip安装torch 1.1 torch介绍 torch的基本功能&#xff1a; ①torch&#xff1a;张量的相关运算&#xff0c;例如&#xff1a;创…

微信小程序------框架

目录 视图层 WXML 数据绑定 列表渲染 条件渲染 模板 wsx事件 逻辑层 生命周期 跳转 视图层 WXML WXML&#xff08;WeiXin Markup Language&#xff09;是框架设计的一套标签语言&#xff0c;结合基础组件、事件系统&#xff0c;可以构建出页面的结构。 先在我们的项目中…

GitLab(1)——GitLab安装

目录 一、使用设备 二、使用rpm包安装 Gitlab国内清华源下载地址&#xff1a; ①下载命令如下&#xff1a; ②安装命令如下&#xff1a; ③删除rpm包 ④配置 ⑤重载 ⑥重启 ⑦配置自启动 ⑧打开8989端口并重启防火墙 三、GitLab登录 ①访问GitLab的URL ②输入用户…

scratch身高统计 2023年9月中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析

目录 scratch身高统计 一、题目要求 1、准备工作 2、功能实现 二、案例分析

二维码智慧门牌管理系统:构建未来社区管理新典范

文章目录 前言一、系统概述二、系统优势三、多领域应用四、未来展望 前言 在科技的迅猛发展下&#xff0c;我们的生活正朝着智能化迈进。最近&#xff0c;备受瞩目的“二维码智慧门牌管理系统”为社区管理带来了一场革命&#xff0c;通过建立标准要素之间的关系&#xff0c;重…

关于python pytorch 与CUDA版本相关问题

首先在终端中输入python进入python交互式环境 import torch print(torch.__version__) #注意是双下划线官网&#xff1a;https://pytorch.org/get-started/previous-versions/ CUDA Toolkit版本及可用PyTorch对应关系总结&#xff08;参考官网&#xff09; cuda版本确定后&a…

UI自动化的适用场景,怎么做?

经常有人会问&#xff0c;什么样的项目才适合进行UI自动化测试呢&#xff1f;UI自动化测试相当于模拟手工测试&#xff0c;通过程序去操作页面上的控件。而在实际测试过程中&#xff0c;经常会遇到无法找到控件&#xff0c;或者因控件定义变更而带来的维护成本等问题。 哪些场…

iOS代码混淆-从入门到放弃

​ 目录 1. 什么是iOS代码混淆&#xff1f; 2. iOS自动代码混淆的方法是什么&#xff1f; 3. iOS代码混淆的作用是什么&#xff1f; 4. 怎么样才能做到更好的iOS代码混淆&#xff1f; 总结 参考资料 1. 什么是iOS代码混淆&#xff1f; 代码混淆是指将程序中的方法名、属…

Numpy 从零快速入门教程

NumPy 介绍 什么是 NumPy? NumPy是Python中科学计算的基础包。它是一个Python库&#xff0c;提供多维数组对象&#xff0c;各种派生对象&#xff08;如掩码数组和矩阵&#xff09;&#xff0c;以及用于数组快速操作的各种API&#xff0c;有包括数学、逻辑、形状操作、排序、…

leetcode-49.字母异位词分组

1. 题目 2. 解答 #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAX_STRLEN (10000 1) #define MAX_CHARLEN (100 1)char map[128] {0}; char map_start[128] {0};void solve(char input[MAX_STRLEN][MAX_CHARLEN], int num) {in…