MonoDETR: Depth-guided Transformer for Monocular 3D Object Detection 论文解读

文章目录

  • 1.Abstract
  • 2. Introduction
  • 3. Related work
    • DETR base methods
  • 4. Method
    • 4.1Feature Extraction
      • Visual Features
      • depth features
      • foreground depth map
    • 4. 2 Depth guided transformer
      • Visual and depth encoders
      • Depth-guided-decoder
      • Depth positional encoding
    • 4. 3 Detection heads and loss
      • bipartite matching
      • overall loss
    • 4.4 Plug-and-play for Multi-view Detectors
  • 5 Experiments

1.Abstract

单目目标检测在自动驾驶领域,一直是一个具有挑战的任务。现在大部分的方式都是沿用基于卷积的2D 检测器,首先检测物体中心,后通过中心附近的特征去预测3D属性。

但是仅仅通过局部的特征去预测3D特征是不高效的,且并没有考虑一些长距离的物体之间的深度关系,丢失了很多的有意义的信息。

在本作中,作者介绍了一种基于DETR框架的用于单目检测的网络。作者通过对原始的transformer网络进行改造,加入了以深度为引导的transformer结构。作者将此网络结构命名为MonoDETR。

具体来说,作者在使用视觉encoder去提取图像的特征外,还引入了一种depth encoder去预测前景深度地图,后续将其转化为depth embeddings。之后就和传统的DETR或者BevFormer一致,使用3D object query去与前述生成的vision embeding 和 depth embending分别做self 和 cross attention,通过decoder得到最终的2D以及3D结果。通过此种方法,每一个3D物体都是通过depth-guided regions(embedding)去获取的3D信息,而非限制在局部的视觉特征。

在这里插入图片描述

2. Introduction

相对于基于lidar和multi-view 的3D检测任务,单目3D检测是相对较困难的。因为没有可依赖的3D深度信息以及多视角几何学关系。所以相应的检测结果也不会那么的好。

在这里插入图片描述
为了解决这些问题,我们根据DETR的2
D检测框架提出了本文的网络结构。如上图所示b所示:此结构包括两个平行部分,分别为vision encoder 和 depth encoder。

在这里插入图片描述

划重点:如何去学习深度信息呢?这里论文使用了了一个“轻”的监督去获取输入图像的深度信息。具体是在在image backbone后接了一个depth predictor,用于输出前景深度地图。同时在过程中产生的depth feature会输入到紧接着的depth encoder,用来提取深度信息。同时我们对输出的前景地图进行监督。此监督仅仅是由我们的labeled object构成即可,也就是一个discrete depth of objects。这样就不需要稠密的深度地图label。减轻了对数据的压力。又能获取使用的深度信息。

在这两个encoder后,继续接一个transformer结构,使用object query从视觉embeding和depth embeding中聚合信息,从而对物体进行检测。

此处的优势就比较明显,相对于目前自动驾驶领域的各种繁重的数据pipeline,此方法仅仅需要常规的物体标注结果即可完成全部的检测流程。而无需额外的dense depth maps或者Lidar信息。且在kitti中取得了SOTA的成绩。

同时这里边提到的depth encoder也可以作为一个plug and play的插件直接用来增强多视觉3D检测效果,比如BEVFormer。(当然我看来这几个点,似乎没啥用~)

3. Related work

咱自己看论文哈~和本文关系不太大

突然看到有个有点意思的介绍,这里简单说下:

DETR base methods

  1. MonoDTR: 仅仅引入transformer去增强数据提取而已。还是提取的局部特征,基于object center这种,严格上不是基于DETR的方法,具体可以参考:MonoDTR解读
  2. DETR3D 和PETR v2 : multi view 3D检测,使用了detr结构,但是没用到transform base的encoder。相应的也就只用了视觉信息,无深度信息。具体参考PETR v2解读 DETR 3D
  3. BEVFormer:加了个从image feature到bev feature的encoder进行信息提取。后续在bev空间进行3D检测。GOOD!BEVFormer 解读

4. Method

又到了喜闻乐见的看图说论文环节,上图

在这里插入图片描述

4.1Feature Extraction

Visual Features

在这里插入图片描述
无需过多赘述,用来提取图像高阶特征的常规cnn网络,基本收敛在使用resnet上。这里设置的下采样倍率是1/8, 1/16, 1/32。这里论文中没有对三层fpn的结果都使用,而是选择了语义信息最丰富的最后一层作为visual feature输入vision encoder。

depth features

在这里插入图片描述
这里深度特征,先将从backbone提取的三层特征都进行了融合(element-wise addition),主要目的是保留小目标的特征。之后使用3*3的网络提取depth feature。

foreground depth map

