点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

来源丨CV研习社

作者丨元气满满的打工人

文章导读

导读:3D目标检测的主要应用场景就是自动驾驶,虽然现阶段基于点云的3D目标检测的方法的性能不断提升,但相比于激光雷达高昂的造价以及在复杂天气情况下的敏感性。研究人员将目光投向了基于视觉的方案,因此单目3D目标检测逐渐成为了研究热点。小编今天将为大家分享一篇名为Is Pseudo-Lidar needed for Monocular 3D Object detection的文章,文中提出了DD3D的方法,让我们一起来学习一下吧。

Part 01

3D目标检测应用背

3D目标检测目前应用的主要场景就是自动驾驶,汽车在行驶过程中,需要时刻感知周围的环境,并及时获取障碍物的3维信息。3维信息的获取通常会依靠3D传感器,如激光雷达,双目相机等,但此类传感器成本通常较高。低成本的方案是通过单目相机结合深度估计的方式,目前该方案也在大力发展中。3D目标检测所使用的数据集大部分也就是自动驾驶数据集,类别主要是车辆和行人。通过3D目标检测算法,可以给出障碍物的3D bbox,可以精准的判断物体的位置和朝向,将该信息提供给规划模块,就可以对车辆的行驶路线进行合理的规划。

Part 02

3D目标检测方法的分类

按输入数据类型来划分,可分为:

单模:Lidar or Camera

多模:Lidar + Camera

按特征提取的方式来分,可分为:

Point Cloud:直接使用原始点云信息进行特征的提取;

Voxel:将点云通过网格的方式进行划分,随后提取网格的特征信息

2D View:将3D的信息投影到2D平面中,通常采用鸟瞰图(BEV)的视角,随后使用成熟的2D卷积网络进行特征的提取;
Graph:利用图的方式,对半径R内的点建立图,随后进行特征提取;

Part 03

DD3D网络的提出

当前,基于单目图像做3D目标检测的一个主要方向是将单目深度估计整合进来预测三维点云,从而将相机转变为伪激光雷达传感器。而3D检测效果的好坏与否和深度估计网络的性能提升高度相关。同时此类方法大都是2阶段的网络,通常网络结构较为复杂且容易过拟合。本文提出了一种end-to-end、single-stage的单目3D目标检测网络DD3D(Dense Depth-pre-trained 3D Detector),网络结构图如下:

网络结构图

DD3D网络的创新点:

DD3D是一个single-stage且end-to-end的网络,作者通过设计使得深度估计模块在预训练中学到的参数可以与3D检测模块进行共享,最终网络能够和伪雷达方法一样从基于大量数据的深度估计预训练中受益,同时又拥有端到端方法的简单和强泛化性的优势。伪雷达方式和DD3D方式的对比图如下。

伪雷达方法和DD3D方法的对比

DD3D的性能表现:

该方法目前在2大数据集下获得了SOTA的性能表现,在KITTI-3D数据集下,对车辆和行人的检测任务中分别获得了16.34%和9.28%的AP值,在NuScenes数据集下获得了41.5%的mAP值。

Part 04

DD3D网络的具体实现

DD3D是在FCOS上进行扩展的全卷积单阶段网络,可以进行3D目标检测和稠密深度预测。网络以FPN作为backbone进行特征的提取并输出多尺度特征图,在生成的每个特征图上应用3个head进行独立的预测任务。其中分类模块进行对象类别的预测,并根据类别C生成对应数量的置信度。2D 检测模块生成预测目标的2D检测结果。以上2个模块和FCOS网络的方式一致,这里不作详细的介绍,而本文的重点内容是3D detection head的设计,下面将对该模块进行详细的介绍。

3D detection head的设计

在3D物体检测中,与2D目标检测不同,预定义的

3D detection head以FPN输出的特征图作为输入,经过4个3X3的2D卷积后,对每一个的位置将会预测出12个数值,其中3D Bounding box包含10个数值,逐像素深度图包含1个数值,3D预测置信度包含一个数值。下面将会对每一个数值的含义进行介绍:

