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

Paper:arxiv.org/pdf/2108.0641
Code:github.com/TRI-ML/dd3d(尚未公开,2021.9.4)
一、简介
NuScenes数据集单目3D目标检测清单
这篇论文是目前NuScenes(nuscenes.org/object-det)单目3D检测排名第一(截止2021.9.3)。
目前,基于单目图像的3D目标检测的主要方向之一是将单目深度估计集成到预测三维点云中,从而将相机转换为伪激光雷达传感器。由于深度估计本身可以通过大规模的自我监督学习来提高性能而不需要手动标记,所以这类工作的3D检测效果与嵌入深度估计网络性能的提高密切相关。与端到端方法相比,这种方法容易受到拟合的影响,网络结构更加复杂,与基于激光雷达的方法仍有很大差距。这篇论文提出了一个end-to-end、single-stage的单目3D目标检测网络DD3D(Dense Depth-pre-trained 3D Detector),深度估计和3D有效的信息传输可以在测试之间扩展学习大量未标记的预训练数据。最后,我们不仅可以从基于大量数据的深度估计预训练中受益,还可以实现端到端方法简单、强泛化的目标。
二、网络结构
DD3D的网络结构与FCOS类似,采用FPN作为backbone,并输出多尺度特征图。如Figure 2.每个特征图将输入3个head network中,其中classification head用于预测目标类别,2D detection head用于预测目标2D这两个检测结果head都与2d目标检测FCOS同样,跳过这里。
由于上述式(1)获取深度时引入了相机内参,因此学习到的模型是与相机相关的,具体就是学习到的深度不仅仅与图像有关,还与所用到的相机的像素尺寸相关,论文中提到这样设置对于训练的稳定性有帮助。此外,在此设置下,如果在训练过程中缩放图像,3D框的GT不需要改变,只需要调整相应的相机内参(实际上是调整每个像素的大小)。
上面获得了方向信息和位置信息,想预测3D框架还需要知道物体的长度、宽度和高度信息。由于某一固定类别物体的物理尺寸变化不大,因此可以根据该类别目标预设尺寸值,然后在此基础上预测其尺寸偏差。一般来说,预设的尺寸值可以通过平均尺寸获得。
三、Loss函数
四、Depth Pre-training
论文采用单阶段、端到端3D 目标检测方案,为了用到伪雷达信息,网络首先执行了一个单目深度估计的预训练任务(对应于网络结构中的dense depth),激光雷达点云监督该任务。由于对预训练网络框架和3的深入估计D目标检测网络框架只是最后3个x3卷积层不同,因此对模型学习的信息的深入估计可以帮助3D训练目标测试。作者文中,作者还对实验过程些观察总结:(1) 对FPN目标函数优化将比只使用高分辨率特征的目标函数优化训练更稳定,特别是在从头开始(事实上,在单目深度估计领域,很多工作如monodepth多尺度优化目标函数);(2) 在大batchsize与高分辨率输入相比,SILog loss(scale-invariant mean square error in log space),L1 loss训练更稳定。
注:感谢微信公众号「」整理。
五、Pseudo-Lidar 3D detection(PL)
论文还提供了一套基于伪激光雷达的3D对比目标检测方案,流程如下:首先通过PackNet单目深度估计,将生成的深度图转换为点云,然后将每个像素点的点云坐标和图像像素值拼接成6维tensor,再基于现有的2D获取目标检测器ROI区域,将每一个ROI6通道对应区域tensor输入到3D在检测网络中预测3D bounding box。
六、实验部分
使用了四组数据集:(1) KITTI-3D和nuScenes数据集用于训练和评估3D(2)检测模型 KITTI-Depth在这里使用数据集PL model中训单目深度估计模块,作者在生成数据集时过滤掉了它KITTI-3D中相似样本;(3) DDAD15M用于对DD3D和PL model预训练单目深度估计。
训练DD3D时,首先基于COCO预训练2D再基于目标检测DDAD15M预训练单目深度估计,最后训练3D检测任务。训练PL时,首先基于DDAD15M前置摄像机图像预训练单目深度估计模块PackNet,然后基于KITTI-Depth对PackNet进行finetune,最后,基于伪激光雷达点云和图像训练3D目标检测。
在Table 1,Table 2,Table 4,Table 5中,分别在KITTI-3D和nuScenes数据集与主流方法相比,效果性能SOTA,不多说。
Table 3中,在KITTI-3D数据集上对DD3D和PL模型做了一系列的消融实验:DD3D,以DLA-34作为backbone,根据论文中提出的实验过程进行培训(coco pretrain->DDAD15M pretrain->3D detection),在KITTI-3D验证集上测试得到的Car-BEV-AP分别是33.5(Easy),26.0(Mod),22.6(Hard),当去掉基于DDAD15M单目深度估计预训练后(即coco pretrain->3D detection),其性能降为26.8(Easy),20.2(Mod),16.7(Hard),当去掉coco pretrain后(即DDAD15M pretrain->3D detection),其性能为31.7(Easy), 24.0(Mod), 20.3(Hard),可见单目深度估计预训练对提高性能至关重要,甚至比基于COCO数据集进行2D测试预训练也很重要。在V2-99 backbone去除也得到了验证DDAD15M预训练后单目深度估计性能损失明显。
Table 设计了一个更严格的实验对比2D目标检测预训练和单目深度估计预训练任务3D两个实验都是基于目标检测效果的提高COCO然后基于预训练模型nuScenes分别执行2的数据集D目标测试和单目深度估计预训练,最后进行3次D detection,控制初始化参数的一致性(COCO 2D基于预训练参数的检测),预训练场景一致(均基于nuScenes对比2D detection预训练任务和monocular depth estimation3.预训练任务D detection可此可见,单目深度估计预训练任务3D目标检测的效果更明显。另外,在Table 3中还做了消融实验说明PL方法中存在的问题:常规PL类型方法(论文中指DDAD15M pretrain->KITTI-Depth finetune->pseudo-lidar based 3D detection)在KITTI 3D detection benchmark上霸榜,作者分别作者KITTI-Depth finetune和DDAD15M pretrain后,发现3D检测性能明显下降,说明在PL方法中引入in-domain数据集对单目深度估计模型finetune因为KITTI-3D提供可对应的数据集Lidar用于培训单目深度估计网络的信息,因此PL类方法可以在KITTI-3D上取得SOTA性能,但在实际场景中,维护与实际场景相似的维护in-domain单目深度估计训练集是不现实的。论文中提出的DD3D模型没有这样的限制。
与上述结论相对应对应Table 3中,PL方法取在KITTI验证集上取得了不错的性能,但是其在Table 1中的KITTI测试集没有达到预期的效果,而是进行了比较Table 其他三种方法(MonoDIS(single), M3D-RPN, Kinematic3D, DD3D),它们正在验证集(Table 3)测试集中的性能和性能(Table 1)中的性能gap都比较小(个人觉得比较小(个人觉得比较小(个人觉得比较小(个人觉得)DD3D的性能gap也有点大)。这进一步表明PL方法对in-domain单目深度估计训练集的依赖性过强。
七、总结
最后奉上Figure 简单总结一下,本文本质上证明了这篇论文PL方法的局限性-过于依赖in-domain同时提出了单目深度估计single-stage、end-to-end的3D检测框架DD3D,实验证明,引入单目深度估计预训练3D目标检测提升效果明显,本文认为,单目深度估计预训练不需要深度估计训练集和3D目标检测训练集相同domain的。刚看到论文题目的时候,以为这篇论文是提出了一个不需要单目深度估计的3D检测框架,看完才发现是真的不需要单目深度估计了,但是需要引入单目深度估计的预训练步骤,emmm。。。既然在KITTI和nuScenes上都能有如此好的效果,后面不妨试一下吧。最后不得不说,这篇论文的related work和实验部分都写的挺不错的,值得学习一下。
本文仅做学术分享,如有侵权,请联系删文。
在「3D视觉工坊」公众号后台回复:即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。
在「3D视觉工坊」公众号后台回复:即可下载包括等。
在「3D视觉工坊」公众号后台回复:即可下载独家学习课件与视频网址;后台回复:即可下载独家学习课件与视频网址。
扫码添加小助手微信,可
也可申请加入我们的细分方向交流群,目前主要有、、、、、等微信群。
一定要备注:
▲长按加微信群或投稿
▲长按关注公众号
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题