PETRv2: A Unified Framework for 3D Perception from Multi-Camera Images

PETRv2: A Unified Framework for 3D Perception from Multi-Camera Images

作者单位

旷视

目的

本文的目标是 通过扩展 PETR,使其有时序建模和多任务学习的能力 以此建立一个 强有力且统一的框架。

本文主要贡献:

  1. 将 位置 embedding 转换到 时序表示学习,时序的对齐 是在 3D PE 上做 姿态变换实现的。提出了 feature-guided 位置编码,可以通过 2D 图像特征 reweigth 3D PE
  2. 提出了一个简单但有效的方法(引入了基于特定任务的 queries),让 PETR 支持 多任务学习,包括 BEV 分割 和 3D lane 检测
  3. 本文提出的框架想,在 3D 目标检测,BEV 分割 和 3D lane 检测 上达到了 sota 的性能。

方法

网络结构

![[attachments/Pasted image 20230715171751.png]]

时序建模

时序建模:
3D 坐标对齐:
目的是将 t-1 帧的 3D 坐标 变换到 t 帧的 3D 坐标系统。
为了清楚的描述,这里定义一些符号:

  • c(t): 相机坐标
  • l(t) : lidar 坐标
  • e(t) : 自车坐标
  • g: 全局坐标
  • T_dst^src : 原坐标系 到 目标坐标系的 变换矩阵

首先将 t-1 帧 和 t 帧 的 相机坐标系下的3D点集 投影到 雷达坐标系,然后 使用全局坐标系 作为桥梁 ,将 t-1帧雷达坐标系下的 3D点集 投影到 t 帧的 雷达坐标系下
对其之后的 t 帧 和 t-1帧的 点集 会被用于 生成 3D PE

Multi-task Learning

为了让 PETR 支持多任务学习,设计了不同的 queries,包括 BEV segmentation 和 3D lane detection

  • BEV segmentation

刚开始在 BEV空间中 初始化一些 anchor points, 然后将这些 points 送入两层的 MLP 生成 seg queries
使用 CVT 中相同的 head 生成最后预测的分割结果

  • 3D Lane Detection

3D anchor lanes 作为 query
每一个 lane 都是由 一个有序的 3d 坐标点集(n 个)组成的。这些点集都是沿着 Y轴 均匀采样的,这些 anchor 是与 Y轴 平行的。
3D 的 Lane head 会预测 lane 的 类别 以及 相对于 x 轴 和 Z 轴的偏移量。 同时由于每个车道线的长度是不固定的,所以也会预测 一个可见 向量 T (sizn n),用于控制 lane 的起始点

Feature-guided Position Encoder

PETR 中的 3D 坐标 到 3D 位置编码的 过程是 数据无关的。本文认为 3D PE 应该由 2D features 驱动,因为 图像特征 可以提供 一些信息的指导,比如深度信息。
因此在 PETRv2 中 将 2D features 经过两层 1x1 的卷积,然后最后经过一层 sigmoid 获得 attention weights,
3D 坐标 通过另一个 mlp 并与 attention weight 相乘生成 3D PE。3D PE 毁于 2D features 相加,作为 key 输入到 transformer decoder 中。

鲁棒性分析

虽然有很多关于自动驾驶系统的工作,但是只有极少数的工作 探究了 自动驾驶方法的 鲁棒性。本文针对几种 传感器的误差 对 算法的影响 进行了 探究。

  • 外参噪声
    外参噪声是很常见的,比如相机抖动 导致 外参的不准。
  • 相机丢失
  • 相机时延
    相机曝光的时间过长(比如在晚上),输入系统的图像可能是之前的图像,会对输出造成影响

鲁棒性分析结果

  1. 外参噪声
    噪声越大,性能下降越多,FPE 可以提升 对 外参噪声的鲁棒性
  2. 相机丢失:front (5.05% mAP 下降) 和 back(13.19% mAP下降) 相机丢失带来的影响最大,其它的相机丢失噪声的性能下降要小一些。back的视角大一些 (120°),所以影响最大。(在 nuScenes 上的实验)
  3. 使用一些未标注的 frame 来代替 关键帧,来模拟时延,下降了 3.19% mAP 和 8.4% NDS(delay 0.083s),26.08 mAP 和 36.54% NDS (delay 0.3s)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Batch之读数据—读XML文件(三十二)

一、XML格式文件解析 XML是一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性,给数据集成与交换带来了极大的方便。XML在Java领域的解析方式有两种,一种叫SAX,另一种叫DOM。SAX是基于事件流的解析,DOM是…

基于STM32单片机的智能家居烟雾温度火灾防盗报警的设计与实现

功能介绍 以STM32单片机作为主控系统;LCD1602液晶显示屏来显示显示测得的值;SR501人体红外感应是否有人进行防盗;通过烟雾传感器MQ-2获取前的烟雾值;通过DHT11温湿度传感器来获取当前的温湿度;所有的信息通过通过esp82…

如何用DeepDiff测接口数据源变更?

开发同学最近变更了部分业务查询接口底层的数据源,希望测试同学能够针对这些接口进行一些回归验证,校验底层数据源更新前后业务查询接口返回的一致性,保证更新后对正常业务没有影响。 这个回归测试和一般接口测试有所区别,不仅仅…

金融中的数学:概率分布(下)

上篇博客介绍了离散型概率分布,本篇博客介绍连续型概率分布。 1.连续型概率分布 连续型均匀分布(Continuous Uniform distribution)是一种描述在特定区间内取值均匀分布的概率分布。在该分布中,随机变量在给定区间内的取值概率密…

Vue实现阻止浏览器记住密码功能的三种方法

