【论文笔记】BEVNeXt: Reviving Dense BEV Frameworks for 3D Object Detection
原文链接:https://arxiv.org/pdf/2312.01696
简介:最近,在摄像头3D目标检测任务中,基于查询的Transformer解码器正在超越传统密集BEV方法。但密集BEV框架有着更好的深度估计和目标定位能力,能全面精确地描绘3D场景。本文通过引入增强组件来解决现有密集BEV方法的缺点,包括条件随机场(CRF)调制的深度估计模块(保证物体级别的一致性),带有扩展感受野的长期时间聚合模块,以及两阶段目标解码器(将透视技术与CRF调制的深度嵌入组合)。上述增强带来了现代化密集BEV框架BEVNeXt。实验表明,BEVNeXt能超过基于密集BEV的或基于查询的方法,在NuScenes数据集上达到SotA性能。
对于目前的密集BEV方法弱于基于查询的方法,本文将原因总结如下:
- 2D建模不足。基于稀疏查询的方法证明了2D建模对检测性能的影响。现有的提高2D建模能力的方法包括引入激光雷达监督的深度估计辅助任务,但激光雷达分辨率较低,会导致不精确的深度感知。
- 时间建模不合适。由于自车与目标运动,增大时间融合时的感受野很关键。基于查询的方法可以通过全局注意力提高时间融合时的感受野,而密集BEV方法受限于卷积的局部性。
- 提升时的特征失真。基于稀疏查询的方法从2D空间采样图像特征,避免了视图变换时带来的特征失真。
0. 概述
本文的BEVNeXt基于LSS框架,关键组件有三:
- BEV生成:给定多视图图像 { I i } i = 1 6 \{I^i\}_{i=1}^6 {Ii}i=16,主干提取多尺度特征 { F 1 / n i } n = 4 , 8 , 16 , 32 \{F^i_{1/n}\}_{n=4,8,16,32} {F1/ni}n=4,8,16,32并用深度网络预测深度概率 { d i } i = 1 6 \{d^i\}_{i=1}^6 {di}i=16。CRF层利用颜色信息 { I i } i = 1 6 \{I^i\}_{i=1}^6 {Ii}i=16调制 { d i } i = 1 6 \{d^i\}_{i=1}^6 {di}i=16,得到物体级别一致的深度概率 { d ~ i } i = 1 6 \{\tilde d^i\}_{i=1}^6 {d~i}i=16。
- BEV编码器:BEV编码器用于融合历史 k k k帧的BEV特征,得到统一BEV表达 B ~ \tilde B B~。Res2Fusion满足了聚合过程中充足的感受野需求。
- 检测头:基于中心的3D检测头处理BEV编码器的输出 B ~ \tilde B B~,解码为3D物体。CRF调制的深度概率 { d ~ i } i = 1 6 \{\tilde d^i\}_{i=1}^6 {d~i}i=16被用于嵌入,帮助检测头关注有判别力的2D特征。
1. CRF调制的深度估计
密集BEV方法中,深度估计作为2D辅助任务,可提高2D建模能力并减小视图变换时的失真。由于深度估计可视为分割任务(类别表示特定深度范围),本文使用条件随机场(CRF)增强深度估计质量。CRF调制通过利用色彩平滑性先验,保证物体级别的深度一致性。令 { X 1 , ⋯ , X N } \{X_1,\cdots,X_N\} {X1,⋯,XN}表示降采样特征图 F 1 / n i F^i_{1/n} F1/ni中的 N N N个像素, { D 1 , ⋯ , D k } \{D_1,\cdots,D_k\} {D1,⋯,Dk}表示 k k k个离散深度区间。深度网络的目标是为每个像素分配一个深度区间: d = { x 1 , ⋯ , x N ∣ x i ∈ { D 1 , ⋯ , D k } } d=\{x_1,\cdots,x_N|x_i\in\{D_1,\cdots,D_k\}\} d={x1,⋯,xN∣xi∈{D1,⋯,Dk}}。给定分配 d d d,目标是最小化相应的能量代价 E ( d ∣ I ) E(d|I) E(d∣I):
E ( d ∣ I ) = ∑ i ψ u ( x i ) + ∑ i ≠ j ψ p ( x i , x j ) E(d|I)=\sum_i\psi_u(x_i)+\sum_{i\neq j}\psi_p(x_i,x_j) E(d∣I)=i∑ψu(xi)+i=j∑ψp(xi,xj)
其中 ∑ i ψ u ( x i ) \sum_i\psi_u(x_i) ∑iψu(xi)为一元势,测量深度网络初始输出的代价。成对势定义为:
ψ p ( x i , x j ) = ∑ w w exp ( − ∣ I ˉ i − I ˉ j ∣ 2 2 θ ) ∣ x i − x j ∣ \psi_p(x_i,x_j)=\sum_ww\exp(-\frac{|\bar I_i-\bar I_j|^2}{2\theta})|x_i-x_j| ψp(xi,xj)=w∑wexp(−2θ∣Iˉi−Iˉj∣2)∣xi−xj∣
其中 I ˉ i \bar I_i Iˉi为相应于降采样特征图像素的图像patch内的平均RGB值, ∣ x i − x j ∣ |x_i-x_j| ∣xi−xj∣为两个深度区间的标签相容性(即中心距离)。CRF位于深度网络后,输出记为 d ~ \tilde d d~。
使用激光雷达点云作为深度监督的方法通常在低分辨率图像特征图上进行深度估计以保证标签覆盖率。实验证明当图像特征图的分辨率增加时,CRF调制的性能明显更优。
2. Res2Fusion
时间融合时,扩大卷积的感受野会带来额外计算量且容易导致过拟合。本文提出Res2Fusion,采用Res2Net中的多尺度卷积块增大感受野,如图©所示。给定 k k k帧历史BEV特征 { B t − k + 1 , ⋯ , B t } \{B_{t-k+1},\cdots,B_t\} {Bt−k+1,⋯,Bt},首先将BEV特征分为 g = k / w g=k/w g=k/w组,其中 w w w为固定的窗口大小。对每个组分别使用 1 × 1 1\times1 1×1卷积 { K i 1 × 1 } i = 1 g \{K_i^{1\times1}\}_{i=1}^g {Ki1×1}i=1g,减小通道维度:
B i ′ = K i 1 × 1 ( [ B t − ( i + 1 ) × w ; ⋯ ; B t − i × w ] ) B'_i=K_i^{1\times1}([B_{t-(i+1)\times w};\cdots;B_{t-i\times w}]) Bi′=Ki1×1([Bt−(i+1)×w;⋯;Bt−i×w])
其中 [ ⋅ ; ⋅ ] [\cdot;\cdot] [⋅;⋅]为拼接操作。然后使用多尺度卷积:
B i ′ ′ = { K i 3 × 3 ( B i ′ ) 若 i = g K i 3 × 3 ( B i ′ + B i + 1 ′ ) 若 0 < i < g B i ′ 若 i = 0 B''_i=\begin{cases}K_i^{3\times3}(B'_i)& 若i=g\\ K_i^{3\times3}(B'_i+B'_{i+1})&若0<i<g\\ B'_i&若i=0\end{cases} Bi′′=⎩ ⎨ ⎧Ki3×3(Bi′)Ki3×3(Bi′+Bi+1′)Bi′若i=g若0<i<g若i=0
这允许模型跳过跨历史BEV的自车运动变换,从而避免运动不对齐问题。最后,Res2Fusion的输出为
B ~ = K f i n a l 1 × 1 ( [ B g ′ ′ ; ⋯ ; B 0 ′ ′ ] ) \tilde B=K^{1\times1}_{final}([B''_g;\cdots;B''_0]) B~=Kfinal1×1([Bg′′;⋯;B0′′])
该输出会通过带步长的层并使用FPN获取多尺度信息。
3. 带透视细化的目标检测器
由于前向投影(如LSS)会导致特征失真,本文提出补偿措施。
使用CenterPoint的方法计算物体热图 H H H,并采样特征 B c e n t e r = { B ~ x , y ∣ H x , y > τ } B^{center}=\{\tilde B_{x,y}|H_{x,y}>\tau\} Bcenter={B~x,y∣Hx,y>τ},其中 τ \tau τ为热图阈值。将 B c e n t e r B^{center} Bcenter通过考虑 7 × 7 7\times 7 7×7邻域,拓展到 B r o i B^{roi} Broi。随后, B r o i B^{roi} Broi与可学习查询 { Q x , y } \{Q_{x,y}\} {Qx,y}一起通过空间交叉注意力层,进行透视细化:
S C A ( B x , y r o i , F 1 / n ) = ∑ i = 1 N ∑ j = 1 N r e f F d ( B x , y r o i + Q x , y , P i ( x , y , z j ) , F 1 / n i ) SCA(B_{x,y}^{roi},F_{1/n})=\sum_{i=1}^N\sum_{j=1}^{N_{ref}}\mathcal F_d(B^{roi}_{x,y}+Q_{x,y},\mathcal P_i(x,y,z_j),F^i_{1/n}) SCA(Bx,yroi,F1/n)=i=1∑Nj=1∑NrefFd(Bx,yroi+Qx,y,Pi(x,y,zj),F1/ni)
其中 F d \mathcal F_d Fd为可变形注意力, P i ( x , y , z j ) \mathcal P_i(x,y,z_j) Pi(x,y,zj)为高度在 z j z_j zj处的参考点。为引入深度指导,本文为2D特征嵌入深度概率 d ~ \tilde d d~:
S C A ( B x , y r o i , F 1 / n ) = ∑ i = 1 N ∑ j = 1 N r e f F d ( B x , y r o i + Q x , y , P i ( x , y , z j ) , F 1 / n i + M L P ( d ~ i ) ) SCA(B_{x,y}^{roi},F_{1/n})=\sum_{i=1}^N\sum_{j=1}^{N_{ref}}\mathcal F_d(B^{roi}_{x,y}+Q_{x,y},\mathcal P_i(x,y,z_j),F^i_{1/n}+MLP(\tilde d^i)) SCA(Bx,yroi,F1/n)=i=1∑Nj=1∑NrefFd(Bx,yroi+Qx,y,Pi(x,y,zj),F1/ni+MLP(d~i))
最后,使用CenterPoint的回归头从 B ~ r o i \tilde B^{roi} B~roi预测物体。
相关文章:

【论文笔记】BEVNeXt: Reviving Dense BEV Frameworks for 3D Object Detection
原文链接:https://arxiv.org/pdf/2312.01696 简介:最近,在摄像头3D目标检测任务中,基于查询的Transformer解码器正在超越传统密集BEV方法。但密集BEV框架有着更好的深度估计和目标定位能力,能全面精确地描绘3D场景。本…...

基于open-gpu-kernel-modules的p2p vram映射bar1提高通信效率
背景 bar1 Base Address Register 1 用于内存映射的寄存器,定义了设备的内存映射区域,BAR1专门分配给gpu的一部分内存区域,允许cpu通过pcie总线直接访问显存VRAM中的数据。但bar1的大小是有限的,在常规的4090上,bar1只…...

java之斗地主部分功能的实现
今天我们要实现斗地主中发牌和洗牌这两个功能,该如何去实现呢? 1.创建牌类:52张牌每一张牌包含两个属性:牌的大小和牌的花色。 故我们优先创建一个牌的类(Card):包含大小和花色。 public class Card { //单张牌的大小及类型/…...

我的AI工具箱Tauri版-VideoIntroductionClipCut视频介绍混剪
本教程基于自研的AI工具箱Tauri版进行VideoIntroductionClipCut视频介绍混剪。 本项目为自研的AI工具箱Tauri版中的视频剪辑模块,专注于自动生成视频介绍片段。该模块名为 VideoIntroductionClipCut,用户可以通过该工具快速进行视频的混剪和介绍内容的生…...

【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】011 - 第一个用户空间进程 init 进程 第一阶段初始化过程 源码分析
【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】011 - 第一个用户空间进程 init 进程 第一阶段初始化过程 源码分析 系列文章汇总:《鸿蒙OH-v5.0源码分析之 Uboot+Kernel 部分】000 - 文章链接汇总》 本文链接:《【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】011 - 第一个用户空…...

MyBatis 源码解析:Mapper 文件加载与解析
引言 在 MyBatis 中,Mapper 文件扮演了至关重要的角色,它通过 SQL 映射文件来定义数据库查询操作和 Java 对象之间的映射关系。Mapper 文件通常是以 XML 格式存储的,包含了 SQL 语句以及与 Java 对象的对应关系。在本篇文章中,我…...

(11)(2.1.2) DShot ESCs(二)
文章目录 前言 3 配置伺服功能 4 检查RC横幅 5 参数说明 前言 DShot 是一种数字 ESC 协议,它允许快速、高分辨率的数字通信,可以改善飞行器控制,这在多旋翼和 quadplane 应用中特别有用。 3 配置伺服功能 如上所述,如果使用…...

yolov5/8/9模型在COCO分割数据集上的应用【代码+数据集+python环境+GUI系统】
yolov5/8/9模型在COCO分割数据集上的应用【代码数据集python环境GUI系统】 yolov5/8/9模型在COCO分割数据集上的应用【代码数据集python环境GUI系统】 1.COCO数据集介绍 COCO数据集,全称为Microsoft Common Objects in Context,是微软于2014年出资标注的…...

技术周总结 09.16~09.22 周日(架构 C# 数据库)
文章目录 一、09.16 周一1.1)问题01: 软件质量属性中"质量属性场景"、"质量属性环境分析"、"质量属性效用树"、"质量属性需求用例分析"分别是什么?1.2)问题02: 软件质量属性中…...

【java实现json转化为CSV文件】
文章目录 JSON文件中的数据格式测试文件转换的接口 JSON文件中的数据格式 单条数据展开后如下: {"text": "《邪少兵王》是冰火未央写的网络小说连载于旗峰天下","spo_list":[{"predicate": "作者", "objec…...

MySQL索引知识个人笔记总结(持续整理)
本篇笔记是个人整理的索引知识总结,刚开始有点乱,后续会一直边学边整理边总结 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。就好比索引就是数据的目录 索引结构 Btree索引,Hash索引,Full-text索引,R-tree(空…...

ReKep——李飞飞团队提出的让机器人具备空间智能:基于视觉语言模型GPT-4o和关系关键点约束
前言 由于工厂、车厂的任务需求场景非常明确,加之自今年年初以来,我司在机器人这个方向的持续大力度投入(包括南京、长沙两地机器人开发团队的先后组建),使得近期我司七月接到了不少来自车厂/工厂的订单,比如其中的三个例子&…...

[Java并发编程] synchronized(含与ReentrantLock的区别)
文章目录 1. synchronized与ReentrantLock的区别2. synchronized的作用3. synchronized的使用3.1 修饰实例方法,作用于当前实例,进入同步代码前需要先获取实例的锁3.2 修饰静态方法,作用于类的Class对象,进入修饰的静态方法前需要…...

spring-boot-maven-plugin插件打包和java -jar命令执行原理
文章目录 1. Maven生命周期2. jar包结构2.1 不可执jar包结构2.2 可执行jar包结构 3. spring-boot-maven-plugin插件打包4. 执行jar原理 1. Maven生命周期 Maven的生命周期有三种: clean:清除项目构建数据,较为简单,不深入探讨&a…...

Python办公自动化教程(001):PDF内容提取
1、Pdfplumber介绍 pdfplumber的github地址: https://github.com/jsvine/pdfplumber/【介绍】:pdfplumber 是一个用于处理 PDF 文件的 Python 第三方库,它提供了一种方便的方式来提取 PDF 文件中的文本、表格和其他信息。【功能】ÿ…...

HarmonyOS鸿蒙开发实战(5.0)自定义全局弹窗实践
鸿蒙HarmonyOS开发实战往期文章必看: HarmonyOS NEXT应用开发性能实践总结 最新版!“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门到精通) 非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&am…...

【AI学习】了解OpenAI o1背后的self-play RL:开启新的智能道路
在ChatGPT刚刚出来的时候,沐神关于ChatGPT有一段视频,只有几分钟,却是讲得极其透彻的一段。大概意思就是,过去的AI智能水平,比如五年前,大概相当于人类5秒钟思考的程度,包括自动驾驶,…...

Java项目实战II基于Java+Spring Boot+MySQL的车辆管理系统(开发文档+源码+数据库)
目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 "随着…...

IPsec-VPN中文解释
网络括谱图 IPSec-VPN 配置思路 1 配置IP地址 FWA:IP地址的配置 [FW1000-A]interface GigabitEthernet 1/0/0 [FW1000-A-GigabitEthernet1/0/0]ip address 10.1.1.1 24 //配置IP地址 [FW1000-A]interface GigabitEthernet 1/0/2 [FW1000-A-GigabitEthernet1/0/2]ip a…...

Ubuntu 22.04 源码下载、编译
Kernel/BuildYourOwnKernel - Ubuntu Wikihttps://wiki.ubuntu.com/Kernel/BuildYourOwnKernel 一、查询当前系统内核版本 rootubuntu22:~# uname -r 5.15.0-118-generic 二、查询本地软件包数据库中的内核源码信息 rootubuntu22:~# apt search linux-source Sorting... Do…...

【深度学习实战—11】:基于Pytorch实现谷歌QuickDraw数据集的下载、解析、格式转换、DDP分布式训练、测试
✨博客主页:王乐予🎈 ✨年轻人要:Living for the moment(活在当下)!💪 🏆推荐专栏:【图像处理】【千锤百炼Python】【深度学习】【排序算法】 目录 😺〇、仓库…...

基于SpringBoot+WebSocket实现地图上绘制车辆实时运动轨迹图
实现基于北斗卫星的车辆定位和轨迹图的Maven工程(使用模拟数据),我们将使用以下技术: Spring Boot:作为后端框架,用来提供数据接口。Thymeleaf:作为前端模板引擎,呈现网页。Leaflet…...

嵌入式入门小工程
此代码基于s3c2440 1.点灯 //led.c void init_led(void) {unsigned int t;t GPBCON;t & ~((3 << 10) | (3 << 12) | (3 << 14) | (3 << 16));t | (1 << 10) | (1 << 12) | (1 << 14) | (1 << 16);GPBCON t; }void le…...

hackmyvm靶场--zon
环境 攻击机kali 靶机 未知 主机探测 因为在同一个局域网内使用ARP协议探测存活主机 靶机为192.168.56.128 端口探测 常见的80和22端口 那么一定是寻找web漏洞拿shell了 后台扫描 后台扫描常用dirsearch和gobuster,有时候小字典可能不太行,可以尝试换个大点…...

atcoder abc372 启发式合并, dp
A delete 代码: #include <bits.stdc.h>using namespace std;int main() {string s;cin >> s;for(auto t: s) if(t ! .) cout << t; } B 3 ^ A 思路:三进制转换,可以参考二进制,先把当前可以加入的最大的3的…...

CentOS Stream 9部署MariaDB
1、更新系统软件包 sudo dnf update 2、安装MariaDB软件包(替代mysql) sudo dnf install mariadb-server 3、安装MariaDB服务 sudo systemctl enable --now mariadb 4、检查MariaDB服务状态 sudo systemctl status mariadb 5、配置MariaDB安全性 sudo my…...

【Leetcode:997. 找到小镇的法官 + 入度出度】
🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...

大数据Flink(一百二十三):五分钟上手Flink MySQL连接器
文章目录 五分钟上手Flink MySQL连接器 一、创建数据库表 二、创建session集群 三、源表查询 四、窗口计算 五、结果数据写回数据库 五分钟上手Flink MySQL连接器 MySQL Connector可以将本地或远程的MySQL数据库连接到Flink中&#x…...

SYN Flood攻击原理,SYN Cookie算法
SYN Flood是一种非常危险而常见的Dos攻击方式。到目前为止,能够有效防范SYN Flood攻击的手段并不多,SYN Cookie就是其中最著名的一种。 1. SYN Flood攻击原理 SYN Flood攻击是一种典型的拒绝服务(Denial of Service)攻击。所谓的拒绝服务攻击就是通过进…...

计组(蒋)期末速成笔记1
蒋本珊计组期末不挂科复习笔记 第1章 概论 第2章 数据的机器层次表示 第3章 指令系统 第4章 数值的机器运算 第5章 存储系统和结构 第6章 中央处理器 第7章 总线 第1章 概论 蒋本珊计组期末不挂科复习笔记知道你快考试了,莫慌! 第1章 概论1.1 冯诺依曼计…...