题目:BEVSegFormer: Bird’s Eye View Semantic Segmentation FromArbitrary Camera Rigs
中文:BEVSegFormer基于任意相机的鸟瞰图语义分割
原文:https://arxiv.org/abs/2203.04050v1
来源:创业公司Nullmax 2022.3
关键点是:BEV鸟瞰+语义分割+transformer(需要提前有一点了解)
个人觉得有用的和自己理解加粗和()内表示,尽量翻译的比较全,有一些官方话就没有翻译了,一些疑惑的地方欢迎大家探讨。
如果对整个领域比较了解 建议只用看一下 引言最后一段 + 第三章网络结构即可。可以打开右侧目录进行跳转~
~~~~~~~正文开始~~~~~~~~~
鸟瞰图 (BEV) 中的语义分割是自动驾驶的重要任务。尽管这项任务吸引了大量的研究工作,但灵活应对自动驾驶汽车上配备的任意 (单个或多个) 摄像头传感器仍然具有挑战性。在本文中,我们提出了BEVSegFormer,这是一种有效的基于transformer的方法,用于从任意摄像机设备中进行BEV语义分割。具体来说,我们的方法首先通过一个共享主干网络对任意相机的图像特征进行编码。然后通过基于可变形的transformer编码器增强这些图像功能。此外,我们引入了BEV transformer 解码器模块来解析BEV语义分割结果。设计了一种高效的多摄像机可变的注意力单元,以执行BEV到图像的视图转换。最后,根据BEV中网格的布局对query进行重塑,并对其进行上采样,以监督的方式产生语义分割结果。我们在公共nuScenes数据集和自收集数据集上评估了所提出的算法。实验结果表明,我们的方法在任意摄像机设备的BEV语义分割上取得了可靠的性能。我们还通过消融研究证明了每个组件的有效性。
感知信息的鸟瞰图 (BEV) 表示在自动驾驶或机器人导航系统中至关重要,因为它便于计划和控制任务。例如,在无地图导航解决方案中,构建本地BEV地图提供了高清地图 (HD地图) 的替代方案,并且对于感知系统的下游任务 (包括代理的行为预测和运动计划) 很重要。摄像机的BEV语义分割通常被视为构建本地BEV地图的第一步。
为了从相机获得BEV语义分割,传统方法通常在图像空间生成分割结果,然后通过逆透视映射(IPM)函数将其转换到BEV空间。尽管 IPM 是连接图像空间和 BEV 空间的直接且简单的方法,但它需要相机的准确内在和外在参数或实时相机位姿估计。因此,很可能会输出劣等的视图变换。以车道分割为例,如图 1 所示,使用 IPM 的传统方法在存在遮挡或远处区域的具有挑战性的场景中提供不准确的结果。(2D检测完后通过内参矩阵、外参矩阵逆投影到3D空间,图1由于视觉消失点很远,因此逆投影回去就会稀疏,而且距离越远越不准)
最近,已经研究了BEV语义分割的深度学习方法 [1]-[7]。Lift-Splat-Shoot [2] 以像素级深度估计结果完成了从图像视图到BEV的视图转换。使用深度估计会增加视图转换过程的复杂性。有些方法应用MLP [3] (多层感知机)或FC [4] (全卷积)运算符来执行视图转换。这些固定视图变换方法学习图像空间和BEV空间之间的固定映射,因此不依赖于输入数据。(像素级的估计深度,相当于给每个像素点补充一个维度,因此计算量很大。多层感知或者FC可以理解为拟合内参外参矩阵进行固定映射)
基于 Transformer 的方法是 BEV 空间中感知的另一条研究路线。在目标检测任务中,DETR3D [8] 引入了一种 3D 边界框检测方法,该方法直接根据多个摄像机图像的 2D 特征在 3D 空间中生成预测。 3D 空间和 2D 图像空间之间的视图转换是通过交叉注意模块的 3D 到 2D 查询实现的。受 DETR3D [8] 的启发,我们提出了一种使用 Transformer 中的交叉注意力机制通过 BEV 到图像查询计算视图变换的方法。通过新颖的视图转换方法,我们构建了一种 BEV 语义分割方法 BEVSegFormer,以从任意相机配置执行 BEV 语义分割。
我们的 BEVSegFormer 由三个主要部分组成:(1) 用于提取任意相机特征图的共享主干; (2) transformer 编码器,通过自注意力模块嵌入特征图; (3) BEV transformer解码器,通过交叉注意机制处理 BEV 查询并输出最终的 BEV 语义分割结果。在 BEV transformer 解码器中,我们引入了一个多摄像头可变形交叉注意模块,将来自多个摄像头的特征映射链接到 BEV 查询,而不需要摄像头内部和外部参数。具体来说,BEV 查询更关注多相机特征中学习到的参考点和相应的采样点。这样,多相机可变形交叉注意模块提供了一种有效的方法来完成 BEV 到图像的视图转换。
(这里最大的不同就是其他方法需要相机的外参,比如roadmap这些,但是BEVSegFormer通过训练即可完成映射,另外融合了多个摄像头数据,可以看成一个数据融合的方法?)
我们在公共nuScenes数据集和自收集的数据集上评估了我们的BEVSegFormer。我们提出的BEVSegFormer在nuScenes验证集上取得了最好的成绩。还验证了每个建议组件的有效性。
语义分割。语义分割在高级场景理解中起着至关重要的作用,并且是计算机视觉中的基本问题。随着CNNs的快速发展,FCN [9] 和U-Net [10] 等最新方法应用编码器-解码器体系结构来学习具有特征提取主干的密集预测 (例如VGGNet [11] 和ResNet [12])。现有方法还利用策略来进一步提高细分性能,包括atrous卷积 [13],金字塔池模块 [14],链式残差池机制 [15] 等。在本文中,我们将ResNet作为编码器的一部分来提取语义特征。
BEV语义分割。在自动驾驶和机器人导航中,BEV语义分割是下游功能 (例如行为预测和计划) 的重要感知任务。Cam2BEV [1] 执行一个空间transformer模块,通过IPM将透视特征从周围的输入转换为BEV空间,这是在平坦的地面假设下将图像空间链接到BEV的一种直接方法。[2],[5]-[7] 中的方法利用深度信息来执行视图转换。例如,Lift-SplatShoot [2] 首先估计隐式像素方向的深度信息,然后使用相机几何形状来建立BEV分割和特征图之间的连接。FIERY [5] 对基于视频的输入采取了类似的方法。BEV-Seg [6] 使用额外的解析网络来按深度结果优化投影和不完整的BEV分割。VPN [3] 使用MLP从crossview图像中直接生成BEV分割。FishingNet [16] 将其扩展为支持多个传感器。PyrOccNet [4] 应用FC运算符在不同的距离范围内完成转换。同样,HDMapNet [17] 也应用FC运算符从多个摄像机构建本地BEV地图。与以前的工作不同,Monolayout [18] 通过标准的编码器-解码器结构执行视图转换。
基于Transformer语义分割。Transformer首先应用于自然语言处理领域,已广泛应用于许多其他计算机视觉任务中。例如,ViT [19] 为图像分类任务引入了transformer编码器。提出了DETR [20] 及其变体 [21],用于通过Transformer 编码器-解码器体系结构进行对象检测。SETR [22] 是第一个扩展transformer编码器用于分割任务的。SegFormer [23] 提出了一种高效的语义分割框架,该框架将分层transformer编码器与轻量级MLP解码器相结合。FTN [24] 介绍了用于图像分割的全transformer编码器和解码器网络。从DETR [20] 改编,MaskFormer [25] 使用Transformer 解码器来计算一组对,每个对由类预测和掩码嵌入向量组成,然后将其与FCN的像素嵌入相结合。它以统一的方式提供语义和实例分割。(这一部分当作留坑 后期会看一看)
最近使用了transformer来进行视图变换。例如,NEAT [26] 使用 Transformer 编码器,通过遍历 BEV 空间中的所有网格,将图像特征转换为具有基于 MLP 注意力的 BEV 空间。 PYVA [27] 通过 MLP 从 CNN 编码器-解码器结构生成 BEV 特征。然后通过Transformer 交叉注意模块增强该功能。 [28] 中的方法引入了一个编码器-解码器转换器块,以按列将空间特征从图像转换为 BEV。与这些作品不同,我们引入了一个 BEV 转换器解码器模块来从图像特征中解析 BEV 语义分割。设计了一种高效的多相机可变形注意单元来执行 BEV 到图像的视图转换。根据 BEV 中的网格布局对查询进行重塑,并以监督方式进行上采样以产生语义分割结果。此外,我们的方法支持任意相机设置。
图 2 显示了我们的 BEVSegFormer 方法的概览。它由三部分组成:
(1)一个Shared Backbone,用于处理任意相机并输出特征图;
(2) Transformer Encoder 增强特征表示
(3) BEV Transformer Decoder 通过交叉注意机制处理 BEV 查询,然后将输出查询解析为 BEV 语义分割。
对于单个输入图像,主干接收输入并输出多尺度特征图。对于多个摄像机配置,这些多个图像共享相同的主干并输出相应的特征图。我们在实验中以ResNet为骨干。
(这一部分比较简单,和通常做法一样,都是卷积ResNet提特征)
在transformer编码器中,我们首先从共享主干在c3,c4,c5级特征上应用1 × 1 conv算子,以获得多尺度特征,。与 [21] 类似,我们在每个相机生成的特征图上分别应用多尺度可变形注意模块。它不需要计算密集的注意力图,只关注参考点附近的一组采样点。transformer编码器为每个相机输出增强的多尺度特征。
(只选用resnet三层c3\c4\c5,计算六个相机(根据图二假设为六个相机)的多尺度特征特征。通过multi-scale deformable attention module机制在每个相机自己的特征图上生成加强多尺度特征,也就是图二红色线。可以简单理解为,这一部分不同相机之间没有联系,只是每个相机内部自己和自己玩,让最后一层1/32包含信息更多,因为后边的 BEV Transformer,只用到了这一层)
我们的 BEV Transformer 解码器包括(1)一个Transformer 解码器,用于计算 BEV queries和多相机特征图之间的交叉注意力;(2)以及一个语义解码器,用于将queries解析为 BEV 分割结果。
在Transformer 解码器中,我们在2D BEV空间上构造查询,然后将这些BEV查询视为交叉注意模块中的常规查询。密集的BEV查询嵌入表示为。我们仅使用多尺度特征图的最小分辨率 (原始输入分辨率的1/32) 作为变压器解码器的输入。
我们将可变形 DETR [21] 中的可变形注意模块调整为多摄像机可变形交叉注意模块,该模块能够将特征图从多个摄像机转换为 BEV 查询,而无需摄像机内部和外部参数。在数学上,令 q 为 中的查询元素,他的参考点是,多相机变形注意模块写为:
其中(m,c,k)分别表示注意力头、相机和采样点个数。 和分别是第c个摄像头和第m个注意力头中第k个采样点的采样偏移量和注意力权重。标量注意力权重归一化为 1。 将归一化坐标重新缩放到输入特征图。
图3示出了多摄像机可变形注意的总体结构。对于每个BEV查询q,我们在其位置嵌入上应用一个可学习的线性投影层来获得参考点的二维坐标,然后使用sigmoid函数来归一化这些坐标。使用两个可学习的线性投影层来预测样本点相对于参考点的偏移量以及这些样本点的注意力权重。最后,通过关注度权重对采样位置的摄像机特征进行聚合,生成新的查询。与Deformable DETR [21]中多尺度特征的共享参考点不同,我们学习多相机特征地图上的独立参考点,以便网络能够自动选择多相机特征上的不同位置的参考点。
(这部分比较绕,尽自己能力解释一下,有错误欢迎讨论。整体上来看输入有两个,BEV查询和多相机特征图 x也就是图三右上角C1~C6。BEV查询大小是是查询的分辨率。而针对每一个查询分两部分,一部分是query 另外一部分是是query pos 。
先来看简单的一部分因为它是位置编码,经过可学习线性投影层得到 reference points
,这个M是多头的个数,c就是相机的个数,2应该就是代表在相机图片上的位置。可以把这理解成地面到相机特征的映射,但是有多头机制(简单理解多头是transformer的并行机制)和多个相机,因此需要最终映射个点。
有两条路,q的第一条路是sampling offsets ,图上来看是4,也就是说针对每一个q,都会有sample points个,结果为。
q的第二条路是的attention weight,这里其实就是加权了,刚才结果每个q对应4个点的结果,不能直接用而是要通过进行加权。加权之后不同的头之间也要求和最后针对每一个查询获得一个结果)
在语义解码器中,将BEV查询特征从Transformer 解码器中转换为二维空间特征。BEV Upsample模块是一个标准的语义上采样模块,用于处理2D空间特征,以计算语义分割结果。BEV上采样模块的每一级均由3×3卷积、1×1卷积和2×双线性插值运算组成。
nuScenes数据集。nuScenes [29]数据集是一个大型自动驾驶数据集,由来自6个周围摄像头(左前、前、右前、左后、后、右后)的1,000个序列组成。它总共有一个包含28,130张图像的训练集和一个包含6,019张图像的验证集。三个类别,车道分隔线,车道边界和行人交叉口可用于评估纯电动汽车分割。我们在实验中使用了所有的周围摄像机和前置摄像机。
Nullmax前置摄像头数据集。我们在上海高速公路上采集了一个装有前置摄像机的数据集。该数据集包括各种场景,如拥挤交通、上下匝道、阴影、变道和超车。数据集分为3,905张用于训练的图像和976张用于验证的图像。对交通车道进行注释以进行评价。
我们使用HDMapNet [17]的相同设置在nuScenes数据集上进行了实验。在HD-map上进行自车定位,确定纯电动汽车的行驶区域。通过使用周围摄像机,BEV被设置为围绕本车[-30m,30m] × [15 m,15 m]。仅当启用前置摄像头时,BEV区域设置为[0 m,60 m] × [-15m,15 m]。道路结构表示为5像素宽的线段。地面实况遮罩设置为400×200。根据STSU [30],我们使用448×800的图像作为网络的输入。同样,Nullmax前置摄像机数据集中的BEV区域设置为[0 m,80 m] × [-10m,10 m]。地面实况掩模的尺寸为512×128。在地面实况掩膜中,车道宽度为3个像素。Nullmax数据集上的输入图像大小为384 x640。
对于网络设计,我们遵循可变形DETR [21]。在实验中使用加权交叉熵损失[1,15,15,15]。对于BEV变压器解码器的多摄像机变形注意,设置M = 8和K = 16。所有变压器模块中的嵌入维数设置为256,FFN模块的特征维数设置为512。我们应用数据增强,包括随机水平翻转、随机亮度、随机对比度、随机色调和随机交换通道。网络由AdamW [31]优化器优化,权重衰减为10−4。骨干和变压器的初始学习速率分别设置为10−5和10−4,在第100个历元时分别降低到10−6和10−5。我们在4个RTX 3090 GPU上训练模型,每个GPU的批处理大小为1。所有模型都是从零开始训练的,有120个历元。
对于定量评估,我们测量分割结果与背景信息之间的交集与并集(IoU)。
在nuScenes数据集上,将该方法与现有的方法进行了比较.结果总结在表一、实验结果表明,该方法在nuScenes瓦尔集上的性能优于现有方法.它超过HDMapNet(surr)[17]的幅度很大,分别为+10.48除法器IoU、+13.89 Ped交叉IoU、+10.47边界IoU和+11.65所有类IoU。分割示例如图4所示。
研究该方法是否具有处理任意摄像机的能力。我们在表2中报告了nuScenes数据集上仅使用前置摄像头的结果。图5显示了一些分割结果。仅使用前置摄像头,我们的方法也获得了有竞争力的结果。表3中列出了Nullmax前置摄像机数据集上BEV分割的类似观察结果。图6提供了具有挑战性的驾驶场景示例(弯道、急弯、坡道和阴影)。我们还探讨了BEV空间中查询数量的影响。与具有1,250个查询的模型相比,具有5,000个BEV查询(1/4地面实况掩码)的模型实现了更好的结果。在整个实验中,查询数被设置为5,000。
在本节中,我们通过消融研究分析了申报组件的影响。研究了标准的多头部注意模型、多尺度变形注意模型、多摄像头变形注意模型以及编码器和解码器的层数。还研究了各种骨架的结果。此外,还给出了摄像机嵌入在多摄像机关注中的作用。表4中给出了实验设置和结果,具有不同协议的方法被表示为M1至M6。
可学习摄像机位置嵌入。我们发现可学习的摄像机位置嵌入对于多摄像机解码器是重要的。将可学习的摄像机位置与标准位置嵌入沿着添加到注意模块的键中。由于具有摄像机位置嵌入,方法M2改进了M1的分割结果。摄像机的空间信息是语义分割任务的关键。图7中的结果表明,结合摄像机位置嵌入的方法在本车在交叉口转弯的情况下获得了上级的结果。
多摄像头Transformer解码器。表4中的实验表明,与使用标准多摄像机解码器的方法M1和M2相比,使用多摄像机可变形解码器的方法M3获得显著的性能增益。多摄像机可变形解码器不需要计算来自所有摄像机的特征图的密集关注度。这样,学习的解码器注意力与BEV分割结果具有很强的相关性,这也加速了训练收敛。图8显示了BEVSegFormer(M3)和BEVSegFormer(M2)模型在nuScenes瓦尔集上的收敛曲线。前者仅需要一半的训练时期(时期= 60)来获得比后者(时期= 120)更高的所有类的IoU。
为了研究多摄像机可变形交叉注意,我们分析了图9中的注意图。具体地说,给定BEV空间上的道路结构查询,我们在多摄像机可变形交叉注意的最后一层中可视化对应的样本点和注意权值。结果表明,权值较大的采样点聚集在最相关摄像机的特征图附近。例如,在图9的左上方,BEV空间上的查询(黑点)在前置摄像头中观察到,其交叉注意力权重较大的样本点出现在前置摄像头的特征图中。即使在某些情况下,样本点与期望查询没有精确链接,来自相关相机的图像特征也具有足够的感受域来覆盖BEV空间上的输入查询。
多尺度Transformer编码器。在表4中我们还比较了使用标准变换编码器(M3)和使用多尺度图像的可变形编码器(M4)的分割结果。与可变形DETR [21]类似,可变形编码器模块不仅加速模型收敛,而且提供了多层次图像特征,这反过来提高了BEV分割结果。
编码器模块和解码器模块的数量。表4示出了使用不同数目的编码器层和解码器层的分割结果。与方法M4相比,具有更多编码器和解码器层的方法M5的分割结果被进一步提升。
共享主干。最后,研究了骨架的作用。使用ResNet-101的方法结果略微改善了使用ResNet-34作为骨架的方法结果。
本文提出了一种基于可变型transformer的BEV语义分割方法。我们的方法将最近的检测方法,可变形的DETR,它处理单个图像到BEV语义分割的单个或多个图像。我们证明了我们的基于transformer的方法优于先前报道的最先进的方法。通过使用可变形BEV解码器,一种新颖的组件来从编码图像特征解析BEV语义结果,我们的方法实现了额外的性能提升。在未来的工作中,我们希望探索存储器高效和更可解释的基于transformer的自动驾驶中BEV语义分割方法。
整理不易,求点赞!