BEVDet 论文学习

news2024/11/27 18:31:33

1. 解决了什么问题?

自动驾驶系统感知周围的环境再进行决策,极具挑战。基于视觉的自动驾驶系统对准确性和效率的要求很严格,人们会采用不同的范式来解决 3D 检测和分割任务。对于多相机 3D 目标检测,image-view-based 方法如 FCOS3D 和 PGD 处于领先位置;对于 BEV 语义分割任务,则由 BEV-based 方法如 PON、LSS 和 VPN 主导。本文试图通过一个范式来解决 3D 目标检测和 BEV 语义分割问题。

2. 提出了什么方法?

BEVDet 在 BEV 空间进行 3D 目标检测。

2.1 网络结构

它包含 4 个模块,一个 image-view encoder (包括主干网络和 neck)提取图像特征、一个 view transformer 将图像特征转换到 BEV、一个 BEV encoder 编码 BEV 特征,最后是一个任务 head 利用 BEV 特征在 BEV 空间进行 3D 目标检测。
在这里插入图片描述

Image-view Encoder

图像编码器将输入图像编码为特征,包括一个主干网络进行特征提取,以及一个 neck 进行多分辨率特征融合。主干网络可以使用 ResNet、SwinTransformer、DenseNet、HRNet 等。Neck 使用的是 FPN-LSS,将 1 / 32 1/32 1/32输入分辨率的特征上采样为 1 / 16 1/16 1/16输入分辨率,然后和主干输出的特征 concat。

View Transformer

将图像特征转换到 BEV 空间。View transformer 的输入是图像特征,通过分类的方式对深度值做密集预测。然后,根据分类得分和图像特征来渲染点云。最后,沿着垂直方向(即 Z \text{Z} Z坐标轴)使用池化操作。默认的深度范围在 [ 1 , 60 ] \left[1,60 \right] [1,60]米,间隔是 1.25 × r 1.25\times r 1.25×r r r r表示输出特征的分辨率。

BEV Encoder

BEV encoder 在 BEV 空间编码特征。其结构和 image-view encoder 相近,包含一个主干和 neck。它能感知到尺度、方向和速度的重要信息。

Head

有了 BEV 特征,我们就可构建任务 head。3D 目标检测要获取到位置、尺度、方向和运动物体的速度,如行人、车辆、障碍物等。本方法直接使用了 CenterPoint 第一阶段的 3D 目标检测 head。

2.2 数据增广策略

Isolated View Spaces

View transformer 以逐像素的方式将特征从图像角度转换到 BEV。给定图像平面的像素点 p i m a g e = [ x i , y i , 1 ] T \text{p}_{image}=\left[x_i,y_i,1\right]^T pimage=[xi,yi,1]T,深度值为 d d d,对应的 3D 空间坐标是:
p c a m e r a = I − 1 ( p i m a g e ∗ d ) \text{p}_{camera} = \text{I}^{-1}(\text{p}_{image}\ast d) pcamera=I1(pimaged)

I \text{I} I 是一个 3 × 3 3\times 3 3×3的相机内参矩阵。常用的数据增广方法如翻转、裁剪、旋转,可以用一个 3 × 3 3\times 3 3×3的变换矩阵 A \text{A} A来表示。当我们对输入图像做数据增广(即 p i m a g e ′ = A p i m a g e \text{p}'_{image}=\text{A}\text{p}_{image} pimage=Apimage),我们也要在 view transformation 时使用 A − 1 \text{A}^{-1} A1逆变换,保证特征和 BEV 空间目标的一致性:

p c a m e r a ′ = I − 1 ( A − 1 p i m a g e ′ ∗ d ) = p c a m e r a \text{p}'_{camera} = \text{I}^{-1}(\text{A}^{-1}\text{p}'_{image}\ast d)=\text{p}_{camera} pcamera=I1(A1pimaged)=pcamera

这样,对图像做增广不会改变 BEV 空间的特征分布。我们就可以在图像空间使用复杂的数据增广策略。

BEV Space Learning with Data Augmentation

