[BEV系列]BEVFormer: Learning Bird’s-Eye-ViewRepresentation from Multi-Camera Images viaSpatiotemporal

news/2024/3/3 22:01:12

论文链接:https://arxiv.org/pdf/2203.17270v1.pdf
代码链接:https://github.com/zhiqi-li/BEVFormer

1. 摘要(Abstract)

    3D视觉感知任务,包括基于多摄像头图像的3D检测和地图分割,对于自动驾驶系统至关重要。在这项工作中,我们提出了一个名为BEVFormer的新框架,该框架通过时空变换学习统一的Bev特征表达,以支持多个自主驾驶感知任务。简而言之,BEVFormer通过预定义的网格状BEV查询,将时间和空间进行交互,从而挖掘空间和时间信息。为了聚合空间信息,我们设计了一个空间交叉注意( spatial cross-attention),每个BEV查询都从摄像机视图的感兴趣区域提取空间特征。对于时间信息,我们提出了一种时间自我注意( temporal self-attentio),以反复融合历史BEV信息。我们的方法在nuScenes test set数据集上,NDS评估值指标达到了SOTA : 56.9%,比之前基于激光雷达的SOTA方法性能高9个点。我们进一步表明,BEVFormer显著提高了低能见度条件下目标速度估计和调用的精度。
在这里插入图片描述

图1

2. 引言(Introduction)

2.1. 之前的方法

    在自动驾驶中,对周围场景的视觉感知预计将根据多个摄像头提供的2D线索预测3D Bounding boxes或语义图。最直接的解决方案是基于单目框架和跨摄像头后处理。该框架的缺点是,它单独处理不同的视图,无法跨摄像头捕获信息,导致性能和效率低下。

    作为单目框架的替代方案,更统一的框架是从多摄像机图像中提取整体表示。鸟瞰视图(BEV)是一种常用的周围场景表示,因为它清楚地显示了物体的位置和规模,并且适合于各种自主驾驶任务,如感知和规划。尽管之前的地图分割方法(《Fiery: Future instance prediction in bird’s-eye view from surround monocular cameras》、《 Encoding images from arbitrary camera rigs byimplicitly unprojecting to 3d》)证明了BEV的有效性[32,18,29],但基于BEV的方法在3D对象检测方面没有显示出比其他范式显著的优势。其根本原因是,3D目标检测任务需要强大的BEV特征来支持准确的3D边界框预测,但从2D平面生成BEV是不适定的。生成BEV特征的流行BEV框架基于深度信息《Categorical depth distribution networkfor monocular 3d object detection》),但该范例对深度值或深度分布的准确性敏感。因此,基于BEV的方法的检测性能会受到复合误差的影响(《Detr3d: 3d objectdetection from multi-view images via 3d-to-2d queries》),不准确的BEV特征会严重影响最终性能。因此,我们设计了一种不依赖深度信息的BEV生成方法,可以自适应地学习BEV特征,而不是严格依赖3D先验知识。Transformer使用注意力机制动态聚合有价值的功能,在概念上满足了我们的需求。

    使用BEV功能执行感知任务的另一个动机是,BEV是连接时间和空间空间的理想桥梁。对于人类视觉感知系统来说,时间信息在推断物体的运动状态和识别遮挡物体方面起着至关重要的作用,许多视觉领域(《3d object detection from images for autonomousdriving: A survey》)的工作已经证明了使用视频数据的有效性。然而,现有的最先进的多摄像机3D检测方法很少挖掘时间信息。重要的挑战是,自动驾驶对时间至关重要,场景中的物体变化迅速,因此简单地叠加交叉时间间隔的BEV特征会带来额外的计算成本和干扰信息,这可能并不理想。受递归神经网络(RNN)的启发,我们利用BEV特征反复地从过去到现在传递时间信息,这与RNN模型的隐藏状态具有相同的思想。

2.2. 我们的方法

我们的BEVFormer包含三个关键设计:

  • 1.网格形状的BEV查询(grid-shaped BEV queries),通过注意机制灵活地融合空间和时间特征
  • 2.空间交叉注意模块(patial cross-attention module ),从多摄像头图像中聚合空间特征
  • 3.时间自注意模块(temporal self-attention modul),从历史BEV特征中提取时间信息,这有利于运动对象的速度估计和严重遮挡对象的检测,同时带来的计算开销可以忽略不计

