首页 > 其他分享 >BEV专栏(二)从BEVFormer看BEV流程(下篇)

BEV专栏(二)从BEVFormer看BEV流程(下篇)

时间:2023-05-09 13:56:22浏览次数:52  
标签:下篇 特征 摄像机 BEVFormer BEV CV 3D

前言 书接上回,在上一篇文章中,我们介绍了BEVFormer这一先进的BEV算法。在本篇文章中,我们将深入探讨BEVFormer的实现细节,旨在帮助读者更深入地理解BEVFormer的工作原理和性能表现。

本教程禁止转载。同时,本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

CV各大方向专栏与各个部署框架最全教程整理

【CV技术指南】CV全栈指导班、基础入门班、论文指导班 全面上线!!

算法细节

BEVFormer的输入

BEVFormer的输入是多视角摄像机和历史BEV特征。具体而言,BEVFormer使用多个摄像机捕获3D场景,并将这些摄像机视图转换为Bird's-Eye-View(BEV)图像。

此外,BEVFormer还使用历史BEV特征来捕获3D场景中物体之间的关系。

BEVFormer的编码器

BEVFormer使用一种基于Transformer和时间结构的编码器来聚合来自多视角摄像机和历史BEV特征的时空信息。

该编码器由两个部分组成:一个是用于处理多视角摄像机输入的“Multi-View Encoder”,另一个是用于处理历史BEV特征输入的“Temporal Encoder”。

Multi-View Encoder:Multi-View Encoder使用Transformer和空间注意力机制来聚合来自多视角摄像机的时空信息。

Multi-View Encoder首先将每个摄像机视图转换为Bird's-Eye-View(BEV)图像,并将这些图像作为输入。

然后,Multi-View Encoder使用Transformer和空间注意力机制来融合这些图像,并生成一个包含所有摄像机视图信息的表示。

Temporal Encoder:Temporal Encoder使用Transformer和时间注意力机制来聚合历史BEV特征。

Temporal Encoder首先将历史BEV特征作为输入,并使用Transformer和时间注意力机制来结合这些信息,并生成一个包含所有历史信息的表示。

BEVFormer的查询

从编码器中生成表示后,BEVFormer使用查询来查找空间/时间空间并相应地融合时空信息。

这种方法使用预定义的网格状BEV查询与空间/时间的特征信息来进行交互,以查找并融合时空信息,也可以帮助BEVFormer有效地捕获3D场景中物体之间的关系,来达到更优秀的表达。

BEVFormer的注意力机制

除了使用Transformer和时间结构来聚合时空信息外,BEVFormer还使用注意力机制来进一步提高系统整体的性能。

这两种注意力机制,一种是用于跨摄像机视图之间的注意力机制,叫做Spatial Cross-Attention,另一种是用于历史BEV特征之间的注意力机制,叫做Temporal Self-Attention。

Spatial Cross-Attention用于跨摄像机视图之间的注意力机制。使用这种方法来查询,并相应地聚合时空信息。然后,该方法使用空间交叉注意力机制来计算每个摄像机视图与其他摄像机视图之间的关系,并生成一个包含所有摄像机视图信息的表示。

Temporal Self-Attention用于历史BEV特征之间的注意力机制,同样是结合对应的时空信息。然后,这个方法使用时间自我注意力机制来计算历史BEV特征之间的关系,并生成一个包含所有历史信息的表示。

BEVFormer的输出

从编码器和查询中生成表示后,BEVFormer将这些表示输入到输出层中进行处理。具体而言,输出层可以根据不同任务进行定制化设计。

例如,在3D物体检测任务中,输出层可以将表示转换为3D边界框和类别概率分布;在地图分割任务中,输出层可以将表示转换为地图分割结果。

可以看出,BEVFormer是一种基于Transformer和时间结构的Bird's-Eye-View(BEV)编码器,可以有效地聚合来自多视角摄像机和历史BEV特征的时空特征,并生成更强大的表示。

