DA-BEV: 3D检测新 SOTA!一种强大的深度信息挖掘方法(CVPR 2023)

2024-03-17 03:30

本文主要是介绍DA-BEV: 3D检测新 SOTA!一种强大的深度信息挖掘方法(CVPR 2023),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者 | 派派星  编辑 | 极市平台

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【3D目标检测】技术交流群

后台回复【3D检测综述】获取最新基于点云/BEV/图像的3D检测综述!

导读

 

本文针对之前 DETR-based 的 3D 检测器中忽略了空间交叉注意力中的深度信息,并在检测物体时产生了严重的模糊问题进行了研究。为了解决这个问题,本文提出了深度感知的空间交叉注意力(DA-SCA) 来编码深度信息,并提出了深度对比学习 (DCL) 来帮助模型以对比的方式学习深度。 

ba9bbd8dbc92520c2d1fe5b78b239b6f.png

Title: DA-BEV: Depth Aware BEV Transformer for 3D Object Detection
Paper: https://arxiv.org/pdf/2302.13002v1.pdf

导读

本文提出了一种隐式深度学习方法 DA-BEV,这是一种以环视图像作为输入,在 BEV 视角下利用 Transformer 进行 3D 目标检测的方法。该方法包括两个关键部分:深度感知空间交叉注意力 (Depth-Aware Spatial Cross-AttentionDA-SCA)模块和深度对比学习 (Depth-wise Contrastive LearningDCL)。DA-SCA 模块负责将深度信息融合至 BEV 特征中,以至于能更好地捕捉目标的深度信息。而 DCL 则通过对正负 BEV 特征进行采样,进一步增强了 BEV 特征的深度感知能力。实验结果表明,DA-BEV 方法在 nuScenes 数据集上取得了 SOTA 检测性能。源码即将开源,敬请期待!

BEV感知

68084c95185c016fbc497bc84535d45f.png

相当于给自动驾驶开启了“上帝视角”,能够让车辆无遮挡的“看清”道路上的实况信息,在BEV视角下统一完成感知和预测任务。

隐式深度学习

隐性深度学习的主要思想是在不需要显式定义输出的情况下学习目标函数。与传统的显式表示方法相比,隐性深度学习不需要人工标注的数据来指定输出,因此可以更好地适应各种复杂的任务和数据类型。

创作背景

3D 目标检测是自动驾驶和机器人等许多应用中的基本任务。相较于基于激光雷达的方法,基于相机的方法具有成本低、感知范围长、可以识别纯视觉信号(如红绿灯和停止标志)等优势。但是,相机方法面临的一个关键挑战是缺乏深度信息

前人研究表明,高质量的深度信息能够显著提高 3D 检测性能,因此当前许多研究工作致力于从相机图像中恢复深度信息,然而,深度估计仍是一个不适定问题。现有主流研究采用的两种方法,一种是显式深度学习方法:通过深度估计网络生成伪激光雷达信息,再用激光雷达检测器进行 3D 检测,另一种是隐式深度学习方法:直接预测三维框而不预测深度。

显示学习方法

结果提升方法 (Result-lifting)

将 3D 检测分解为 2D 检测和深度预测,并根据几何特性和约束条件预测对象。

特征提升方法 (Feature-lifting)

将图像特征提升到三维空间,通过预测深度图并将其提升到伪激活雷达来模拟激活雷达信号。

隐式学习方法

DETR3D、BEVFormer、PETR

使用目标查询 (object query) 来探测特征并为每个查询输出预测,而不预测深度。

本文提出了一种新方法,通过在空间交叉注意力SCA)模块中引入深度信息,同时提出了深度对比学习方法 (DCL),有效提高了 3D 检测性能。该方法在nuScenes数据集上得到了较好的性能,超过了现有的基准和最先进方法。

方法

动机

d977467579288fd854d16db1c713a5cc.png
图1. 基于 DETR 的 3D 检测器中常见歧义问题

DA-BEV 的设计动机来自于以往 DETR-based 3D 检测器的常见问题。具体来说,以 BEVFormer 为例,其会将同一光线上的不同 3D 参考点被映射到相同的摄像机参考点上,导致检测头难以确定目标在深度方向上的确切位置,可能导致重复预测。

概述

e44e3c89221552d519d0d4584ec16320.png
图2. 本文方法的训练Pipeline

本文方法主要解决的是,之前 DETR-based 3D 检测器在处理图像特征时存在的深度信息缺失问题。本方法将深度信息编码到查询 (query) 和 (value) 中,并提出了一个深度感知的空间交叉注意力模块和一个深度感知的对比学习方法,以增强深度信息的学习和比较。

DA-BEV 的训练流程分为四个部分,包括特征提取BEV编码器深度感知的空间交叉注意力模块深度对比学习,最后通过 DETR 检测器对 BEV 特征进行预测,得出物体的 3D 边界框和类别信息。