3. 相关工作(Related Work)

3.1. 基于 Transformer的2D目标检测

    DETR使用一组对象查询直接通过交叉关注解码器生成检测结果。然而,DETR的主要缺点是训练时间长。Deformabl通过提出变形注意力来解决这个问题。与普通的全局注意索引不同,变形注意与局部感兴趣区域相互作用,只对每个参考点附近的点进行采样并计算注意结果,从而提高了效率,显著缩短了训练时间。可变形注意机制的计算方法如下:
在这里插入图片描述

  • 其中 q q q p p p x x x:分别表示query、参考点和输入特征,
  • i i i:attention head编号, N h e a d N_{head} Nhead代表全部attention head的数量
  • j j j:sampled key编号
  • N k e y N_{key} Nkey:每个head的整个sampled key
  • W i 、 W i ‘ W_i、W^`_i WiWi:可学习的权重
  • C C C:特征维度
  • A i j A_{ij} Aij:[0,1],被 ∑ j = 1 N k e y A i j = 1 \displaystyle\sum_{j=1}^{N_{key}}A_{ij}=1 j=1NkeyAij=1标准化后的预测特征权重
  • Δ p i j \varDelta p_{ij} Δpij:参考点p的预测偏置offset
  • x ( p + Δ p i j ) x(p+\varDelta p_{ij}) x(p+Δpij):经过双线性插值的点 p + Δ p i j p+\varDelta p_{ij} p+Δpij处的特征
  • 在这项工作中,我们将可变形注意力(deformable attention)扩展到3D感知任务中,以有效地聚合空间和时间信息

3.2. 基于相机的3D感知

  • 对于3D目标检测任务,早期的方法类似于2D检测方法,通常基于2D边界框预测3D边界框。FCOS3d(《Fcos3d: Fully convolutional one-stage monocular 3d objectdetection》)采用先进的2D探测器FCOS,直接预测每个对象的3D边界框。DETR3D在2D图像中投影可学习的3D查询,然后采样相应的特征,进行端到端3D边界框预测,无需NMS后处理。

  • 另一个解决方案是将图像特征转换为BEV特征,并从自顶向下的视图预测3D边界框。方法利用深度估计(《Pseudo-lidarfrom visual depth estimation: Bridging the gap in 3d object detection for autonomous driving》)或分类深度分布(《 Categorical depth distribution networkfor monocular 3d object detection》)中的深度信息将图像特征转换为BEV特征。OFT(《Orthographic feature transform for monocular 3d objectdetection》)和ImVoxelNet(《Imvoxelnet: Image to voxels projectionfor monocular and multi-view general-purpose 3d object detection》)将预定义的体素投影到图像特征上,以生成场景的体素表示

  • 实际上,从多摄像机特征生成BEV特征在地图分割任务中得到了更广泛的研究。一种简单的方法是通过逆透视映射(IPM)将透视图转换为BEVTH(《Structured bird’s-eye-view traffic sceneunderstanding from onboard images》)。此外,Lift Splat(《 Encoding images from arbitrary camera rigs byimplicitly unprojecting to 3d》)根据深度分布生成BEVfeatures。方法(《Cross-view semantic segmentation forsensing surroundings》等)利用多层感知器学习从透视图到BEV的翻译。PYVA(《Projecting your view attentively:Monocular road scene layout estimation via cross-view transformation》)提出了一种将前视图单目图像转换为BEV的交叉视图变换器,但由于全局注意机制的计算成本,这种模式不适合融合多摄像头功能

  • 除了空间信息,以前的文章也考虑了时间信息,叠加BEV特性限制了固定时间内可用的时间信息,并带来额外的计算成本。在这项工作中,提出的时空变换器通过同时考虑空间和时间线索来生成当前时间的BEV特征,并且通过RNN方式从之前的BEV特征中获取时间信息,这只带来很少的计算成本。
    在这里插入图片描述

图2

    (a) BEVFormer的编码层包含网格状的BEV查询、时间自我注意和空间交叉注意。(b) 在空间交叉注意中,每个BEV查询只与感兴趣区域的图像特征交互。(c) 在时间自注意力中,每个BEV查询都与两个功能交互:当前时间戳的BEV查询和前一个时间戳的BEV功能

  • 在推理阶段,在时间戳t,把多摄像头图像喂给backbone网络(ResNet-101),获得不同摄像头视野的特征 F t = [ F t i ] i = 1 N v i e w F_t = [F^i_t]^{N_{view}}_{i=1} Ft=[Fti]i=1Nview F t i F^i_t Fti是第i个视野的特征, N v i e w N_{view} Nview是所有视野的数量

  • 与此同时,提取前一个时间戳t-1的BEV特征 B t − 1 B_{t-1} Bt1

  • 在每一个encoder层,首先时间自注意模块(temporal self-attention modul)通过BEV queries Q去查询前一个时间戳t-1的BEV特征 B t − 1 B_{t-1} Bt1时间信息。然后,BEV queries Q通过空间交叉注意模块(patial cross-attention module 从多摄像头特征 F t F_t Ft中查询空间特征。

  • 经过前馈网络 (Attention is all you need),encoder层输出细化的BEV特征,作为下一个encoder层的输入,经过6个叠加的encoder层后得到统一的BEV特征

  • 之后接3D bounding box和语义图预测头

3.3. Spatial Cross-Attention

    由于多摄像头3D感知的输入规模很大,普通多摄像头注意力的计算成本非常高。因此,我们开发了基于 deformable attention(《Deformable detr: Deformable transformers forend-to-end object detection》)的空间交叉注意模块,这是一种资源高效的注意层,其中每个BEV查询仅与摄像机视图中的感兴趣区域交互。然而,可变形注意力最初是为2D感知设计的,所以3D场景需要进行一些调整
    如图2(b)所示,我们首先将BEV平面上的每个query提升到柱状查询(《Pointpillars: Fast encoders forobject detection from point clouds》),从柱状查询中提取Sample N r e f N_{ref} Nref 3D参考点,然后将这些点投影到2D视图。对于一个BEV query,投影的2D点只能落在某些视图上。在这里,我们把可以把落点视图看做 V h i t V_{hit} Vhit。然后,我们将这些2D点视为Query Q p Q_p Qp的参考点,并在这些参考点周围的落点视图 V h i t V_{hit} Vhit中采样特征。最后,我们将采样特征的加权和作为空间交叉注意的输出。空间交叉注意(SCA)的过程可以表述为:
在这里插入图片描述

  • i i i:第 i i i个摄像机视图
  • j j j:第 j j j个参考点
  • N r e f N_{ref} Nref:每个BEV query的参考点总数
  • F t i F^i_t Fti:第 i i i个相机视图,
  • 对于每个BEV query Q p Q_p Qp,我们都用一个poject 函数 P ( p , i , r ) P(p,i,r) Pp,i,r去的得到 第 i i i个视图的第 j j j个参考点

然后,我们考虑怎么从投影函数P中获取视图图像上的参考点。首先计算对应query Q p Q_p Qp(在Q上的 p = ( x , y ) p=(x,y) p=(x,y))的真实世界坐标 ( x ‘ , y ‘ ) (x^`,y^`) (x,y)
在这里插入图片描述

  • H、W:BEV query的空间形状
  • s:BEV的网格分辨率尺度
  • ( x ‘ , y ‘ ) (x^`,y^`) (x,y):是以无人车为原点的坐标

    在3D空间中,位于 ( x ‘ , y ‘ ) (x^`,y^`) (x,y)的目标在z轴上的高度为z′的。所以我们预先定义了一组anchor高度 [ F j ‘ ] j = 1 N r e f [F^`_j]^{N_{ref}}_{j=1} [Fj]j=1Nref,以确保我们能够捕捉到出现在不同高度的线索。
