【论文笔记】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,,xNxi{D1,,Dk}}。给定分配 d d d,目标是最小化相应的能量代价 E ( d ∣ I ) E(d|I) E(dI)
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(dI)=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)=wwexp(2θIˉiIˉj2)xixj

其中 I ˉ i \bar I_i Iˉi为相应于降采样特征图像素的图像patch内的平均RGB值, ∣ x i − x j ∣ |x_i-x_j| xixj为两个深度区间的标签相容性(即中心距离)。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\} {Btk+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;;Bti×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)Bii=g0<i<gi=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,yHx,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=1Nj=1NrefFd(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=1Nj=1NrefFd(Bx,yroi+Qx,y,Pi(x,y,zj),F1/ni+MLP(d~i))

最后,使用CenterPoint的回归头从 B ~ r o i \tilde B^{roi} B~roi预测物体。

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

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

相关文章

初始网络编程(下)

所属专栏&#xff1a;Java学习 1. TCP 的简单示例 同时&#xff0c;由于 TCP 是面向字节流的传输&#xff0c;所以说传输的基本单位是字节&#xff0c;接受发送都是使用的字节流 方法签名 方法说明 Socket accept() 开始监听指定端口&#xff08;创建时绑定的端口&…

Navicat导入Sql文件至Mysql数据库,事务失效

Mysql 版本&#xff1a;8.0.39 Navicat 版本&#xff1a;17.x、16.x 结论&#xff1a; Navicat 导入sql文件&#xff0c;事务不会生效&#xff0c;无论怎么设置 mysql.exe 导入sql文件&#xff0c;事务生效 测试 准备一张表 name约束不能为空&#xff0c;用于测试事务失败…

SpringBoot 整合 Caffeine 实现本地缓存

目录 1、Caffeine 简介1.1、Caffeine 简介1.2、对比 Guava cache 的性能主要优化项1.3、常见的缓存淘汰算法1.4、SpringBoot 集成 Caffeine 两种方式 2、SpringBoot 集成 Caffeine 方式一2.1、缓存加载策略2.1.1、手动加载2.1.2、自动加载【Loading Cache】2.1.3、异步加载【As…

7、论等保的必要性

数据来源&#xff1a;7.论等保的必要性_哔哩哔哩_bilibili 等级保护必要性 降低信息安全风险 等级保护旨在降低信息安全风险&#xff0c;提高信息系统的安全防护能力。 风险发现与整改 开展等级保护的最重要原因是通过测评工作&#xff0c;发现单位系统内外部的安全风险和脆弱…

Linux启动流程,0,1,2进程,init进程,idle进程,内核态到用户态的kernel_execve(一)

&#xff1f;是&#xff0c;如果定义了&#xff0c;就按Makefile的&#xff0c;如果如下make编译时&#xff0c;就按如下 linux内核入口 进程0在用户空间看不到&#xff0c;因为他是内核进程 进程2就是守护进程&#xff0c;维护内涵运转的 一生二&#xff0c;二生三&#xff…

Navicate 链接Oracle 提示 Oracle Library is not loaded ,账号密码都正确地址端口也对

Navicate 链接Oracle 提示 Oracle Library is not loaded ,账号密码都正确地址端口也对的问题 解决办法 出现 Oracle Library is not loaded 错误提示&#xff0c;通常是因为 Navicat 无法找到或加载 Oracle 客户端库&#xff08;OCI.dll&#xff09;。要解决这个问题&#x…

IntelliJ IDEA 2024.1.4 (Ultimate Edition)找不到Add Framework Support解决方法

目录 背景: 解决方法&#xff1a; 步骤1: 步骤2&#xff1a; 步骤3&#xff1a; 创建Web项目的完整流程&#xff1a; 步骤1: 步骤2: 步骤3&#xff1a; 步骤4&#xff1a; Web优点: 背景: 我的IDE版本是IntelliJ IDEA 2024.1.4 (Ultimate Edition)&#xff0c;当我…

Java调用数据库 笔记05(查询篇)

一. 数据库&#xff08;通过各种驱动来实现调用&#xff09;&#xff1a; &#xff08;应用程序通过接口控制的各种数据库驱动来调用数据库-->jdbc方法&#xff09; 1.创建Java的普通class类 2.加载驱动 Class.forName("com.mysql.jdbc.Driver"); 3.驱动管理类…

nginx upstream转发连接错误情况研究

本次测试用到3台服务器&#xff1a; 192.168.10.115&#xff1a;转发服务器A 192.168.10.209&#xff1a;upstream下服务器1 192.168.10.210&#xff1a;upstream下服务器2 1台客户端&#xff1a;192.168.10.112 服务器A中nginx主要配置如下&#xff1a; log_format main…

C++之职工管理系统(细节Q)

指针初始化类 && 普通变量初始化类 抽象基类worker&#xff0c;只需编写 .h &#xff0c;无需 .cpp 底层实现 类 记得声明权限public&#xff01;&#xff01;&#xff01;不然默认private&#xff0c;主函数访问不了 记得继承父类 Worker * worker&#xff1a;指向Wo…

山东潍坊戴尔存储服务器维修 md3800f raid恢复

山东戴尔存储故障维修 存储型号&#xff1a;DELL PowerVault md3800f 故障问题&#xff1a;存储除尘后通电开机&#xff0c;发现有物理硬盘没有插到位&#xff0c;用户带电拔插了多块物理盘&#xff0c;导致关连的磁盘阵列掉线&#xff0c;卷失败&#xff1b; 处理方式&#xf…

RK3588/RK3588s运行yolov8达到27ms

前言 Hello&#xff0c;小伙伴们~~我最近做了一个比较有意思的东西&#xff0c;想起来也好久没有写博客了&#xff0c;就记录一下吧。希望和大家一起学习&#xff0c;一起进步&#xff01; 我简单介绍一下我最近做的这个东西的经过哈~上个月在B站上看到了一个博主发了一条视频关…

TomCat乱码问题

TomCat控制台乱码问题 乱码问题解决&#xff1a; 响应乱码问题 向客户端响应数据&#xff1a; package Servlet;import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servl…

对 Python 中 GIL 的理解

一.Python 中的 GIL Python 中的全局解释器锁&#xff08;Global Interpreter Lock&#xff0c;GIL&#xff09;是 CPython 解释器的一个机制&#xff0c;用来确保在多线程环境下&#xff0c;只有一个线程可以执行 Python 字节码&#xff0c;任何时刻只能有一个线程在执行 Pyt…

低代码可视化工具-uniapp页面跳转传参-代码生成器

uniapp页面跳转传参 在uni-app中&#xff0c;页面间的跳转和传参是一个常见的需求。uni-app提供了多种页面跳转方式&#xff0c;如uni.navigateTo、uni.redirectTo、uni.reLaunch、uni.switchTab、uni.navigateBack等&#xff0c;每种方式适用于不同的场景。以 页面跳转并传参…

win7自带壁纸丢失主题丢失

有时候盗版破解或者其他美化工具会导致win7自带的壁纸丢失&#xff0c;从个性化管理里面无法恢复原始的壁纸&#xff08;如下图&#xff09;&#xff0c;但是由于工作原因公司的电脑又不方便设置第三方的壁纸&#xff0c;所以找了一下解决方案。 经典问题&#xff0c;百度找到的…

软考中级软设背诵内容

冯诺依曼结构、哈佛结构 冯诺依曼结构: 程序指令和数据都采用二进制表示 程序指令和数据在同一个存储器中混合 程序的功能都由中央处理器&#xff08;CPU&#xff09;执行指令来实现 程序的执行工作由指令进行自动控制 SRAM、DRAM 与DRAM相比&#xff0c;SRAM集成率低、功…

详细剖析RocketMQ消息消费原理

本文参考转载至《RocketMQ技术内幕 第2版》 一. 消息消费概述 消息消费以组的模式开展&#xff0c;一个消费组可以包含多个消费者&#xff0c;每个消费组可以订阅多个主题&#xff0c;消费组之间有集群模式和广播模式两种消费模式。集群模式是当前主题下的同一条消息只允许被其…

hutool 解压缩读取源文件和压缩文件大小失败导致报错

前言 最近处理老项目中的问题&#xff0c;升级安全jar&#xff0c;发现hutool的jar在解压缩的时候报错了&#xff0c;实际上是很简单的防御zip炸弹攻击的手段&#xff0c;但是却因为hutool的工具包取文件大小有bug&#xff0c;造成了解压缩不能用&#xff0c;报错&#xff1a;…

2024年华为杯数学建模研赛(F题) 建模解析| 卫星轨道 | 小鹿学长带队指引全代码文章与思路

我是鹿鹿学长&#xff0c;就读于上海交通大学&#xff0c;截至目前已经帮2000人完成了建模与思路的构建的处理了&#xff5e; 本篇文章是鹿鹿学长经过深度思考&#xff0c;独辟蹊径&#xff0c;实现综合建模。独创复杂系统视角&#xff0c;帮助你解决研赛的难关呀。 完整内容可…