从 BEVFormer 生成的 BEV 特征可以同时用于多个 3D 感知任务,比如 3D 物体检测和地图分割。

在上篇的实验结果表明,在KITTI数据集上进行评估时,与其他现有方法相比,BEVFormer在3D物体检测和地图分割方面具有更好的性能。

实验效果

BEVFormer模型在nuScenes数据集上的实验结果表明其有效性。当其他条件相同的情况下,使用时序特征的BEVFormer比不使用时序特征的BEVFormer-S在NDS指标上提高了7个以上的点数。

特别是当引入时序信息后,基于纯视觉的模型能够真正地预测物体的移动速度,这对于自动驾驶任务具有重大意义。

我们还证明了模型同时做检测和分割任务能够提升在 3D 检测任务上的性能,基于同一个 BEV 特征进行多任务学习,意义不仅仅在于提升训练和推理是的效率,更在于基于同一个 BEV 特征,多种任务的感知结果一致性更强,不易出现分歧。

下面再来回顾一下BEVFormer的效果:

文末

总而言之,该篇论文提出了一个采用纯视觉做感知任务的算法模型 BEVFormer。BEVFormer 通过提取环视相机采集到的图像特征,并将提取的环视特征通过模型学习的方式转换到 BEV 空间,模型去学习如何将特征从 图像坐标系转换到 BEV 坐标系,从而实现 3D 目标检测和地图分割任务,并取得了 SOTA 的效果。

 

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

计算机视觉入门1v3辅导班

【技术文档】《从零搭建pytorch模型教程》122页PDF下载

QQ交流群:470899183。群内有大佬负责解答大家的日常学习、科研、代码问题。

其它文章

穿越时空的智慧:经得起时间考验的深度学习理念

一次性分割一切,比SAM更强,华人团队的通用分割模型SEEM来了

目标检测中的框位置优化总结

CVPR'23|向CLIP学习预训练跨模态!简单高效的零样本参考图像分割方法

大模型微调项目 / 数据集调研汇总

CVPR23 Highlight|拥有top-down attention能力的vision transformer

视觉定位领域专栏(三)算法评估方法总结

视觉定位领域专栏(二)常用数据集介绍

视觉定位领域专栏(一)领域介绍、应用场景和研究难点

语义分割专栏(二)复习FCN的编解码结构

语义分割专栏(一)解读FCN

CUDA 教程(三)CUDA C 编程简介

目标跟踪(二)单、多目标跟踪的基本概念与常用数据集

【CV技术指南】咱们自己的CV全栈指导班、基础入门班、论文指导班 全面上线!!

即插即用模块 | RFAConv助力YOLOv8再涨2个点

CVPR 2023|21 篇数据集工作汇总(附打包下载链接)

CVPR 2023|两行代码高效缓解视觉Transformer过拟合,美图&国科大联合提出正则化方法DropKey

LargeKernel3D:在3D稀疏CNN中使用大卷积核

ViT-Adapter:用于密集预测任务的视觉 Transformer Adapter

CodeGeeX 130亿参数大模型的调优笔记:比FasterTransformer更快的解决方案

分割一切还不够,还要检测一切、生成一切,SAM二创开始了

CVPR 2023 深挖无标签数据价值!SOLIDER:用于以人为中心的视觉

SegGPT:在上下文中分割一切

上线一天,4k star | Facebook:Segment Anything

AI最全资料汇总 | 基础入门、技术前沿、工业应用、部署框架、实战教程学习

计算机视觉入门1v3辅导班

计算机视觉交流群

聊聊计算机视觉入门

标签:下篇,特征,摄像机,BEVFormer,BEV,CV,3D
From: https://www.cnblogs.com/wxkang/p/17384637.html

