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

相关文章

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

Go路由注册方法详解

《Go路由注册方法详解》Go语言中,http.NewServeMux()和http.HandleFunc()是两种不同的路由注册方式,前者创建独立的ServeMux实例,适合模块化和分层路由,灵活性高... 目录Go路由注册方法1. 路由注册的方式2. 路由器的独立性3. 灵活性4. 启动服务器的方式5.

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

Idea实现接口的方法上无法添加@Override注解的解决方案

《Idea实现接口的方法上无法添加@Override注解的解决方案》文章介绍了在IDEA中实现接口方法时无法添加@Override注解的问题及其解决方法,主要步骤包括更改项目结构中的Languagel... 目录Idea实现接China编程口的方法上无法添加@javascriptOverride注解错误原因解决方

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误