BEVFormer v2论文阅读

摘要

本文工作

提出了一种具有透视监督(perspective supervision)的新型鸟瞰(BEV)检测器,该检测器收敛速度更快,更适合现代图像骨干。现有的最先进的BEV检测器通常与VovNet等特定深度预训练的主干相连,阻碍了蓬勃发展的图像主干和BEV检测器之间的协同作用。为了解决这一限制,我们优先考虑通过引入透视图监督(perspective view supervision)来简化BEV探测器的优化。为此,我们提出了一个两阶段的BEV检测器,其中来自透视头的proposals被输入入鸟瞰头进行最终预测。

实验效果

为了评估我们的模型的有效性,我们进行了广泛的消融研究,重点是监督的形式和所建议的探测器的类型。在大规模NUSCENES数据集上,对该方法进行了广泛的传统和现代图像主干的验证,取得了新的SOTA结果。

1. 介绍(Introduction)

鸟瞰识别模型吸引了人们对自动驾驶的兴趣,因为它们可以自然地将多个传感器的部分原始观测集成到一个统一的整体3D输出空间中。一个典型的BEV模型建立在一个图像骨干网络上,然后是一个视图转换模块,该模块将每个特定的图像特征提升为BEV特征,然后由BEV特征编码器和一些特定任务的头进行处理。
虽然在设计视图转换器上投入了很多心血,和不断增加的下游任务并入新的识别框架中,对BEV模型中的图像骨干网络的研究受到的关注要少得多。自动驾驶作为一个前沿、高要求的领域,将现代图像骨干网络引入到自动驾驶中是顺理成章的事情。令人惊讶的是,学术界为了大规模深度预训练,选择坚持Vovnet。在本工作中,我们致力于充分发挥现代图像特征提取器在BEV识别中的作用,为未来研究人员在该领域探索更好的图像骨干网络设计打开大门。

然而,简单地使用这些现代图像骨干网络而不进行适当的预训练是不能产生令人满意的结果的。 例如,ImageNet预先训练的ConvNext-XL主干的性能与DDAD-15M预先训练的用于3D目标检测的Vovnet-99不相上下。尽管后者有前者的3.5倍的参数。

我们需要努力适应现代图像骨干的以下问题:

  • 自然图像和自动驾驶场景之间的领域差距。在一般的二维识别任务中预先训练的骨干对三维场景的感知能力不足,尤其是对深度的估计。
  • 目前BEV探测器结构复杂。拿Bevformer作为一个例子。通过视图编码器和对象解码器将三维包围盒和对象类别标签的监督信号从图像主干中分离出来,每个视图编码器和对象解码器都由多层transformer组成。适用于自动驾驶任务的一般2D图像骨干的梯度流被堆叠的transformer 层扭曲。

为了克服上述困难,采用现代图像主干进行BEV识别,我们在Bevformer中引入透视监督,即从透视任务发出的监督信号,并直接应用于主干。它引导骨干学习二维识别任务中缺少的三维知识,克服了BEV检测器的复杂性,极大地方便了模型的优化。

具体来说,我们构建一个透视3D检测头在主干上,以图像特征为输入,直接预测目标对象的三维边界框和类标签 作为辅助检测损失,将该透视头的损失(perspective loss)添加到从BEV头导出的原始损失(BEV loss)中。用相应的损失项联合训练两个分解头。此外,我们发现可以很自然的将这两个探测头组合成一个两级BEV探测器,BEV-Former V2。由于透视头是完全成熟的,它可以在perspective视图中生成高质量的对象建议,我们将其用作第一阶段建议。我们将它们编码为对象查询,并将它们与原始Bevformer中的可学习查询集合在一起,形成混合对象查询,然后将混合对象查询送入第二级DetectionHead以生成最终预测。

我们进行了大量的实验来证实我们提出的透视超视觉的有效性和必要性。perspective loss 促进了图像骨干的自适应,从而提高了检测效率,加快了模型的收敛速度。如果没有这种监督,即使用更长的时间表训练,该模型也无法实现可比的再输出。因此,我们成功地将现代图像主干与BEV模型相适应,在NUSCENES上获得了63.4%的NDS2]测试集。
我们的贡献可概括如下:

  • 我们指出透视监督是使一般2D图像骨干网络适配到BEV模型的关键。我们通过透视图中的检测损失明确地添加了这种监督。
  • 我们提出了一种新型的两级BEV探测器,BEV-former V2。它由透视3D和BEV检测头组成,前者的建议与后者的对象查询相结合。
  • 我们通过将其与最新的图像骨干网络结合起来,并在Nuscenes数据集上实现了对以前最优结果的显著改进,从而显示了我们方法的有效性。

