作者丨慕弋云子

编辑丨3D视觉工坊

三维目标检测是一个相对上游、比较基础却又新兴的任务领域。得益于自动驾驶和2D目标检测的发展,如何从单目图像中,或附加一些额外信息来检测出一个三维的bounding box,是三维目标检测的主要任务范畴

根据任务的输入不同,三维目标检测可以主要分为三个任务流派:首先,所有流派均输入单目RGB图像和相机参数;额外使用LiDAR信息(或称velodyne)的激光雷达三维目标检测;额外使用多目图像(主要是双目视觉)的多目三维目标检测;以及不额外使用其他信息的单目三维目标检测。当然,也有一些工作关注无监督的三维目标检测,或是使用其他数据集研究迁移性能的工作,这些工作也都应根据输入情况归属于相应的任务领域中。

这三个任务流派的SOTA(2021年11月)评估指标大致在82%、52%、15%左右(AP 3D R40 @0.7 )

本篇小综述着重关注单目三维目标检测领域在KITTI 3D Object(http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d)上的工作的发展脉络。覆盖论文则着重关注于2018年(该数据集创立于2017年,大致是此领域研究兴起时期)以来的CV顶会,随缘附加一些其他会议的论文。

希望读完这篇小综述后,大家可以对单目3D目标检测有着初步的了解和认识。笔者才疏学浅,欢迎各位带着批判的眼光审读,如有任何理解不到位之处,欢迎讨论和指正。

☆ 如何使用本综述 ☆

为了方便一些读者只想了解领域内的主要工作,并且避免本篇综述太过臃肿,所以最终决定还是将每一篇论文的介绍都单独发在独立的一篇文章中,而在本篇中只摘取其概述部分,并附上文章的链接,方便感兴趣的读者进一步详读,相当于是一个小专栏的形式。

同时,鉴于数据集和评估指标等介绍比较technical,所以决定先介绍主要论文,再介绍这些内容。

领域论文发展与分类

浅述单目3D目标检测_目标检测

timeline

浅述单目3D目标检测_目标检测_02

taxonomy

主要论文

论文的讲述主要以时间顺序。我个人比较喜欢“闭眼复述”,所以概述部分并不只是对Abstract或conclusion的翻译,而更是一种比较上位的总结,如整体的网络流是如何的,有什么亮点与不足,对整个领域的发展有很贡献等。

如果读完概述后,你对文章比较感兴趣,可以点击链接名片进入论文的详述部分,如果还没有详细名片那大概是“在写了”。预计本文会长期施工,欢迎收藏、不时回来看看,也欢迎评论催更(大概可以加热度?)。