对于 BEV 空间的学习,数据量要少于图像空间的,因为每个样本包括多个相机图像。BEV 空间的学习会很容易过拟合。因为 view transformer 在数据增广时将两个空间分开进行,作者在 BEV 空间构建了另一个增广策略,达到正则效果。作者采用了 2D 空间常见的操作(如翻转、缩放、旋转),对 view transformer 的输出特征和 3D 检测的 ground-truth 进行增广。

2.3 Scale-NMS

BEV 空间里各类别的空间分布和图像空间的区别很大。在图像空间,因为相机成像机制,所有的类别有着相似的空间分布。因此,使用 NMS 和一个固定的阈值就能很好地处理所有类别的预测结果。但是,在 BEV 空间,不同类别所占据的区域是不一样的,各实例之间的重叠面积应该近似于 0。预测结果的 IOU 分布会随着类别而变化。如下图,行人和锥形交通路标在地平面上的面积非常小,经常会小于算法的输出分辨率(如 CenterPoint 中的 0.8 米)。较小的面积可能会造成冗余的检测结果与 true positive 之间的 IOU 是 0。Scale-NMS 会根据每个目标的类别进行缩放,然后再进行 NMS。缩放系数是与具体类别相关的,在验证集上搜索得到。
在这里插入图片描述

2.4 实验

数据集

使用了 nuScenes 数据集,共 1000 个场景,用 6 个相机采集。训练集、测试集和验证集各 700、150 和 150 个场景。共有 140 万个 3D 标注框,10 个类别:car, truck, bus, trailer, construction vehicle, pedestrian, motorcycle, bicycle, barrier, traffic cone。

Metrics

对于 3D 检测,报告了 mean Average Precision (mAP), Average Translation Error (ATE), Average Scale Error (ASE), Average Orientation Error (AOE), Average Velocity Error (AVE), Average Attribute Error (AAE), and NuScenes Detection Score(NDS)。mAP 指标与 2D 目标检测使用的类似,但是用地平面上 2D 中心点距离来计算的,而非 IOU。

训练参数

模型使用 AdamW 训练,学习率是 2 e − 4 2e-4 2e4,batch size 是 64,用了 8 张 3090 GPU。对于 ResNet 图像编码器,使用 step learning rate policy,在第 17 和第 20 个 epoch 时学习率乘以 0.1 0.1 0.1。对于 SwinTransformer 图像编码器,使用了 cyclic policy,在前 40 % 40\% 40%个 epochs,学习率逐渐从 2 e − 4 2e-4 2e4线性增加到 1 e − 3 1e-3 1e3,然后在剩余 epochs 中线性地衰减到 0 0 0。总共有 20 个 epochs。

数据处理

输入图像的宽度和高度 W i n W_{in} Win H i n H_{in} Hin。训练时的输入分辨率是 1600 × 900 1600\times 900 1600×900,然后经过随机翻转、在 s ∈ [ W i n / 1600 − 0.06 , W i n / 1600 + 0.11 ] s\in\left[W_{in}/1600-0.06, W_{in}/1600+0.11\right] s[Win/16000.06,Win/1600+0.11]范围内随机缩放,在 r ∈ [ − 5. 4 ∘ , 5. 4 ∘ ] r\in \left[-5.4^\circ, 5.4^\circ\right] r[5.4,5.4]范围内随机旋转,最后裁剪为大小是 W i n × H i n W_{in}\times H_{in} Win×Hin。在水平方向上随机进行裁剪,在垂直方向上保持固定, ( y 1 , y 2 ) = ( max ⁡ ( 0 , s ∗ 900 − H i n ) , y 1 + H i n ) (y_1,y_2)=(\max(0, s\ast 900 - H_{in}), y_1 + H_{in}) (y1,y2)=(max(0,s900Hin),y1+Hin) y 1 , y 2 y_1,y_2 y1,y2分别是目标区域的上边界和下边界。在 BEV 空间,对输入特征和 3D 目标检测 ground-truths 使用随机翻转, [ − 22. 5 ∘ , 22. 5 ∘ ] \left[-22.5^\circ, 22.5^\circ\right] [22.5,22.5]的随机旋转,和 [ 0.95 , 1.0 ] \left[0.95,1.0\right] [0.95,1.0]的随机缩放。测试时,使用 s = W i n / 1600 + 0.04 s=W_{in}/1600+0.04 s=Win/1600+0.04的系数缩放,裁剪至分辨率 W i n × H i n W_{in}\times H_{in} Win×Hin,区域范围是 ( x 1 , x 2 , y 1 , y 2 ) = ( 0.5 ∗ ( s ∗ 1600 − W i n ) , x 1 + W i n , s ∗ 900 − H i n , y 1 + H i n ) (x_1,x_2,y_1,y_2)=(0.5\ast (s\ast 1600-W_{in}),x_1 + W_{in}, s\ast 900 - H_{in}, y_1 + H_{in}) (x1,x2,y1,y2)=(0.5(s1600Win),x1+Win,s900Hin,y1+Hin)