3D bounding box包含四个物理量:q,Zc,o和δ。

q = (qw,qx,qy,qz)是用四元数表示的3D边界框朝向,文中使用完整的 3 个自由度预测方向。

Z{c,p}这二个量值都表示和深度相关的预测信息,其中Zc表示为目标3D bbox中心的Z分量,因此只与前景特征相关。而Zp则与每个像素相关联,更像是逐像素的depth maps。深度信息的度量值可以通过下面的转换公式得到:

其中Z∈Z{c,p}为网络输出,d∈{dc,dp}为预测深度,(σl和μl)为可学习的缩放因子和偏移量,p为从焦距f计算得到的像素大小fx和fy,c为常数。

上述的公式中用到了相机的内参,而这赋予了DD3D模型以相机感知能力,使得学习到的深度不仅与图像有关还与像素的大小密切相关。文中作者也提到了这将对稳定训练起到重要的作用。如果再训练时需要对图像的尺寸进行缩放,则不需要对3D框的ground truth进行修改,只需要要调整相机的内参即可,即通过调整每一个像素的大小。

O =(∆u,∆v)表示从特征位置到投影到相机平面上的 3D 边界框中心的偏移量。最终将通过反投影得到3D框中线点的3D坐标,过程为,先通过偏移量计算出3D框中心点在图像上的投影坐标,接下来结合投影坐标、3D框中心的深度值dc和相机的内参这3部分的内容进行反投影操作,就得到了3D坐标。

δ = (δW , δH, δH) 表示 3D 边界框的大小与特定类别物体的规范大小的偏差。通俗来说,在上面已经获得了3D框的朝向信息和位置信息,但需要预测3D box,则还需要指导3D框的大小,即物体的长宽高信息。由于在实际中,每一类具体的物体的物理尺寸通常变化不大,因此可以通过对每一类的物体预设一个尺度(可以在训练集中计算出每一类物体的平均尺寸),然后在此基础上预测尺寸的偏差即可。

β3D表示 3D 边界框预测的置信度,作用是对评估的结果进行过滤。其转换成概率为:

将该概率与classification head中的类别概率相乘,作为最终的得分对检测结果进行过滤。

损失函数loss的设计

分类损失和2D bbox 的损失和FCOS方法中的计算方式一样,如下:

对于3D bbox 的loss,定义如下:

其中B*和B^和分别表示3D边界框真值和预测值的8个顶点, 由于预测值包含:朝向、投影中心、距离和尺寸,因此在计算loss的时候,总共计算四次,分别对四个预测值进行约束。

置信度loss采用自监督损失,它使用3D框预测中的错误来计算3D置信度的替代目标。定义如下:

因此,DD3D的总损失定义如下:

深度预训练

文中作者提出的DD3D的方法是一个单阶段且端到端的目标检测的方案,但为了运用伪雷达的信息,作者首先对DD3D网络在深度估计的大型数据集上执行了深度估计的预训练任务。同时作者在文中提到,深度估计和3D目标检测这二条支路仅仅是最后的3×3的卷积层有区别,而其他的网络结构相同,因此,二条支路几乎所有的参数都相同,那么深度估计模型中学习到的参数可以在一定程度上帮助3D目标检测模型的训练,使得模型的精度得到一定的提升。

Part 05

实验

文章在二大数据集上进行了实验,以下是KITTI数据集和NuScenes数据集下的实验结果:

以下是在数据集下的可视化检测效果。

Part 06

总结

文中作者提出了一个端到端的单阶段3D目标检测器,使其具备伪雷达方法的优势,但同时又避免了其局限性。文章证明了伪雷达方式的局限性,即过度的依赖in-domain单目深度估计,而文章中认为3D目标检测的训练集和训练深度估计时的训练集并不需要同一domain,文章提出了引入单目深度估计的预训练步骤。DD3D的方法在二大数据集上都取得了出色的效果,值得学习和参考。

本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