2. 相关工作(Related Works)

2.1. BEV三维物体探测器 (BEV 3D Object Detector)

因为在自动驾驶领域的巨大成功,BEV目标检测器获得了较多的关注。早期的工作主要是利用单目深度估计和逆透视变化生成伪点云。近期的一些工作倾向于把不同视角下的特征通过2D-3D转换得到3D特征。

2.2. 摄像机三维目标检测中的辅助损失 (Auxiliary Loss in Camera 3D Object Detection)

辅助损失在单目3D目标检测中是普遍存在的。但是它们的辅助损失很少在2D监督上有明确的意义。

2.3. 二阶段的三维物体探测器(Two-stage 3D Object Detector)

两阶段检测方法在激光雷达3D目标检测中较为常见,但图像3D目标检测中极为少见。

3. BEVFormer v2

采用现代2D图像骨干网络进行BEV识别,无需进行繁琐的深度预训练,可以提高BEV识别效率,为下游的自动驾驶任务提供了多种可能性。

在这项工作中,我们提出了Bevformer V2,一个两阶段的BEV检测器,它结合了BEV和透视监督,在BEV检测中避免了采用图像骨干的麻烦。

3.1 总体架构(Overall Architecture)

如图1所示 Bevformer V2主要由图像骨干网络、透视3D检测头、空间编码器、改进型时间编码器和BEV检测头五部分组成。与原始Bevformer相比,除了空间编码器以外的所有组件都进行了改造。具体地说,Bevformer V2中使用的所有图像骨干网络都不是用任何自动驾驶数据集或深度估计数据集预先训练的。引入透视3D检测头,以方便2D图像骨干的自适应,并为BEV检测头生成对象proposals。采用了一种新的时域BEV编码器,以更好地融合长期的瞬态信息。BEV检测头现在接受混合对象查询集作为输入。我们将第一阶段的建议和学习到的对象查询结合起来,形成新的混合对象查询,用于第二阶段。

图1: Bevformer V2的整体架构。图像骨干网各生成多视图图像的特征。透视3D头进行透视预测,然后将其编码为对象查询。BEV头为编码器-解码器结构。空间编码器通过聚合多视图图像特征生成BEV特征,其次是时间编码器收集历史BEV特征。译码器以混合对象查询为输入,根据BEV特征进行最终的BEV预测。整个模型用两个检测头的两个损失项L_{pers}L_{bev}训练。

3.2. 透视监督(Perspective Supervision)

我们首先分析了鸟瞰模型的问题,以解释为什么额外的监督是必要的。一个典型的BEV模型在BEV平面上有对应的网格状的特征,其中每个网格聚集来自多视图图像对应的2D像素处的特征的3D信息。它根据BEV特征预测目标对象的3D检测框,我们将这种强加在BEV特征上的监督命名为BEV监督。
以Bevformer作为一个例子,它使用编码器-解码器结构来生成和利用BEV特性。编码器为BEV平面上的每个网格单元分配一组3D参考点,并将它们作为2D参考点投影到多视图图像上。然后,对二维参考点周围的图像特征进行采样,并利用交叉注意力将其聚合为BEV特征。解码器是一个Deformable DETR头,它在BEV坐标中预测3D包围盒,并进行少量固定数量的对象查询。图 2 介绍了由3D到2D视图转换和DETR头引入的BEV监督的两个尚未解决的问题:

  • 对图像特征的监督是隐含的。这种损失直接作用于BEV特征,而经过3D到2D投影和注意力采样(attentive samplin)后,这种损失就间接作用于BEV特征。
  • 对图像特征的监督是稀疏的。只有少量用于目标查询的BEV网格才能导致损失。 因此,只有那些网格的2d参考点周围的稀疏像素获得监督信号。

因此,在训练过程中,BEV检测头依赖于包含在图像特征中的三维信息,但对骨干如何编码这些信息提供了不足的指导。