相关文章

  • Uncaught TypeError: f.__fbeventsModules[a] is not a function at f.__fbeventsM
    UncaughtTypeError:f.__fbeventsModules[a]isnotafunctionatf.__fbeventsModules.f.getFbeventsModules怎么了这个错误通常是因为代码中使用了Facebook的跟踪代码,但是在加载该代码之前,代码中尝试访问跟踪模块。这个错误有几种可能的原因:Facebook跟踪代码没有正......
  • DTCloud结合amis编辑器下篇~外联版
    项目目录最终需要展示的amis编辑器的html文件参考编辑器源码链接<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="format-det......
  • KubeVela 稳定性及可扩展性评估
    作者:殷达背景随着v1.8的发布,基于OAM的应用程序交付项目KubeVela已经持续发展了3年多。目前已被各种组织采用并部署在生产环境中。无论是与托管定义一起使用还是在多个集群上进行管理,在单个KubeVela控制平面上运行数千个应用程序的情况并不少见。用户经常问的一个关键......
  • kubevirt实验部署:k8s1.23.17+kube-ovn+nfs+kubevirt+ceph 集成使用
    标签(空格分隔):kubernetes系列一:kubevirt的简介KubeVirt是一个Kubernetes插件,它为Kubernetes提供了在与容器相同的基础结构上提供、管理和控制虚拟机的能力。KubeVirt是由云原生计算基金会(CNCF)赞助的开源项目,目前正处于孵化阶段。KubeVirt使Kubernetes能够使用与容器化工作负......
  • 面向车载通信的TSN网络原型下篇:效果验证
    前言  在上一篇文章中,我们概述性地介绍了北汇信息的面向车载通信的TSN网络原型上篇:原型概述。本篇文章将基于该原型,通过在多个场景中验证TSN协议的效果,向读者展示TSN在车载网络中的价值。通过实验验证,我们将深入了解TSN技术在车载网络中的实际应用和性能表现,为读者提供更为深......
  • dbever破解码
    aYhAFjjtp3uQZmeLzF3S4H6eTbOgmru0jxYErPCvgmkhkn0D8N2yY6ULK8oT3fnpoEu7GPny7csNsXL1g+D+8xR++/L8ePsVLUj4du5AMZORr2xGaGKG2rXa3NEoIiEAHSp4a6cQgMMbIspeOy7dYWX699Fhtpnu1YBoTmoJPaHBuwHDiOQQk5nXCPflrhA7lldA8TZ3dSUsj4Sr8CqBQeS+2E32xwSniymK7fKcVX75qnuxhn7vUY7YL2UY......
  • 一个简单的 rust 项目 使用 bevy 引擎 复刻 Flappy Bird 小游戏
    Rust+Bevy实现的FlappyBird游戏简介一个使用bevy引擎复刻的FlappyBird经典小游戏。通过该项目我们可以学到:bevy的自定义组件,自定义插件,自定义资源,sprite的旋转,sprite的移动,spritesheet动画的定义使用,状态管理,等内容…简单介绍一下包含的内容:游戏状态管理Me......
  • 下篇(开始写代码):运维开发人员不得不看的K8S API实战
    支持的客户端库可参考:https://kubernetes.io/zh-cn/docs/reference/using-api/client-libraries/身份验证插件在K8SAPI客户端库golangclient-go中,Authplugins(身份验证插件)是用于处理Kubernetes集群中用户身份验证的组件。一般来说,客户端的配置信息通常从kubeconfig文......
  • 全栈声明式可观测:KubeVela 的云原生应用洞察体系
    随着云原生技术的日趋成熟,越来越多的工作负载都迁移到Kubernetes之上,包括各类无状态微服务和复杂的有状态应用。为了支撑这些应用所需的各项基础设施,开发者不得不面对大量的底层API。这就形成了两个挑战,一方面是难以标准化,各种工作负载自身都会形成自己的运维管理平台,带来了企......
  • Vue的学习笔记(下篇)
    一、什么是Vue.js?Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页......