DD3D:基于预训练的单目3D目标检测相关推荐

  1. ICCV2021|单目3D目标检测真的需要伪激光雷达吗?

    作者丨agent@知乎 来源丨https://zhuanlan.zhihu.com/p/406918022 编辑丨3D视觉工坊 Paper: arxiv.org/pdf/2108.0641 Code: ...

  2. MonoCon:使用辅助学习的单目3D目标检测框架(AAAI 2022)

    作者丨慕弋云子@知乎 来源丨https://zhuanlan.zhihu.com/p/455897310 编辑丨3D视觉工坊 本文已被收录在单目3D目标检测的综述文章中.如果你对单目3D目标检测的相关 ...

  3. 【单目3D目标检测】MonoFlex论文精读与代码解析

    文章目录 Preface Abstract Contributions Pipeline Problem Definition Decoupled Representations of Objects ...

  4. 【单目3D目标检测】FCOS3D + PGD论文解析与代码复现

    文章目录 前言 FCOS3D 概述 主要创新点 主要框架结构 回归目标 损失函数 推理过程 2D引导的多层3D预测 2D高斯分布的3D中心度 实验设置 源码复现 PGD 概述 主要创新点 深度估计 主 ...

  5. 【单目3D目标检测】SMOKE论文解析与代码复现

    文章目录 yacs Introduction Usage SMOKE Preface Abstract Contributions Pipeline Backbone Head Branch Orie ...

  6. 【单目3D目标检测】MonoDLE论文精读与代码解析

    文章目录 Preface Abstract Contributions Diagnostic Experiments Pipeline Revisiting Center Detection Trai ...

  7. 浅述单目3D目标检测

    作者丨慕弋云子@知乎 来源丨https://zhuanlan.zhihu.com/p/432135656 编辑丨3D视觉工坊 三维目标检测是一个相对上游.比较基础却又新兴的任务领域.得益于自动驾驶和2 ...

  8. 登顶KITTI!Mix-Teaching:适用于单目3D目标检测的半监督方法【清华大学】

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨汽车人 来源丨自动驾驶之心 论文标题:Mix-Teaching: A Simple, Unifi ...

  9. 最新发布!SMOKE 单目3D目标检测,代码开源!

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者| 黎国溥 编辑| 3D视觉开发者社区 SMOKE是一个one-stage的单目视觉障碍物检测模型 ...

最新文章

  1. 人工智能助力新材料研发
  2. 其他数据类型的一些操作
  3. LinkedList和ArrayList的区别
  4. sublime linux下无法输入中文
  5. 解决打开VMware虚拟机时Take Ownership出错的问题
  6. python 破解验证码之二:OCR tesseract识别验证码
  7. latex参考文献引用【bibtex】
  8. 阿里云服务器购买了还需要买数据库吗?
  9. android 模拟自动点击,自动点击器(模拟点击)
  10. 电脑删除文件 找不到该项目
  11. **统计出现字数最多的字符**
  12. 移动文件后图标变白解决方法
  13. 傲天AC EAG误配置导致Portal推送失败案例
  14. JAVA实现本月国际国内节日
  15. Kotlin let with run apply also filter if常规用法笔记
  16. 电力系统的延时潮流 (CPF)的计算【 IEEE-14节点】(Matlab代码实现)
  17. 全球及中国生物质气化行业研究及十四五规划分析报告
  18. Outlook 2007:与Mobile手机同步后联系人重复
  19. 利用 MATLAB 编程实现最速下降法求解无约束最优化问题
  20. 一个程序员的自我救赎

热门文章

  1. Strom序列化机制
  2. 8088/8086的功能结构
  3. 金山网盾监测:游戏玩家下载西西游戏外挂会中大量***
  4. 调用.NET XML Web Services返回数据集合一
  5. 用Scrum敏捷开发工具Leangoo做Sprint迭代管理
  6. [Skr-Shop]购物车之架构设计
  7. 日志多租户架构下的Loki方案
  8. 讲解 Zookeeper 的五个核心知识点
  9. Spring中的Controller ,Service,Dao是不是线程安全的?
  10. RPC的超时设置,一不小心就是线上事故