以前的BEV方法并没有严重地受到这种不一致性的困扰,它们甚至可能没有意识到这个问题。这是因为它们的主干网络要么有相对较小的尺度,要么已经用单目检测头预先训练过3D检测任务。与BEV头相比,透视3D头对图像特征进行每像素预测,为适应2D图像骨干提供更丰富的监督信号。我们将这种强加在图像特征上的监督定义为透视监督。如图2所示,与BEV监督不同的是,透视检测损失直接密集地应用于图像特征。我们假设透视监督显式地引导主干网络感知三维场景并提取有用的信息,如目标的深度和方位。克服了BEV监督的缺点,因此,在训练BEV模型时使用现代图像的主干网路是非常必要的。


透视监督和BEV监督的对比:透视探测器的监督信号密集且直接指向图像特征,而BEV探测器的监督信号稀疏且间接。

下图是BEVformer中采用的是BEV监督:

3.3. 透视损失(Perspective Loss)

正如前一节所分析的,透视监督是优化BEV模型的关键。在Bevformer V2中,我们通过一个辅助透视损失引入透视监督。具体地说,在主干上构建透视3D检测头,以检测透视图中的目标对象。我们采用FCOS3D类似的检测头,它预测3D包围盒的中心位置、大小、方向和投影中心度。该检测头的检测损失被记为透视损失L_{pers}​, 它作为BEV损失L_{bev}的一个组成,用来促进骨干网络的优化。整个模型是以一个总的目标来训练的

3.4. 改进时间编码器(Ravamped Temporal Encoder)

Bevformer使用循环时间自注意力机制来融合历史的BEV特征。但是时间编码器不能充分利用长期的时间信息,简单地将循环步长从4步增加到16步并不能获得额外的性能提高。
我们采用简单的扭曲和联结策略重新设计了Bevformer V2的时间编码器。给定在不同帧k处的BEV特征B_k,我们首先通过第t帧和第k帧之间的转换矩阵T_k^t=[\mathbf{R} \mid \mathbf{t}] \in \mathrm{SE}B_k 双线性变换成B_k^t
然后沿通道方向将先前的BEV特征与当前的BEV特征串联起来,并利用残差块进行维数约简。为了保持与原始设计相似的计算复杂度,我们使用了相同数量的历史BEV特征,但增加了采样间隔。除了从长期时间信息中获益之外,新的时间编码器还打开了在离线三维检测设置中利用未来BEV特征的可能性。

3.5. 两阶段的BEV检测器(Two-stage BEV Detector)

虽然联合训练两个检测头进行训练提供了足够的监督,但我们从不同的角度分别得到了两组检测结果。我们设计了一种新的结构,将两个头集成为两级预测流水线,即两级BEV检测器(two-stage detector),而不是采用BEV头的预测而抛弃透视头的预测或者通过NMS启发式地将两组预测组合。BEV头中的对象解码器,一个detr[3]解码器,使用一组学习到的embeddings作为对象查询,它通过训练来学习目标对象的位置。然而,随机初始化的embeddings需要很长时间来学习合适的位置。此外,学习对象查询对于所有的图像都是固定的,由于对象的分布可能不同,因此可能不够准确。为了解决这些问题,对透视头的预测进行后处理过滤,然后融合到解码器的对象查询中,形成一个两阶段的过程。这些混合对象查询提供了高得分(概率)的候选位置,使BEV头在第二阶段更容易捕获目标对象。
混合对象查询的详细信息将在后面描述。应该注意的是,第一阶段的建议不一定是来自一个透视检测器,例如来自另一个BEV检测器,但实验表明,只有从透视图的预测才对第二级BEV头有帮助。

3.6. 混合对象查询的解码器(Decoder with Hybrid Object Queries)

为了将第一阶段的建议融合到第二阶段的对象查询中,基于在BEVFormer 中使用的Deformable DETR编码器,对BEVFormer v2中使用的BEV 检测头的编码器进行修改。
解码器由层叠交替的自注意层和交叉注意层组成。交叉注意力层是一种deformable的注意力模式,它以以下三个元素作为输入。(1)内容查询(content queries):产生抽样偏移量和关注权重的查询特征。(2)参考点(Reference points):作为每个查询的采样参考,在值特征上的2D点。(3)值特征(Value features):即要注意的BEV特征。在原来的Bevformer中,内容查询是一组学习的嵌入,参考点是从一组学习的位置嵌入中用线性层预测的。在Bevformer V2中,我们从每个特定的头部获得建议,并通过后处理选择其中的一部分。如图3所示,将所选提议的BEV平面上的投影框中心作为每幅图像的参考点,并与位置嵌入生成的每数据集参考点相结合。每幅图像的参考点直接指示出目标物体在BEV平面上的可能位置,使解码器更容易地检测到目标物体。 然而,一小部分物体可能由于遮挡而无法被透视头检测到或出现在两个相邻视图的边界处。为了避免丢失这些对象,我们还保留了原始的每个数据集的参考点,以便通过学习空间先验来捕获它们。

