当前位置: 首页 > news >正文

【论文笔记】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预测物体。

相关文章:

【论文笔记】BEVNeXt: Reviving Dense BEV Frameworks for 3D Object Detection

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

基于open-gpu-kernel-modules的p2p vram映射bar1提高通信效率

背景 bar1 Base Address Register 1 用于内存映射的寄存器&#xff0c;定义了设备的内存映射区域&#xff0c;BAR1专门分配给gpu的一部分内存区域&#xff0c;允许cpu通过pcie总线直接访问显存VRAM中的数据。但bar1的大小是有限的&#xff0c;在常规的4090上&#xff0c;bar1只…...

java之斗地主部分功能的实现

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

我的AI工具箱Tauri版-VideoIntroductionClipCut视频介绍混剪

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

【鸿蒙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 中&#xff0c;Mapper 文件扮演了至关重要的角色&#xff0c;它通过 SQL 映射文件来定义数据库查询操作和 Java 对象之间的映射关系。Mapper 文件通常是以 XML 格式存储的&#xff0c;包含了 SQL 语句以及与 Java 对象的对应关系。在本篇文章中&#xff0c;我…...

(11)(2.1.2) DShot ESCs(二)

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

yolov5/8/9模型在COCO分割数据集上的应用【代码+数据集+python环境+GUI系统】

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

技术周总结 09.16~09.22 周日(架构 C# 数据库)

文章目录 一、09.16 周一1.1&#xff09;问题01&#xff1a; 软件质量属性中"质量属性场景"、"质量属性环境分析"、"质量属性效用树"、"质量属性需求用例分析"分别是什么&#xff1f;1.2&#xff09;问题02&#xff1a; 软件质量属性中…...

【java实现json转化为CSV文件】

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

MySQL索引知识个人笔记总结(持续整理)

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

ReKep——李飞飞团队提出的让机器人具备空间智能:基于视觉语言模型GPT-4o和关系关键点约束

前言 由于工厂、车厂的任务需求场景非常明确&#xff0c;加之自今年年初以来&#xff0c;我司在机器人这个方向的持续大力度投入(包括南京、长沙两地机器人开发团队的先后组建)&#xff0c;使得近期我司七月接到了不少来自车厂/工厂的订单&#xff0c;比如其中的三个例子&…...

[Java并发编程] synchronized(含与ReentrantLock的区别)

文章目录 1. synchronized与ReentrantLock的区别2. synchronized的作用3. synchronized的使用3.1 修饰实例方法&#xff0c;作用于当前实例&#xff0c;进入同步代码前需要先获取实例的锁3.2 修饰静态方法&#xff0c;作用于类的Class对象&#xff0c;进入修饰的静态方法前需要…...

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的生命周期有三种&#xff1a; clean&#xff1a;清除项目构建数据&#xff0c;较为简单&#xff0c;不深入探讨&a…...

Python办公自动化教程(001):PDF内容提取

1、Pdfplumber介绍 pdfplumber的github地址&#xff1a; https://github.com/jsvine/pdfplumber/【介绍】&#xff1a;pdfplumber 是一个用于处理 PDF 文件的 Python 第三方库&#xff0c;它提供了一种方便的方式来提取 PDF 文件中的文本、表格和其他信息。【功能】&#xff…...

HarmonyOS鸿蒙开发实战(5.0)自定义全局弹窗实践

鸿蒙HarmonyOS开发实战往期文章必看&#xff1a; HarmonyOS NEXT应用开发性能实践总结 最新版&#xff01;“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门到精通&#xff09; 非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&am…...

【AI学习】了解OpenAI o1背后的self-play RL:开启新的智能道路

在ChatGPT刚刚出来的时候&#xff0c;沐神关于ChatGPT有一段视频&#xff0c;只有几分钟&#xff0c;却是讲得极其透彻的一段。大概意思就是&#xff0c;过去的AI智能水平&#xff0c;比如五年前&#xff0c;大概相当于人类5秒钟思考的程度&#xff0c;包括自动驾驶&#xff0c…...

Java项目实战II基于Java+Spring Boot+MySQL的车辆管理系统(开发文档+源码+数据库)

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 "随着…...

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…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架&#xff0c;实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...