为了让深度特征更加的高效以及丰富。这里添加了一个额外的深度监督。通过将depth feature经过一个1*1的卷积,生成一个前景深度图。而我们通过离散的基于gt的深度标签对其进行监督。具体规则:在2D bbox内的pixel统一赋值为物体的深度。如果是在两个bbox内的pixel,则选择离相机近的距离值赋值。同时这里对深度也进行了离散编码。参考的方法见: Categorical depth distributionnetwork for monocular 3d object detection

简单总结:在检测距离 [ d x , d y ] [d_x, d_y] [dx,dy] 内使用linear increasing discretization (LID)分布对其进行编码,一共编码成k+1个bins。其中k个为前景,最后一个为背景。具体使用公式如下:
在这里插入图片描述
其中 δ \delta δ 是相关参数公差。可以根据检测距离和需要的bins数量得到。

4. 2 Depth guided transformer

Visual and depth encoders

在这里插入图片描述
作者使用两个encoder对获取的图像和深度feature进行进一步的全局特征提取。这里作者也贴心的将使用transformer时需要将feature flatten的操作通过对feature维度的描写给大家展示出来了。维度分别为 H ∗ W / 1 6 2 H*W/16^2 HW/162 H ∗ W / 3 2 2 H*W/32^2 HW/322。具体构成就是每一个encoder block由一个self-attention 和 ffn构成。encoder的作用在这里就是将local feature 升格成global feature了。由于vision feature含有更复杂的信息,所以使用了3个block去更好的提取vision 信息。

Depth-guided-decoder

在这里插入图片描述
划重点:核心部分。

根据从encoder提取的全局特征 f D e f_D^e fDe f V e f_V^e fVe,作者设计了基于深度引导的decoder结构。使用预先设定的object queries q去和 f D e f_D^e fDe f V e f_V^e fVe做cross attention。每一个block包含了一个depth cross-attention、一个inter-query self-attention、一个视觉cross-attention和做一个FFN。这样输出的object embedings就既包括视觉信息,又包括深度信息,可以更好的进行预测工作。

为了更好的融合提取信息,作者一共使用了3个block来做decoder工作。

Depth positional encoding

在transformer中需要position embeding。这里没有像其他结构一样,直接使用一个sin函数来作为position encoding。而是使用了一个可学习的depth positional encodings。具体细节是使用前序得的depth map去差值获取与 f D e f_D^e fDe 相对应的深度信息,然后与 f D e f_D^e fDe 进行逐点相加。这样object query就能更好的去capture scene-level 深度信息并更好的理解3D 几何信息。

4. 3 Detection heads and loss

bipartite matching

使用二分匹配,设计了两组metric,一组是2D信息,包含类别、2D位置、2D大小。第二组包含3D位置,3D大小,orientation。理论上应该是使用两组cost 的和去做匹配。但是因为3D信息比较难学,且不稳定,会导致matching失败,所以是仅仅使用了第一组信息去做匹配。

overall loss

2D loss+3D loss + depth map loss
公式如下:
在这里插入图片描述

4.4 Plug-and-play for Multi-view Detectors

主要结论是可以加入到multi view的目标检测中,作为3D信息的补充,可以得到更好的结果。不一一赘述了。工程化部署时,收益肯定没有付出的算力多。(作者不要来打我)

5 Experiments

我们是最棒的,所有的消融实验的能证明现在的结构最好~我就只贴下map结果吧。

在这里插入图片描述

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

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

相关文章

【vue2第十一章】v-model的原理详解 与 如何使用v-model对父子组件的value绑定 和修饰符.sync

v-model的原理详解 v-model的本质就是一个语法糖,实际上就是 :value"msg" 与 input"msg $event.target.value" 的简写。 :value"msg" 从数据单向绑定到input框,当data数据中的msg内容一旦改变,而input框数据…

OpenCV(十八):图像直方图