深度感知的空间交叉注意力

c0bcb74c11654cb94ab39abc376c6991.png
图3. DA-SCA与以往作品中SCA的对比

在传统的 DETR-based 3D 检测器中,空间交叉注意力SCA)没有考虑深度信息。本文提出了深度感知的空间交叉注意力DA-SCA),通过在查询和值中引入深度编码来解决这一问题。与此前的方法相比,本文的 DA-SCA 采用的是不均匀的深度采样方式,可以更好地提取深度信息。实验结果表明,本文方法可以显著提高目标检测的性能。

在 DA-SCA中,通过将深度信息包含在位置编码中,将每个像素的深度与其位置信息一起编码。具体地,DA-SCA 采用了可变形注意力机制,使得查询点和值点可以自适应地调整形状,从而更好地适应不同的物体形状。此外,由于 DA-SCA 中的每个查询点都有自己的深度编码,因此可以更好地区分具有不同深度的像素,从而使深度信息更好地融入到空间交叉注意力中。

深度对比学习

深度对比学习 (DCL) 用于鼓励模型学习深度和其在 BEV 特征中的关系。

DCL 为每个对象分配一个对象射线,然后将其上的点映射到BEV特征上。对于每个对象,从中采样  个 BEV 特征作为正样本,  个作为负样本。对于每个特征,使用其深度值和其在对象线上的 GT 深度值之差来确定其是正样本还是负样本。

通过将正样本和负样本输入到 box head 和 cls head,来进行DCL训练。对于正样本,使用对象的 GT 类别进行监督,而对于负样本则使用 “no object” 。此对比损失函数的目的是使预测深度趋近于 GT 深度,并鼓励模型为正样本输出高分类分数,为负样本输出低分类分数。

实验

771257fa8a1c419502e411c50cde7381.png
表1. 在nuScenes数据集的验证集上对比结果
  • DA-BEV-S 模型相比于 BEVFormer 模型,在NDS和mAP上分别提升了2.2和1.2个点。

  • 虽然 BEVDet4D-Based 模型的 NDS 与 DA-BEV 相同,但 GFLOPS 要高得多,并且mAP 低于 DA-BEV。

a73e474df89e0c74f1e9b5c1eed2f0f3.png
表2. 模型可扩展性对比
  • DA-BEV 的 mAP 比之前的最优模型 BEVDepth 高1.2个点。

  • 此外,之前的 baseline 模型 BEVFormer 与 DA-BEV: DA-BEV在 mAP 和 NDS 两个指标上分别比 BEVFormer 高出 3.4 和 3.1。这说明 DA-BEV 可以适应更强的预训练模型,并在各项指标上表现出色。

d25b2726a09a21684eaefc4841af17f7.png
  • 表.3 & 表.4 展示了模型的每个组成部分的有效性。

  • 通过逐步增加不同的组件,模型性能都获得了进一步的提升。

e24e4e78fbc4ac11175a8b9c9099fc48.png
图4. DA-BEV和基线模型BEVFormer的预测可视化
  • 在图4(b)中,沿深度轴的重复预测被减少了。这个可视化证实了我们的模型可以解决在动机小节中提到的歧义问题。

  • 但是,当两个不同对象的对象光线重叠时,DA-BEV的预测也存在问题。可能存在两个潜在原因导致这个问题。首先,后面的对象被前面的对象遮挡。其次,在我们的 DCL 中,这样深度轴上的两个对象可能会成为彼此的负面例子,导致预测遗漏。

总结

本文针对之前 DETR-based 的 3D 检测器中忽略了空间交叉注意力中的深度信息,并在检测物体时产生了严重的模糊问题进行了研究。为了解决这个问题,本文提出了深度感知的空间交叉注意力(DA-SCA) 来编码深度信息,并提出了深度对比学习 (DCL) 来帮助模型以对比的方式学习深度。实验结果表明,DA-BEV 在不使用额外技巧的情况下取得了显著的改进,并达到了 SOTA 表现。未来,作者计划进一步将这种方法应用到更多检测器中,并研究隐式深度学习与显式深度学习的差异,并尝试将它们结合起来。

往期回顾

史上最全综述 | 3D目标检测算法汇总!(单目/双目/LiDAR/多模态/时序/半弱自监督)

3126e38b4cd08ba8c06a300eeac37908.png

国内首个自动驾驶学习社区

近1000人的交流社区,和20+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

816d23bba66db76579db605187477551.jpeg

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向;

467bf2b80152e2a316fc9c6a4bc0f6ad.jpeg

添加汽车人助理微信邀请入群

备注:学校/公司+方向+昵称

这篇关于DA-BEV: 3D检测新 SOTA!一种强大的深度信息挖掘方法(CVPR 2023)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/817660

相关文章

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步