AeDet:方位不变的多视图3D物体检测

news2024/11/18 0:00:32

fe4a60688c55d7e045ec8fb8359181a7.png

代码:https://github.com/fcjian/AeDet

2dbf356f0e1bae76851e8f3178262f6f.png

项目地址:https://fcjian.github.io/aedet/

538ee29b1c735dca888ef8bcff9768ab.png

导读&动机

本篇论文探讨了自动驾驶领域中的多视图3D目标检测问题,特别关注了LSS(Lift-Splat-Shoot)方法的发展,该方法通过将图像特征从图像视图转换为鸟瞰图(Bird-Eye-View,BEV)来实现目标检测。然而,传统的卷积方法在BEV特征处理中忽视了BEV特征的径向对称性,导致了检测器的优化难度增加。

本文提出了一种新的Azimuth-equivariant Detector(AeDet),旨在通过建模BEV特征的径向对称性,实现方位不变的BEV感知。AeDet引入了方位等变卷积(Azimuthequivariant Convolution,AeConv)和方位等变锚点(Azimuthequivariant Anchor),用于统一BEV特征的表示和不同方位的目标预测。此外,还引入了一个与相机解耦的虚拟深度,以改善深度预测和深度网络的优化。在nuScenes数据集上进行的广泛实验表明,AeDet在对象方向和速度的准确性上取得了显著提高,并在NDS评估指标上实现了出色的性能,超越了最近的多视图3D目标检测方法。

本文的研究成果为自动驾驶领域的目标检测提供了有力的支持,有望推动自动驾驶技术的进一步发展。

本文贡献

  • 设计了一个方位等变卷积(Azimuth-equivariant Convolution,AeConv)来统一不同方位下的表示学习,并提取了方位不变的BEV特征。

  • 提出了一种新的方位角等变锚点(Azimuth-equivariant Anchor),它可以沿径向重新定义锚点,并统一了不同方位角的预测目标。

  • 引入了虚拟深度的概念,通过将深度预测与相机的内部参数解耦,使深度网络更容易进行优化。

相关工作

单视图3D目标检测:许多工作尝试直接从单视图图像中预测3D边界框。这些方法包括使用估计的深度图来改善图像表示的方法,将2D结构化多边形逆向投影到3D长方体中,以及通过解耦3D目标属性来使FCOS在3D检测中工作等。还有一些方法通过伪LiDAR将图像的深度信息转换为LiDAR伪装来实现3D边界框的预测。

多视图3D目标检测:现代3D目标检测框架通常可以分为基于LSS(Lift-Splat-Shoot)和基于查询的方法。LSS-based方法首先将图像特征从图像视图投影到BEV,然后通过BEV-based检测器处理BEV特征。基于查询的方法则通过将对象查询投影到图像视图并对图像特征进行采样,使用transformer进行3D目标检测。这些方法分别有不同的特点和方法,但都在多视图3D目标检测方面取得了进展。

单视图深度估计:单视图深度估计旨在从单幅图像中预测深度信息。这一领域的工作包括使用有监督学习方法、无监督学习方法以及半监督学习方法等。这些方法通常需要使用与深度信息相关的监督信号来进行训练,例如使用对应的地面真实深度、立体图像对、稀疏深度信息等。

本文方法

88e26135bd764600bd25a29fd52798c4.png

学习方位不变的BEV特征

  • 提出了Azimuth-equivariant Convolution(AeConv),一种方位等变卷积方法,用于提取径向方向上方位不变的BEV表示。

  • AeConv的核心思想是根据摄像机方位,以摄像机的焦点作为中心点,在每个位置旋转卷积的采样网格,以便在不同方位下学习相同的BEV特征表示。

具体步骤如下:

  1. 以摄像机的焦点作为中心点。在这个方位系统中,顺时针方向从BEV开始被定义为方位α,而自我方向则被定义为参考方向,其方位为0。

  2. 然后,针对每个位置的方位,使用一个旋转操作,将常规卷积的采样网格R旋转到一个新的采样网格Rrot。这个旋转过程由下式给出:

    f38f14fe0c5c0e8c3ecf24e0187796e6.png
  3. 接下来,使用基于新采样网格的卷积操作,将新的特征图y计算为:

    7952481335c4f878709c2c98fc6e40c2.png