3. 有什么优点?

2021年 nuScenes 纯视觉3D目标检测世界第一的方案,BEVDet-Tiny 在 nuScenes 验证集上取得了 31.2 % 31.2\% 31.2%mAP 和 39.2 % 39.2\% 39.2%NDS,计算量是 FCOS3D 的 11 % 11\% 11%,只需 215.3 215.3 215.3GFLOPs,速度为 15.6 15.6 15.6FPS,快了 9.2 9.2 9.2倍。BEVDet-Base 取得了 39.3 % 39.3\% 39.3%mAP 和 47.2 % 47.2\% 47.2%NDS,比 FCOS3D 高了 9.8 % 9.8\% 9.8%mAP 和 10 % 10\% 10%NDS。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

缓存更新策略

缓存更新策略 内存淘汰超时剔除主动更新说明利用Redis的内存淘汰机制,不用自己维护,当内存不足时会自动淘汰部分数据。下次查询时更新缓存。给缓存数据添加TTL(过期时间),到期后自动删除缓存。下次查询时更新缓存。编写业务逻辑,…

CSAPP Lab4- PerfLab

代码优化 typedef struct { unsigned short red; /* R value */ unsigned short green; /* G value */ unsigned short blue; /* B value */ } pixel图像用一维数组表示,第(i,j)个像素表示为I[RIDX(i,j,n)],n为图像的维数 #def…

Datacom-HCIE 02(10月26日更新)--含解析

单选题 1.[试题编号:189785] (单选题)如图所示,VTEP1上在BD20域内开启了ARP广播抑制功能,并且VTEP1通过 BGP EVPN路由学习到了PC2的ARP信息,则PC1发送的针对PC2的ARP请求,VIEP1在转发给VIEP2时…

sqli-labs Less-11,12

less-11(基于错误的POST型单引号字符型注入) sqlmap 1.使用bp抓包 2.保存为1.txt在本地,使用sqlmap查询数据库 sqlmap.py -r "C:\Users\wy199\Desktop\1.txt" --dbs 3.查询当前数据库的所有表 sqlmap.py -r "C:\Users\wy199\Desktop\1.txt"…

正点原子ALPHA开发板核心资源分析

目录 正点原子ALPHA开发板核心资源分析I.MX6ULL实物图对比SOC 主控芯片(MCIMX6Y2CVM08AB)NAND FLASHEMMCDDR3L 正点原子ALPHA开发板核心资源分析 I.MX6ULL实物图对比 I.MX6ULL NAND BTB 接口核心板资源图与 I.MX6ULL EMMC BTB 接口核心板资源图如上图&a…

安装ElasticSearch之前的准备工作jdk的安装

一.windows 下载jdk的软件 (1).进入jdk1.8官网 (2).根据电脑是32位还是64位按需下载 (3).点击下载之后就会跳转到Oracle账号登录界面 没有 Oracle账号的注册一下就可以了 下载好的jdk如下: 双击下一步下一步安装jdk 默认安装就可以了 配置环境变量 (1).电脑左下方设置选项 (2).…

UFT软件的安装与注意事项

安装包下载 UFT软件的安装包网上也有许多,这里我分享下我使用的--->UFT安装包 下载完成解压后进行安装。 要注意关闭杀毒软件,否则安装过程中某些组件可能会安装不上。 部分电脑在安装过程中出现以下提示,可以点击确定 然后我们查看桌面上…