另,关于如何读论文,可以参见我的这篇文章:谈一谈CS.CV方向如何阅读论文?(https://zhuanlan.zhihu.com/p/396064894)

分界线:2018年

2018年,深度学习领域大概是一个什么样的情况?

2D检测:R-CNN方法时兴、Mask R-CNN(2017 ICCV)刚刚出世,但是如SSD一类的单阶段方法距离两阶段方法,在精度上仍有一定差距;

新数据集:KITTI 3D Object数据集于2017年刚刚发布。最早KITTI 3D是以2D目标检测+6D位姿估计的任务来组织的,所以你会看到像Mono3D这样的开山鼻祖,仍侧重于pose estimation;随着KITTI数据集系统性的完善和针对于其新任务的方法陆续涌现,人们逐渐意识到,单目3D也可以作为一个独立的研究领域。

单目深度:与3D任务息息相关的单目深度估计领域中,MonoDepth这类无监督方法收获了许多关注,同时也有一些监督方法霸占SOTA,不过更优秀的DORN、BTS等工作都还未出世。

如果你对2D检测不太熟悉,这里多说两句:我们知道事实上之后几年间,又陆陆续续涌现了许多单阶段方法(如CenterNet、FCOS等)可以在参数量较少的同时,精度与两阶段方法相媲美,这些方法也对之后单目3D检测领域产生了较大的影响;

同时,之所以提到单目深度,是因为在当时人们的观念还停留在,想要预测3D bounding box就一定要有全局深度信息这样一个朴素的观点,我们会在后续的论文中逐渐感受到这种思想的进步。

Multi-Level Fusion (CVPR 2018)

论文题目:Multi-Level Fusion based 3D Object Detection from Monocular Images

论文链接:​https://openaccess.thecvf.com/content_cvpr_2018/CameraReady/2380.pdf​

代码链接:未开源

概述

这是一篇领域内非常早期的工作,其主要思想,就是想把2D的目标检测任务拓展到3D上面,并声称提出了一种通用的框架,能够将2D的检测作为独立的模块,直接迁移过来使用。为此,作者设计了一种多级融合的机制,在网络的不同阶段,能够让深度分支与RGB分支得到信息的融合,辅助完成各个阶段的预测。

浅述单目3D目标检测_3d_03

总体来讲,网络设计多级融合的机制,至少在目前看来是比较常规的,其大致上可以看成是一个多阶段的多任务学习机制。个人认为,其亮点其实是在这个混沌初开的局面中,对各个参数的预测提出了解耦的方式,即3D dimension、orientation这些都可以像2D一样,从特征中直接分别预测;而3D location可能是更加关键、难以解耦的,就需要考虑全局信息,结合特征再做出预测。这种基调对后续的研究工作产生了较大的影响。

详读链接:​https://zhuanlan.zhihu.com/p/432149359​

FQNet (CVPR 2019)

GS3D (CVPR 2019)

MonoPSR (CVPR 2019)

Pseudo-LiDAR (CVPR 2019)

D4LCN (CVPR 2020)

CADDN (CVPR 2021)

monodle (CVPR 2021)

(待完善,先码几个主要的)

DETR3D (CoRL 2021)

论文题目:DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries

论文链接:​https://arxiv.org/abs/2110.06922​

代码链接​https://github.com/wangyueft/detr3d​

概述

这是一篇多视角(多目)3D目标检测的工作,非LiDAR,也非单目,而且纯粹地基于nuScenes数据集。本质上,这就是一篇将DETR拓展到3D检测中的工作,所以重点在于,如何将DETR中bipartite loss的思想应用在3D任务上。DETR的大致过程是提取图像特征→编码辅助输入→结合queries获得values→得到queries的检测结果,并做损失。DETR3D在此基础上,除了将bipartite loss拓展到了三维空间中,还另外引入了Deformable DETR的iterative bounding box refinement模块,即构建多层layer对query进行解码。

通过DETR和DETR3D的网络结构对比,我们就可以简要领略这种改进是如何完成的:

浅述单目3D目标检测_目标检测_04

DETR

浅述单目3D目标检测_3d_05

DETR3D

详读链接:https://zhuanlan.zhihu.com/p/430198800

MonoCon (AAAI 2022)

论文题目:Learning Auxiliary Monocular Contexts Helps Monocular 3D Object Detection

论文链接
​https://arxiv.org/pdf/2112.04628.pdf​

代码链接​https://github.com/Xianpeng919/MonoCon​(22.01.07暂未更新)

概述

这是一篇当前单目3D目标检测的SOTA文章(2022.01.07,16.46%)。其网络结构几乎完全承接于CVPR'21的MonoDLE,只是添加了早就被深度学习领域所研究的「辅助学习」(Auxiliary Learning,以下简称AL)模块,以及一些normalization,以提升主流模型的泛化能力。

注意,这里的泛化能力并不是指数据集之间的泛化,而是单纯从域内的训练集-验证集角度而言,解决其潜在的过拟合问题(具体细节在下文讨论)。这样的设计表面上看就是加了模块、加了trick把点数提了上去,实则有许多玄机值得我们讨论,因此还是决定腾出时间来写一下。

详读链接:https://zhuanlan.zhihu.com/p/455897310

数据集及问题定义

本文主要基于KITTI-Object数据集,目前在3D目标检测任务上还有如nuScenesWaymo等数据集,不过往往重点不在于单目任务,欢迎读者自行探索。

在KITTI-object中,训练集由若干张RGB图像I与其中包含的若干三维包围框(3D bounding box,下称3D bbox)标记 yi、相机标定矩阵PI组成。其中,i表示物体编号,一张图像中可能有多个物体,也可能没有物体。

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


浅述单目3D目标检测_3d_06