图三:BEVformer v2中的BEV头的解码器。第一阶段的提议(perspective proposals)的投影中心(Projected Centers)被用作每个图像的参考点(Reference Points),它们与每个数据集学习的内容查询(Content Queries)和位置嵌入(Positional Embeddings)结合作为混合对象查询。

4. 实验结果

4.1. nuScenes 3D物体检测benchmark

表1:nuScenes test set的3D物体检测结果

BEVFormer v2在自动驾驶权威数据集nuScenes的3D物体检测任务上超越了已有SOTA方法,NDS为63.4,mAP为55.6,比之前最好的方法分别提升了 2.4和3.1。此外,使用InternImage-B作为backbone的模型也超过了之前的方法,InternImage-B和V2-99参数量相近但没有使用3D预训练,这证明了3D预训练不是必须的。

4.2. 不同视角监督信号的比较

表2:不同视角监督信号的组合的对比

• Perspective Only:只使用perspective head

• BEV Only:只使用BEV head

• Perspective & BEV(BEVFormer v2):使用perspective head和BEV head组成二阶段检测器

• BEV & BEV:使用两个BEV head组成二阶段检测器

Perspective Only和BEV Only对比: BEV head使用多个相机视角的信息确定物体位置,因此具有更高的mAP。但是perspective head有更低的mATE和mAOE,表明它对深度和方向这些3D属性的预测更为准确。

BEV Only和Perspective & BEV对比: BEVFormer v2引入perspective supervision取得了NDS 2.5,mAP 1.9的较大提升,且mATE,mAOE和mAVE显著降低,模型能更好地感知3D场景,获取深度、方向和速度这些属性。

BEV & BEV和Perspective & BEV对比: 对two-stage pipeline进行消融实验,表明two-stage本身并不能提升性能,性能提升完全来自于perspective supervision的引入。

4.3. Perspective Supervision的泛化性

表3:使用不同图像backbone对perspective supervision进行消融实验

Perspective supervision可以泛化到多种不同结构和尺寸的2D图像backbone,均能带来NDS约3.0,mAP约2.5的显著提升。

4.4. 其他实验表现

表4:不同训练时长的对比。Perspective supervision能促进模型的优化,加速收敛
表5:Perspective head和BEV head的不同选择对比。在perspective head的选择中,相比DETR3D head的稀疏预测,DD3D head的密集预测能提供更丰富的监督信号,因此效果更好
表6:BEVFormer v2使用的其他技巧的消融实验,包括图像级别的数据增强、输入序列的时间间隔增加、以及使用双向的时序信息。

5. 结论

现有的工作在设计和改进鸟瞰(BEV)识别模型的检测器方面付出了很大的努力,但它们通常停留在特定的预先训练的主干网络上,而没有进一步探索。在本文中,我们的目标是在 BEV 模型上释放现代图像骨干的全部力量。我们将通用 2D 图像主干网适应 BEV 检测器的优化问题。为了解决这个问题,我们通过添加来自额外视角 3D 检测头的辅助损失,将视角监督引入到 BEV 模型中。此外,我们将两个检测头集成到一个两级检测器中,即BEVFormer v2。成熟的透视头提供第一阶段的对象建议,这些建议被编码到 BEV 头的对象查询中以进行第二阶段的预测。大量的实验验证了我们提出的方法的有效性和通用性。透视监督引导2D图像主干感知自动驾驶的3D场景,帮助BEV模型实现更快的收敛和更好的性能,并且适用于广泛的主干。此外,我们成功地将大规模骨干网适应了 BEV-Former v2,在 nuScenes 数据集上取得了新的 SoTA 结果。我们认为我们的工作为未来的研究人员探索更好的 BEV 模型图像主干设计铺平了道路。

参考文献

BEVFormer v2: Adapting Modern Image Backbones to Bird’s-Eye-View Recognition via Perspective Supervision

论文精读:《BEVFormer v2: Adapting Modern Image Backbones to Bird’s-Eye-View Recognition via Perspective 》-CSDN博客