学习open62541 --- [77] 修改String类型变量的注意点

对于String类型的节点,其值的类型是UA_String,在这篇文章中我们解释了UA_String的生成方法。 当我们修改String类型节点的值时,会事先准备一个UA_String变量,这时就会遇到一个选择:是否需要动态分配内存,即…

一种基于数值的横向相互作用

( A, B )---144*30*2---( 1, 0 )( 0, 1 ) 让网络的输入有144个节点,训练集AB各由12张二值化的图片组成,让A中每行有1个1,B中全是0,排列组合A ,统计迭代次数的顺序。 前面实验已经表明对于A中每行只有1个1,…

虚幻or现实?堆区、栈区真实存在吗?是操作系统在骗你罢了...

文章目录 💐专栏导读💐文章导读🐧引例 🐦进程地址空间🐦虚拟地址与物理内存的联系🔔回答引例中的问题🔓写时拷贝 🐦虚拟地址存在的意义🔓malloc的本质 💐专栏…

Lift, Splat, Shoot 论文学习

1. 解决了什么问题? LSS 在工业界具有非常重要的地位。自从 Tesla AI Day 上提出了 BEV 感知后,不少公司都进行了 BEV 工程化的探索。当前 BEV 下的感知方法大致分为两类: 自下而上:利用 transformer 的 query 机制,…

软考 软件设计师上午题设计模式概念类

设计模式分类 创建型设计模式 简单工厂模式 不符合开闭原则,因此没有列入23类模式里 对扩展开放对修改关闭 工厂方法模式 说穿了:系统开放一个接口(拓展开放)、不提供修改的接口(修改关闭),…

基于html+css的图展示83

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

使用贝壳物联控制led灯

1、完成esp8266 01S的固件刷机 1.1 使用刷机软件刷原生固件 esp8266 01S要使用标准固件1M(主要是01S是8M) 1.2 刷机接线方式 ttl直接连esp8266 接线: tts esp8266 3v3 ---》面包板高----》3.3 tx--------------…

BEVFormer 论文学习

1. 解决了什么问题? 3D 视觉感知任务,包括基于多相机图像的 3D 目标检测和分割,对于自动驾驶系统非常重要。与基于 LiDAR 的方法相比,基于相机图像的方法能够检测到更远距离的目标,识别交通信号灯、交通标识等信息。有…

[CTF/网络安全] 攻防世界 command_execution 解题详析

[CTF/网络安全] 攻防世界 command_execution 解题详析 ping命令ping命令的应用格式ping命令执行漏洞 ls命令cat命令姿势ping本地回环地址ping目录ping文件夹ping文件 Tips总结 题目描述:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道…

图【无向图】的创建与遍历

树:无回路 图:有回路 代码在最下面 邻接矩阵:重点:矩阵 (一)图的创建 存储方式 如图: 代码截图分析:顶点用一维数组存,边用两个点之间的值为0或1来表…

异地研发团队都使用哪些研发协同工具?盘点7类最主流的研发管理协同软件

产品研发场景下好用的协同办公软件有哪些?分享7类研发过程中主流的协同办公软件,比如项目管理协作与问题跟踪工具PingCode、代码托管与版本控制平台github、持续集成与持续部署(CI/CD)工具jinkens、文档协作与知识管理工具conflue…

【力扣周赛】第346场周赛

【力扣周赛】第346场周赛 6439. 删除子串后的字符串最小长度题目描述解题思路 6454. 字典序最小回文串题目描述解题思路 6441. 求一个整数的惩罚数题目描述解题思路 6439. 删除子串后的字符串最小长度 题目描述 描述:给你一个仅由 大写 英文字符组成的字符串 s 。…

Gradle ——Gradle安装与配置

目录 一、简介 二、功能和特点 三、安装 参考: Gradle_百度百科 Gradle 学习 ----Gradle 入门_你若不离不弃,我必生死相依的博客-CSDN博客 还有硬石科技的开源wifiAPP程序,没找到他们的码仓 一、简介 Gradle是一个基于Apache Ant和Apache Maven概念…