通常浏览器会主动识别密码表单,在你登录成功之后提示保存密码 , 密码保存到浏览器的 密码管理器中 ( 如下是谷歌浏览器 ) 这种行为是浏览器的行为 ,这种操作也是为了方便用户的使用 现在的一个需求是要阻止这个保存密码的弹窗提示 登录页账…

使用IDEA工具debug java annotation processors

最近看Spring提供的自动生成spring-configuration-metadata.json文件的组件。组件依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</opti…

Revit中如何添加剖面?快速实现剖面图

一、Revit中如何添加剖面&#xff1f; 除了标高绘制所得到的楼层平面视图和立面视图之外&#xff0c;还可以添加剖面视图&#xff0c;这样可以得到任意位置一个竖向的剖切面&#xff0c;例如在楼梯细节处理中&#xff0c;楼梯处于建筑物内部&#xff0c;立面也看不到整个楼梯的…

Excel-公式VLOOKUP 使用方法-小记

个人愚见 表示 MongoDB列中的任意一条数据 在 MySQL列 精确查找 和MongoDB列 中一模一样的数据&#xff0c;有的话返回MongoDB列数据&#xff0c;没有话返回#N/A 官方解释

MySQL数据库与表的基本操作 + 表的基本CRUD(增删改查)操作

文章目录 前言一、库的基本操作显示当前所有数据库创建数据库使用数据库删除数据库 二、表的基本操作创建表查看库中所有表查看表结构删除表 三、表的增删改查(基础)新增数据(Create)全列插入指定列插入 查询数据(Retrieve)全列查询指定列查询查询字段为表达式指定列的别名去重…

掘金量化—Python SDK文档—5.API 介绍(1)

​ Python SDK文档 5.API 介绍 5.1基本函数 init - 初始化策略 初始化策略, 策略启动时自动执行。可以在这里初始化策略配置参数。 函数原型&#xff1a; init(context)参数&#xff1a; 参数名类型说明contextcontext上下文&#xff0c;全局变量可存储在这里 示例&…

vue(html,css,vue2,vue3) 学习总结

文章目录 小白 Vue 3 学习一些名词软件安装 VSCode 中的一些设置1. 关闭eslint检查tsconfig.json 配置文件2. ts 文件引用报红 相对路径写法常见图片格式和区别目录结构JS/TS1. prototype(原型对象)2. 导入/导出3. 去除字符串两端空格4. 一些特殊语法糖5. 深拷贝6. 拼接两个数组…

【java爬虫】使用selenium获取某宝联盟淘口令

上一篇文章我们已经介绍过使用selenium获取优惠券基本信息的方法 (15条消息) 【java爬虫】使用selenium爬取优惠券_haohulala的博客-CSDN博客 本文将在上一篇文章的基础上更进一步&#xff0c;获取每个优惠券的淘口令&#xff0c;毕竟我们只有复制淘口令才能在APP里面获取优惠…

基于ChatGPT和私有知识库搭建Quivr项目

准备工作 安装docker和docker-compose申请supabase账号 拉取Quivr代码 git clone https://github.com/StanGirard/Quivr.git 复制.XXXXX_env文件 cp .backend_env.example backend/.env cp .frontend_env.example frontend/.env 更新backend/.env和frontend/.env文件 ba…

【hadoop】部署hadoop全分布模式

hadoop全分布模式 全分布模式特点部署全分布模式准备工作正式配置hadoop-env.shhdfs-site.xmlcore-site.xmlmapred-site.xmlyarn-site.xmlslaves对NameNode进行格式化复制到另外两台虚拟机启动 对部署是否成功进行测试 全分布模式特点 真正的分布式环境&#xff0c;用于生产具…

java学习003

Java数组 Java 语言中提供的数组是用来存储固定大小的同类型元素&#xff0c;这一点和PHP语言的可变数组长度不同。 声明变量数组 首先必须声明数组变量&#xff0c;才能在程序中使用数组。下面是声明数组变量的语法&#xff1a; dataType[] arrayRefVar; // 首选的方法 或 …

2023-07-18力扣今日二题-太难了吧

链接&#xff1a; LCP 75. 传送卷轴 题意&#xff1a; 给一个正方形迷宫&#xff0c;主角是A&#xff0c;每次可以上下左右走一格子&#xff0c;有四种类型的格子&#xff1a;墙、初始位置、魔法水晶、空地 另一个人B&#xff0c;可以传送一次A&#xff0c;只能在空地传送&…

017 - STM32学习笔记 - SPI读写FLASH(二)-flash数据写入与读取

016 - STM32学习笔记 - SPI访问Flash&#xff08;二&#xff09; 上节内容学习了通过SPI读取FLASH的JEDEC_ID&#xff0c;在flash资料的指令表中&#xff0c;还看到有很多指令可以使用&#xff0c;这节继续学习使用其他指令&#xff0c;程序模板采用上节的模板。 为了方便起…

基于深度学习的高精度线路板瑕疵目标检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度线路板瑕疵目标检测系统可用于日常生活中来检测与定位线路板瑕疵目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的线路板瑕疵目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5…

计算机网络 day6 arp病毒 - ICMP协议 - ping命令 - Linux手工配置IP地址

目录 arp协议 arp病毒\欺骗 arp病毒的运行原理 arp病毒产生的后果&#xff1a; 解决方法&#xff1a; ICMP协议 ICMP用在哪里&#xff1f; ICMP协议数据的封装过程 ​编辑 为什么icmp协议封装好数据后&#xff0c;还要加一个ip包头&#xff0c;再使用ip协议再次进…

Docker 基础知识解析:容器与传统虚拟化对比:资源利用、启动时间、隔离性和部署效率

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…