BEVFormer v2:让新型图像主干网络在BEV感知中发挥强大能力|论文解读 - 脉脉 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解React的setState机制

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

C语言牛客网BC-36 温度转换

题目如下 代码实现 #include<stdio.h> int main() {float a 0;scanf("%f",&a);float c 5.0/9*(a-32);printf("%.3f",c);return 0; } 创作不易&#xff0c;点点关注&#xff0c;感谢支持&#xff01;&#xff01;&#xff01;

HWOD:对n个字符串按照字典序排序

一、知识点 1、pow函数 引用头文件math.h 求x的y次方 2、链接数学库 math.h头文件对应的库名称是libm sudo find / -name libm.so -print ls /usr/lib/x86_64-linux-gnu/ 链接命令&#xff1a;gcc xxx.c -L. -lm 3、52进制 A的ASCII码是65&#xff0c;Z的ASCII…

ROS 2边学边练(2)-- 咱也玩玩Turtlesim

同ROS 1一样&#xff0c;Turtlesim(小海龟)例程往往是大家首次熟悉ROS世界的唯一不二之选&#xff08;如同刚接触编程的同学&#xff0c;老师会让大家打出“Hello World”的道理一样&#xff09;&#xff0c;很多教学视频及书籍也同样如此&#xff0c;为何&#xff1f;麻雀虽小…

java项目:基于JavaWeb实现企业员工工资管理系统(技术栈:javaweb+jsp+mysql 源码+数据库)

一、项目简介 本项目是一套基于ServletJsp实现的学生成绩管理系统&#xff0c;主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目可以直接作为bishe使用。 项目都经过严格调试&#xff0…

基于java+springboot+vue实现的校园二手交易系统(文末源码+Lw+ppt)23-336

摘 要 自从新冠疫情爆发以来&#xff0c;各个线下实体越来越难做&#xff0c;线下购物的人也越来越少&#xff0c;随之带来的是一些不必要的浪费&#xff0c;尤其是即将毕业的大学生&#xff0c;各种用品不方便携带走导致被遗弃&#xff0c;造成大量的浪费。本系统目的就是让…

docker关闭全部运行容器命令是什么?

环境&#xff1a; docker v22.1 问题描述&#xff1a; docker关闭全部运行容器命令是什么&#xff1f; 解决方案&#xff1a; 要关闭所有正在运行的Docker容器&#xff0c;可以使用如下命令&#xff1a; docker stop $(docker ps -a -q)这条命令首先执行 docker ps -a -q…

主流公链 - Solana

探索Solana区块链&#xff1a;下一代高性能区块链平台 1. Solana简介 Solana是一个高性能的区块链平台&#xff08;TPS能达到10W级别&#xff09;&#xff0c;旨在实现高吞吐量和低延迟的区块链交易处理。它采用了一系列创新技术&#xff0c;其中包括Proof of History (PoH)&a…

OD C卷 - 分披萨

分披萨 有大小不同的奇数块披萨&#xff1b;从A开始轮流取披萨&#xff0c;第一块可以任意选取&#xff0c;其他都必须从缺口开始选&#xff1b;B每次都选最大块的&#xff0c; A知道B的想法&#xff1b;求A能获得的披萨块总和的最大值&#xff1b; 输入描述&#xff1a; 第一…

RSTP、MSTP、VRRP

RSTP协议原理与配置 问题一、STP的收敛延时&#xff08;30秒&#xff08;有BP端口情况下RP端口down&#xff09;或者50秒&#xff08;没有BP端口情况下RP端口down&#xff09;&#xff09; RSTP&#xff1a;Rapid Spanning Tree Protocol RSTP和STP从原理流程上一样&#xf…

Springboot整合Redis报错:Unable to connection Redis

今天在做Springboot整合Redis中碰到下列错误&#xff1a; 基于以上的错误首先在Xshell或者其他远程操控虚拟机的软件上看能不能连接到Redis: [zzllocalhost ~]$ redis-cli -h 192.168.136.132 -p 6379 -a ****** Warning: Using a password with -a or -u option on the comma…

修复ubuntu引导

一、制作ubuntu启动U盘 进入启动盘后&#xff0c;点击Try ubuntu&#xff0c;进入U盘的ubuntu系统。 二、配置和添加源 sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update三、运行 Boot Repair重新制作引导 sudo boot-repair注意&#x…