AeConv的旋转采样网格始终位于摄像机的径向方向(如图3a所示),这意味着无论在不同的方位下,AeConv都能够对相同的图像样本学习相同的BEV特征,从而实现方位无关的特征表示。

865225932ed3f4b3b33fc7abae862b91.png

在多摄像头自动驾驶系统中,不同摄像头的位置不同,导致了不均匀的方位系统。为了使多视图的BEV特征具有统一的方位不变性,文章建议使用摄像机的平均中心点作为方位系统的近似中心点。

因此,文章构建了一个基于AeConv的BEV网络,通过将传统的卷积操作替换为提出的AeConv操作,实现了对沿径向方向具有方位不变性的BEV特征的提取。这一改进大大简化了BEV网络的优化过程,使其在多视图环境下更加稳健和高效。

方位等变的锚点:

  • 引入了Azimuth-equivariant Anchor(方位等变锚点),以实现不同方位下的统一目标预测。

  • 与传统方法不同,AeDet的锚点预测相对角度而不是绝对目标方向,并预测相对于方位的角度以及径向和垂直方向的中心偏移和速度。

  • 这种方位等变的锚点设计使得检测头可以在不同方位下进行相同的目标预测,减轻了预测任务的难度。

具体步骤如下:

  1. 锚点检测头在每个位置密集地定义锚点:

    c48a73710474fb3a9a16b79eb70b43ab.png

    为了简化预测,文章设计了一种方位等变锚点,使检测头能够为相同图像的不同方位预测相同的目标,即不受方位影响。检测头可以预测物体方向相对于方位的相对角度以及沿一致方向的速度/中心偏移。

  2. 类似于AeConv,文章根据每个位置的方位定义了一个方位等变锚点:

    633bb057a59a2a75cd4c7f8e6b965904.png

    然后,可以计算方位等变锚点与实际目标框之间的 box 残差(即预测目标)

    方向残差是物体方向相对于方位的相对角度:

    867001d790172558743ed69854ca41fa.png
  3. 文章在方位等变锚点中预测了它们沿着锚点方向及其正交方向的值。新的中心偏移(∇r, ∇o)和速度(vr, vo)可以通过以下方式计算:

    4de9b7737dae80a0c6c953c53c51209b.png

    需要注意的是,方位等变锚点的方向始终沿着相机的径向。因此,检测头可以基于方位等变方向来预测物体的方向、中心偏移和速度,生成与方位无关的预测目标,如图3b所示。

    4a817e1c3829ae0dbf6b56db982156f1.png

相机解耦虚拟深度:

  • 引入了相机解耦虚拟深度的概念,以简化多摄像头图像的深度预测。

  • 通过一个相机解耦的深度网络,预测与摄像机的内部参数无关的虚拟深度。

  • 使用虚拟深度与相机的内部参数之间的关系,将虚拟深度映射到真实深度,以获得准确的深度信息。

具体步骤如下:

  1. 虚拟深度预测:首先,文章利用一个解耦相机的深度网络来预测基于虚拟焦距的虚拟深度。这个虚拟深度是独立于相机的内在参数的。为了简化,文章采用了与BEVDepth相同的深度网络结构,但移除了其相机感知的注意模块。虚拟深度的分段尺寸(virtual bin size):

    9f9f9302c9fdcc9e21360779e2eb0a65.png
  2. 虚拟深度到真实深度的映射:虚拟深度可以根据经典的相机模型映射到真实深度。这意味着虚拟深度可以通过考虑相机的焦距等内在参数,将其转换为真实世界的深度:

    ab1dd1f81aed76a265118391bdfde0c3.png

    然而,由于不同相机具有不同的焦距,使用上述映射会导致多相机BEV特征在视图变换后具有不同的深度分辨率。为了解决这个问题,我们将变量分段大小映射到一个固定的大小。假设固定深度的分段大小定义为:

    a4191d00e83be125b0c042f6aead42e9.png

    最终的目标是预测这N个固定深度区间的分类分数(sf)。作者通过以下公式将这些分数从虚拟深度分数(sv)转换为真实深度分数:

77de05d3af332c538f63f0178842f44d.png

实验

实验结果

与SOTA的比较:

db000fc9ed43213b84773dfee235e4cb.png
6c9a59ac27dc772ce5a237cb6d1bd226.png

BEVDepth和AeDet在原始视图和旋转视图中的检测结果:

00e3c85574d9ff9745a4eb409a751614.png

BEVDepth和AeDet在原始视图和旋转视图中的表现:

e104885b9267eee31c1473fa2ee92c1d.png

消融实验

AeDet中各组件的消融研究:

eec60dc0ded439afae0d119c6ac46b6b.png

AeDet在单帧(single-frame)方案下的性能评估结果:

aa831a92caa527eba45a80fdfba5f6a4.png

结论

  • 提出了一种名为AeDet的检测器,旨在实现方位无关的3D物体检测。AeDet采用了多种创新性的技术,包括Azimuth-equivariant Convolution(AeConv)和azimuth-equivariant anchor,以实现方位不变性,并采用camera-decoupled virtual depth来统一深度预测。

  • 在nuScenes数据集上,AeDet取得了显著的性能提升,达到了62.0%的NDS,超越了现有方法,特别是在物体的方向和速度预测方面取得了卓越的改进。

  • 这项工作强调了AeConv和azimuth-equivariant anchor在提高3D物体检测性能方面的有效性,尤其是在多相机视图下。

总的来说,这篇论文为解决多相机环境下的3D物体检测问题提供了新的思路和方法,取得了令人瞩目的性能提升,为自动驾驶和环境感知领域的研究和应用提供了有价值的见解和工具。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

3735bccb874617028a77a48ed0b6bf5b.jpeg

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

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

相关文章

模拟实现C语言--strcat函数

模拟实现C语言–strcat函数 文章目录 模拟实现C语言--strcat函数一、strcat函数是什么?二、使用示例二、模拟实现 一、strcat函数是什么? 作用是把源数据追加到目标空间 char * strcat ( char * destination, const char * source );源字符串必须以 ‘…

Springboot整合规则引擎

Springboot整合Drools 规则引擎 1.添加maven 依赖坐标&#xff0c;并创建springboot项目 <!-- drools规则引擎 --> <dependency><groupId>org.drools</groupId><artifactId>drools-compiler</artifactId><version>7.6.0.Final<…

maven-resources-production:trunk-auth: java.lang.NegativeArraySizeException

ijdea启动auth项目报错&#xff1a; maven-resources-production:trunk-auth: java.lang.NegativeArraySizeException 一直在本地启动不起来&#xff0c;记录下操作步骤 第一步&#xff1a;将ijdea中的缓存都清理掉了&#xff0c;不行 第二步&#xff1a;将maven中的对应项目…

如何将内网ip映射到外网?快解析内网穿透

关于内网ip映射到外网的问题&#xff0c;就是网络地址转换&#xff0c;私网借公网。要实现这个&#xff0c;看起来说得不错&#xff0c;实际上是有前提条件的。要实现内网ip映射到外网&#xff0c;首先要有一个固定的公网IP&#xff0c;可以从运营商那里得到。当你得到公网IP后…

Mybatis动态数据源及其原理

一、引言 作者最近的平台项目需要一个功能&#xff0c;数据库是动态的&#xff0c;sql也是动态的&#xff0c;所以需要动态注入数据源&#xff0c;并且能够在运行过程中进行切换数据库。作者在这里分享一下做法&#xff0c;以及Mybatis这样做的原理。 二、分析 接下来分析一下…

【案例教学】华为云API图引擎服务 GES的便捷性—AI帮助快速处理图片小助手

云服务、API、SDK&#xff0c;调试&#xff0c;查看&#xff0c;我都行 阅读短文您可以学习到&#xff1a;人工智能AI快速处理图片 1 IntelliJ IDEA 之API插件介绍 API插件支持 VS Code IDE、IntelliJ IDEA等平台、以及华为云自研 CodeArts IDE&#xff0c;基于华为云服务提供…

LeetCode //C - 637. Average of Levels in Binary Tree