通过这种方式,对于每个查询 Q p Q_p Qp,我们获得一个三维参考点 ( x ′ , y ′ , z ′ j ) j = 1 N r e f (x′,y′,z′_j) ^{N_{ref}}_{j=1} xyzjj=1Nref。最后,我们通过摄像机的投影矩阵将3D参考点投影到不同的图像视图中,该矩阵可以写成
在这里插入图片描述

  • P ( p , i , j ) P(p,i,j) P(p,i,j):是从第 j j j个3D点 ( x ′ , y ′ , z ′ j ) (x′,y′,z′_j) xyzj映射到第 i i i个视图的2D点
  • T i T_i Ti:是第 i i i台摄像机的已知投影矩阵

3.4. Temporal Self-Attention

    假设当前时间戳t的BEV queries Q和保留在时间戳t-1的BEV特征 B t − 1 B_{t-1} Bt1,首先通过自我运动(ego-motion)将 B t − 1 B_{t-1} Bt1对齐到Q,使同一个网格上的特征对应于同一个真实世界位置。
将对其的BEV特征 B t − 1 B_{t-1} Bt1视为 B ‘ t B`_t Bt。然而,从时间t-1到t,移动的目标在现实世界中以各种偏移量移动,在不同时间BEV特征之间构建相同目标的敬请关联很有挑战性。因此,我们通过时间自我注意(TSA)层对特征之间的时间连接进行建模,该层可以写为
在这里插入图片描述

  • Q p Q_p Qp:在店p=(x,y)的BEV query
  • Δ p \varDelta p Δp:不同于deformable attention,在时间自注意模块的偏执 Δ p \varDelta p Δp是Q和 B ‘ t B`_t Bt的concat后的预测结果

    对于每个序列的每个样本,时间自注意将退化为没有时间信息的自注意时,会用{ Q , Q Q,Q Q,Q}替换{ Q , B ‘ t Q,B`_t Q,Bt}
    与简单叠加BEV相比,我们的时间自我注意可以更有效地模拟长时间依赖。BEVFormer从以前的BEV特征中提取时间信息,而不是从多个叠加的BEV特征中提取时间信息,因此所需的计算成本和受干扰的信息更少

4. 实验

在这里插入图片描述

图3.在nuScenes test数据集上的3D目标检测结果

在这里插入图片描述

图4.在Watmo val数据集上的3D目标检测结果

在这里插入图片描述

图5.在地图分割和3D目标检测任务的结果

在这里插入图片描述

图6.可视化结果

http://www.ppmy.cn/news/620927.html

相关文章

git clone 代码遇到的问题

一、git clone 代码遇到的问题 1、第一次报错: fatal: unable to access ‘https://github.com/zhiqi/coin_of_reward.git/’: Could not resolve host: github.com 分别输入如下指令: git config --global --unset http.proxy git config --global -…

【论文阅读】BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal

论文题目:BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers 参考与前言 arXiv 地址: BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotempor…

cucumber+springboot UI自动化测试框架搭建

cucumberfeaturespringBoot实现UI自动化测试 整合目标1.前提要求2.cucumber和springBoot整合目录3. idea安装cucumber插件4.pom.xml导入Cucumber相关jar包5.新建cucumber工作目录6.在resources->features下新建2个feature用例文件7.新建cucumber运行入口文件8.运行后即可将用…

论文精读——《BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotempor》

BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers 文章目录 BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers论文精读摘要(Abstra…

阿里云 aliyun 人脸识别(1:N) java spring 小程序 小程序上传多图 阿里云oss

前段时间开发一个小程序需要使用到阿里云(1:N)人脸识别的服务,查询资料发现网上并没有详细的教程,而官方的api文档也写得很简略,于是就有了如下教程,希望能帮助到大家。 目录 服务开通 人脸识…

git 提交(push的时候,没有任何提示,但是没有成功)

1:第一种情况: git上当前分支已经 提交了合并请求到 其他分支,但是还没有合并, 本次提交时在上次基础之上改的, 解决:1撤销合并请求后再提交,2先合并上次的请求,再进行提交 2&…

BEVSegFormer---BEV的语义分割

0. 简介 在阅读了近些年的前视的工作后,发现现在以特斯拉为首的BEV纯视觉语义分割方法目前也越来收到关注,并吸引了大量的研究工作,但是灵活的,不依赖内外参的任意位置安装单个或多个摄像头仍然是一个挑战,而Nullmax就…

CVPR2023-三维空间体素占用预测挑战赛-尝试(1)

CVPR2023-三维空间体素占用预测挑战赛-尝试(1) 1. 三维体素占用预测挑战赛(3D Occupancy Prediction)1.1 挑战赛简介1.2 数据说明 2. 测试2.1 注册与数据集下载2.2 基于BEVFormer的基线模型测试2.3 模型识别结果可视化 参考资料 前…

Python 发送带附件的邮件 发出去的附件格式就成bin

导语:学习到使用Python发送带附件的邮件,但收件人收到的附件格式是bin,附件名称也不是filename写的名称。 1、效果如下: 2、解决办法: 将 att1[Content-Disposition] attachment;filename "星测试附件.txt"替换成 at…

代季峰对话张祥雨 | 自动驾驶感知新时代!新一代环视感知算法BEVFormer有哪些优势...

导读:Elon Musk说过,“人类不是超人,也不是蝙蝠侠,不能够眼放激光,也不装有雷达,但是通过眼睛捕捉到的图像,人类依旧可以构建出对周围世界的3D空间理解能力,从而很好地掌握驾驶这项能…

物联网嵌入式 校园噪声监测系统 ESP8266 STM32 LM386声音传感器 NETTY自定义协议

目录 一、想法及需求 1.1最初设想 1.2需求分析 1.3方案设计 二、硬件 2.1器材选型 2.2原理图解释 2.3PCB绘制 2.4焊接及成品 三、软件 3.1NETTY自定义协议的TCP服务器 3.1.1使用原因 3.1.2制定协议 3.1.3编写解码器 3.1.4编写服务器 3.1.5部署服务器&#xff08…

人工智能 | ShowMeAI资讯日报 #2022.06.10

ShowMeAI日报系列全新升级!覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表,在公众号内订阅话题 #ShowMeAI资讯日报,可接收每日最新推送。点击 专题合辑&…

smtplib.SMTPServerDisconnected: Connection unexpectedly closed解决方法

导语:在学习Python发送邮件时,配置腾讯企业邮箱发送总是smtplib.SMTPServerDisconnected: Connection unexpectedly closed报错,查询网上方法后总结出来以下解决方法。 1、报错示例: 2、解决方法: smtplib.SMTP() 改…

BEVFormer治好了我的精神内耗

BEVFormer治好了我的精神内耗 来源:https://zhuanlan.zhihu.com/p/564295059 文章链接:BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers 代码:https://github.com/zhiqi-…

HTML5之内嵌框架

内嵌框架是用于在网页中嵌入一个网页并让它在网页中显示 添加内嵌框架的语法: <iframe src" URL "></iframe> URL 指定独立网页的路径. 案例1 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>书籍…

宵夜杂谈:BEVFormer治好了我的精神内耗!

作者 | 战斗系牧师 编辑 | 汽车人 原文链接&#xff1a;https://zhuanlan.zhihu.com/p/539925138 点击下方卡片&#xff0c;关注“自动驾驶之心”公众号 ADAS巨卷干货&#xff0c;即可获取 论文&#xff1a;https://arxiv.org/abs/2203.17270 代码&#xff1a;https://github.…

每日学术速递2.11

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.IR、cs.MM 1.A Comprehensive Survey on Multimodal Recommender Systems: Taxonomy, Evaluation, and Future Directions 标题&#xff1a;关于多模态推荐系统的综合调查&#xff1a;分…

3D视觉感知新SOTA BEVFormer复现nuscenes数据集测试demo

0 写在前面 分享最近在BEV感知方面的工作&#xff0c;欢迎自动驾驶同行交流学习&#xff0c;助力自动驾驶早日落地。 1.概述 对于自动驾驶而言&#xff0c;BEV&#xff08;鸟瞰图&#xff09;下的目标检测是一项十分重要的任务。尽管这项任务已经吸引了大量的研究投入&#…

使用VSCode开发Unity中排除(隐藏)一些文件

使用VSCode开发Unity中排除&#xff08;隐藏&#xff09;一些文件 再使用VDCode开发的时候会将项目中的全部文件都显示出来&#xff0c;不像VS一样只显示一些可能用的到的文件。再VSCode中需要设置一些文件的过滤来只显示想要显示的文件。 打开VScode&#xff0c;打开设置搜索…

SpringBoot 插件化开发详细总结

目录 一、前言 1.1 使用插件的好处 1.1.1 模块解耦 1.1.2 提升扩展性和开放性
最新文章