目录 1.直方图统计 2.直方图均衡化 3.直方图匹配 1.直方图统计 直方图统计是一种用于分析图像或数据的统计方法,它通过统计每个数值或像素值的频率分布来了解数据的分布情况。 在OpenCV中,可以使用函数cv::calcHist()来计算图像的直方图。 calcHist(…

uni-app之android离线打包

一 AndroidStudio创建项目 1.1,上一节演示了uni-app云打包,下面演示怎样androidStudio离线打包。在AndroidStudio里面新建空项目 1.2,下载uni-app离线SDK,离线SDK主要用于App本地离线打包及扩展原生能力,SDK下载链接h…

电商平台api对接货源

如今,电商平台已经成为了人们购物的主要途径之一。 然而,对于电商平台来说,货源对接一直是一个比较棘手的问题。为了解决这个问题,越来越多的电商平台开始使用API来对接货源。 API,即应用程序接口,是一种允…

分支创建查看切换

1、初始化git目录,创建文件并将其推送到本地库 git init echo "123" > hello.txt git add hello.txt git commit -m "first commit" hello.txt$ git init Initialized empty Git repository in D:/Git/git-demo/.git/ AdministratorDESKT…

django中配置使用websocket终极解决方案

django ASGI/Channels 启动和 ASGI/daphne的区别 Django ASGI/Channels 是 Django 框架的一个扩展,它提供了异步服务器网关接口(ASGI)协议的支持,以便处理实时应用程序的并发连接。ASGI 是一个用于构建异步 Web 服务器和应用程序…

ipad手写笔什么牌子好?适合开学买的电容笔推荐

随着社会和经济水平的不断提高,对电容笔的使用日益增加。国产平替的电容笔和原装苹果的电容笔没有太大的区别,不管是功能还是手感都很像,书写上的笔锋也很流畅,这让我很惊讶,因为其的价格很便宜,但其的体验…

【实训项目】精点考研

1.设计摘要 如果说高考是一次能够改变命运的考试,那么考研应该是另外一次。为什么那么多人都要考研呢?从中国教育在线官方公布是考研动机调查来看,大家扎堆考研的原因大概集中在这6个方面:本科就业压力大,提升竞争力、…

开源照片管理服务LibrePhotos

本文是为了解决网友 赵云遇到的问题,顺便折腾的。虽然软件跑起来了,但是他遇到的问题,超出了老苏的认知。当然最终问题还是得到了解决,不过与 LibrePhotos 无关; 什么是 LibrePhotos ? LibrePhotos 是一个自托管的开源…

学习高级数据结构:探索平衡树与图的高级算法

文章目录 1. 平衡树:维护数据的平衡与高效性1.1 AVL 树:严格的平衡1.2 红黑树:近似平衡 2. 图的高级算法:建模复杂关系与优化2.1 最小生成树:寻找最优连接方式2.2 拓扑排序:解决依赖关系 拓展思考 &#x1…

支付参考文档

支付宝官方提供的样例代码与支付宝通信: 小程序文档 - 支付宝文档中心支付宝文档中心https://docs.open.alipay.com/api_1/alipay.trade.query 参考sdk示例: 小程序文档 - 支付宝文档中心支付宝文档中心https://docs.open.alipay.com/api_1/alipay.tra…

unity界面上Global 与Local xyz- right up forward

gloabal 如果要沿这个方向移动就比较困难 local下就不一样了

docker高级(DockerFile解析)

1、构建三步骤 编写Dockerfile文件 docker build命令构建镜像 docker run依镜像运行容器实例 2、DockerFile构建过程解析 Dockerfile内容基础知识 1:每条保留字指令都必须为大写字母且后面要跟随至少一个参数 2:指令按照从上到下,顺序执行…

【2023集创赛】加速科技杯二等奖作品:基于ATE的电源芯片测试设计与性能分析

本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)加速科技杯二等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子礼…

c++11 标准模板(STL)(std::basic_stringstream)(四)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_stringstream;(C11 前)template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::alloc…

C++算法 —— 动态规划(1)斐波那契数列模型

文章目录 1、动规思路简介2、第N个泰波那契数列3、三步问题4、使用最小花费爬楼梯5、解码方法6、动规分析总结 1、动规思路简介 动规的思路有五个步骤&#xff0c;且最好画图来理解细节&#xff0c;不要怕麻烦。当你开始画图&#xff0c;仔细阅读题时&#xff0c;学习中的沉浸…

大数据可视化大屏实战项目(10)无线网络大数据平台—HTML+CSS+JS【源码在文末】(可用于比赛项目或者作业参考中)

大数据可视化大屏实战项目&#xff08;10&#xff09;无线网络大数据平台—HTMLCSSJS【源码在文末】&#xff08;可用于比赛项目或者作业参考中&#x1f415;&#x1f415;&#x1f415;&#xff09; 一&#xff0c;项目概览 ☞☞☞☞☞☞项目演示链接&#xff1a;http://59.…

Langchain使用介绍之outparser 和memory

上一篇博客中对Langchain中prompt进行了详细的介绍&#xff0c;此篇博客将介绍Langchain中的outparser和memory。当调用大模型生成内容时&#xff0c;返回的内容默认是string类型&#xff0c;这对于我们获取response中的某些内容信息可能会带来障碍&#xff0c;例如返回的内容本…

MyBatis中至关重要的关系映射----全方面介绍

目录 一 对于映射的概念 1.1 三种关系映射 1.2 resultType与resultMap的区别 resultType&#xff1a; resultMap&#xff1a; 二&#xff0c;一对一关联查询 2.1 嵌套结果集编写 2.2 案例演示 三&#xff0c;一对多关联查询 3.1 嵌套结果集编写 3.3 案例演示 四&…

统计教程|PASS实现两计量指标的的Pearson相关分析时的样本量估计

在临床研究中我们经常会研究两个观察指标间是否有联系&#xff0c;如人的身高与体重、体温与脉搏次数、药物剂量与反应等&#xff0c;相关分析就是研究观察指标间相关关系的统计方法&#xff0c;由于不同资料类型其分析方法有所差异&#xff0c;故本节主要讲解的是定量资料的线…