637. Average of Levels in Binary Tree Given the root of a binary tree, return the average value of the nodes on each level in the form of an array. Answers within 1 0 − 5 10^{-5} 10−5 of the actual answer will be accepted. Example 1: Input: root [3…

学Python的漫画漫步进阶 -- 第十三步

学Python的漫画漫步进阶 -- 第十三步 十三、图形用户界面13.1 Python中的图形用户界面开发库13.2 安装wxPython13.3 第一个wxPython程序13.4 自定义窗口类13.5 在窗口中添加控件13.6 事件处理13.7 布局管理13.7.1 盒子布局管理器13.7.2 动动手——重构事件处理示例13.7.3 动动手…

赴日开发工程师工作怎么找?

想要做赴日开发工作的途径有一下几种&#xff1a;一个是自己去联系日本的企业&#xff0c;当然这种的前提是你日语完全没有问题&#xff0c;但是现在很少有企业愿意直接与求职人员沟通。第二个就是你有IT技术&#xff0c;但是不会日语&#xff0c;年纪不大的可以来日本读个学校…

单目标追踪——【工具】汉明窗(Hamming window)

目录 汉明窗&#xff08;Hamming window&#xff09;原理作用代码实例可视化总结 汉明窗&#xff08;Hamming window&#xff09; 原理 汉明&#xff08;Hanning&#xff09;窗可以看成是升余弦窗的一个特例&#xff0c;汉宁窗可以看作是3个矩形时间窗的频谱之和&#xff0c;…

webpack实战:最新QQ音乐sign参数加密分析

文章目录 1. 写在前面2. 接口抓包分析3. 扣webpack代码4. 补浏览器环境5. 验证加密结果 1. 写在前面 现在&#xff01;很多的网站使用Webpack加载和处理JS文件。所以对于使用了Webpack加载的JS代码&#xff0c;一旦它们被打包并在浏览器中执行&#xff0c;通常是难以直接阅读和…

选择正确的开发框架:构建高效、可维护的应用程序

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 引言 在现代软件开发中…

python如何打包成应用

前几天有学生问&#xff0c;开发好的python代码如何打包给对方使用&#xff1f;对方没有python的安装执行环境。 python是一个强大的编程开发工具&#xff0c;它不仅仅是做一些命令行或脚本运行工具&#xff0c;还可以开发桌面、web等应用。 本文就介绍使用pyinstall如何把py…

GIS前端编程-地理事件动态模拟

GIS前端编程-地理事件动态模拟 动画特效功能图形闪烁要素轨迹移动 动画特效功能 目前&#xff0c;GIS应用除了涉及地理位置信息&#xff0c;还要结合时间维度&#xff0c;这样才能更加真实地模拟现实世界的事物。因此在实际项目应用中&#xff0c;静态的&#xff08;位置固定不…

Redis混合模式持久化原理

前言 前面文章中我们也介绍过Redis的持久化方式有两种&#xff1a;rdb持久化和aof持久化&#xff0c;具体详情可查看之前文章redis持久化。rdb持久化还是aof持久化它们都有各自的缺点。 rdb和aof缺点 rdb持久化&#xff1a;由于是定期对内存数据快照进行持久化&#xff0c;因此…

【智能家居-大模型】行业专题报告:ChatGPT等大模型催化智能家居行业发展

&#xff08;报告出品方/作者&#xff1a;华安证券&#xff0c;马远方&#xff09; 1 智能家居&#xff1a;ChatGPT 等大模型为行业发展带来新机遇 1.1 现状&#xff1a;智能家居产品的用户体验&#xff08;交互能力、智能化水 平&#xff09;及安全性待提升 智能家居&#…

编程获取图像中的圆半径

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 即将推出EmguCV的教程&#xff0c;请大家还稍作等待。 之前网友咨询如何获得图像中圆形的半径&#xff0c;其中有两个十字作为标定…

如何实现一个简单的深度优先搜索(DFS)算法?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 实现深度优先搜索⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前…

Qt Quick 之 QML 与 C++ 混合编程详解

Qt Quick 之 QML 与 C 混合编程详解 一、Qt Quick 之 QML 与 C 混合编程详解在 QML 中使用 C 类和对象实现可以导出的 C 类Q_INVOKABLE 宏Q_ENUMSQ_PROPERTY注册一个 QML 中可用的类型注册 QML 类型在 QML 中导入 C 注册的类型完整的 colorMaker 实例导出一个 C 对象为 QML 的属…

伴随矩阵与可逆矩阵

目录 伴随矩阵的概念与公式 可逆矩阵的概念与定理 逆矩阵的运算性质 伴随矩阵的概念与公式 伴随矩阵是一个与给定矩阵相关的矩阵&#xff0c;它的元素是给定矩阵的代数余子式。 给定一个nn的方阵A&#xff0c;其元素为aij&#xff0c;则A的伴随矩阵adj(A)是一个nn的方阵&…