【论文解读】单目3D目标检测 DD3D(ICCV 2021)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 本文分享单目3D目标检测,DD3D 模型的论文解读,了解它的设计思路,论文核心观点,模型结构,以及效果和性能。

 本文分享单目3D目标检测,DD3D 模型的论文解读,了解它的设计思路,论文核心观点,模型结构,以及效果和性能。

image.gif

一、DD3D简介

DD3D是一种端到端单阶段的单目3D目标检测方法,它在训练时用到了点云数据,监督深度图的生成,共享预测深度的特征提取层

推理时不用点云数据了,只需图像数据和相机内参,即可完成3D框的信息预测。这是预训练和共享权重的思路。

开源地址:https://github.com/TRI-ML/dd3d

论文地址:Is Pseudo-Lidar needed for Monocular 3D Object detection?



二、论文核心观点

论文核心观点,主要包括:

    1. 观点背景:当前有两阶段的方法,首先单目深度估计生成深度图,并将图像数据转为点云数据;然后用三维点云的检测器输出3D框信息,从而将相机转变为伪激光雷达传感器。这类方法通常网络结构较为复杂且容易过拟合。
    2. 设计一种端到端、单阶段的单目3D目标检测
    3. 基于预训练和共享权重的思路训练时用到了点云数据,监督深度图的生成,共享预测深度的特征提取层推理时只需图像数据和相机内参,即可完成3D框的信息预测



    三、模型框架

    DD3D是一个单阶段的框架,基于FCOS思想,实现单目3d检测的。模型结构如下:

    Backbone:DLA34

    Neck:FPN

    Head:由三部分组成

     第一部分:类别检测(默认3分类:车、行人、骑车的人)

     第二部分:2D框检测(2D-box和center-ness

     第三部分:3D检测(3D框信息——朝向、深度距离、中心偏差、三维尺寸,深度图,置信度)

    模型结构如下图所示:

    image.gif

    在FPN中,通过以下方式形成5 种尺度的Features输出:

      • 引用DLA34中Level5的Features进行CBL计算得到P5。
      • 引用Level3~5的Features进行跨尺度融合得到P3、P4。
      • 在P5的基础上经过两次s=2的CBL计算得到P6和P7。

      DD3D的训练过程,包括3个阶段:Feature学习训练 深度估计训练 3D目标检测训练

        1. Feature学习训练:用COCO数据集预训练2D目标检测,主要是学习图像中的features,用到的heads包括:Logits、2D-box和center-ness。
        2. 深度估计(dense depth)训练:单目深度估计模块,在KITTI-Depth数据中对PackNet进行训练,生成深度图,用到的head是Dense-depth。
        3. 3D目标检测训练: 用KITTI-3D数据集训练3D目标检测,用到除了dense-depth之外的所有heads。

        在深度估计训练时,形成效果好的模型参数,即:预测深度的特征提取层;

        在3D目标检测训练,需要预测深度信息,会共享部分预测深度特征提取层


        四、损失函数

        DD3D 的损失由3部分组成,

        2D 框检测损失:3部分

          • 通过binary focal loss计算分类损失
          • 通过binary cross entropy计算中心点center-ness的损失
          • 通过IOU损失计算2D box回归损失

          3D 框检测损失:4部分

            • 预测朝向,偏航角使用L1 Loss函数。
            • 预测3D投影坐标偏移;使用 L1 Loss 函数。
            • 预测3D框的尺寸。
            • 预测中心点的深度值。

            3D 框的信息是使用L1 loss来计算,公式如下。

            image.gif

            每次从回归3D框的4组元素(朝向,3D-bbox投影中心,深度,尺寸)中取1个,其它三个用目标真值,来构建一个3D-bbox的8个顶点,然后用公式计算损失。这样重复4次计算各组元素的3D loss。

            3D 框置信度损失

            通过3D IOU计算3D的置信度。DD3D是通过单阶段网络端到端做3D目标检测的,其对于每一个像素点都会输出一组参数用于获取3D bounding box,但是并非每一个像素点的预测都是有效的(如背景区域),还有一些预测结果可能存在错误或者冲突,因此需要引入置信度评估对预测结果进行过滤。

            总体的损失函数,如下所示:

            image.gif

            总体的损失函数 =  2D 框检测损失 +  3D 框检测损失 + 3D 框置信度损失



            五、核心内容——点云数据预训练深度信息,共享深度信息特征提取层

            当前有两阶段的方法,首先单目深度估计生成深度图,并将图像数据转为点云数据;

            然后用三维点云的检测器输出3D框信息,从而将相机转变为伪激光雷达传感器。这类方法通常网络结构较为复杂且容易过拟合。

            image.gif

            DD3D 设计一种端到端、单阶段的单目3D目标检测。基于预训练和共享权重的思路;训练时用到了点云数据,监督深度图的生成,共享预测深度的特征提取层;推理时只需图像数据和相机内参,即可完成3D框的信息预测。下面详细分析检测头head-3D detection。

            3D detection head,包含三部分检测头,共12个数值:

            • 3D框检测信息,3D-box head,包含10个参数。朝向角的四元素q(qw, qx, qy, qz)、深度信息Zc、3D 框中心的偏移量O (∆u,∆v)、3D尺寸δ  (δW , δH, δH) 。
            • 深度估计预训练,Dense-depth head,包含1个参数,预测Zp;点云投影到 图像上特征图 所在位置点的z方向深度(dense-depth)。
            • 3D置信度,3D-confidence head,包含1个参数,预测置信度。


            解析3D框检测信息:

            q(qw, qx, qy, qz): 直接回归得到的是Allocentric orientation (q_allo),即以3D-bbox自身为中心朝向的四元数。然后被归一化、转换成以相机为中心的朝向(Egocentric orientation)。

            O =(∆u,∆v)表示从特征位置到投影到相机平面上的 3D 边界框中心的偏移量。最终将通过反投影得到3D框中线点的3D坐标。

            δ = (δW , δH, δH) 表示 3D 边界框的大小与特定类别物体的规范大小的偏差。由于在实际中,每一类具体的物体的物理尺寸通常变化不大,因此可以通过对每一类的物体预设一个尺度(可以在训练集中计算出每一类物体的平均尺寸),然后在此基础上预测尺寸的偏差即可。

            Zc表示为目标3D bbox中心的Z分量,因此只与前景特征相关

            Zp表示点云投影到 图像上特征图 所在位置点的z方向深度,覆盖整图像范围,它与每个像素相关联,类似逐像素的深度图

            深度信息的值,可以通过下面的转换公式得到:

            image.gif

            Z∈{Zc,Zp}由模型输出,通过上面的公式,得到d∈{dc,dp}预测深度。

            其中(σl和μl)为可学习的缩放因子和偏移量,初值来自对数据集的统计值。

            p为从焦距f计算得到的像素大小fx和fy;c为常数,工程中设为500。

            上述的公式中用到了相机的内参(fx和fy),而这赋予了DD3D模型以相机感知能力,使得学习到的深度不仅与图像有关还与像素的大小密切相关。


            dense depth head的深度预训练

            在pre-training depth时,对来自FPN每一层特征图(5张)的逐像素深度预测值。

            计算Loss时,只选用从Lidar 稀疏点云映射到图像平面上具备有效ground-truth depth的像素点,按照如下公式来计算:

            image.gif

            D∗ 是gt-depth map,D是来自每个一层特征图的深度预测值,它们都被插值成了与图像相同的精度,。

            M是二进制指标,用来表示哪些pixel有效的mask(即那些从激光点云投影到图像上的像素点)。

            Zc表示为目标3D bbox中心深度信息。

            Zp表示点云预训练的深度信息,覆盖整图像范围,类似逐像素的深度图。

            Zc和Zp都是预测深度,这两个路径只有最后3x3卷积层不同,即它们共享了几乎所有的参数。从深度预训练任务中学习到的深度估计能力,可以有效地迁移到目标任务3d bbox的深度预测任务中。


            补充内容:

            论文也给出了一套基于伪激光雷达做3D目标检测的方案作为对比,流程大概如下:

              • 首先通过PackNet进行单目深度估计,并将生成的深度图转换成点云。
              • 然后将每一个像素点的点云坐标和图像像素值拼接成一个6维的tensor。
              • 再基于现有的2D目标检测器获取ROI区域,将每一个ROI区域所对应的6通道tensor,输入到3D检测网络中预测出3D bounding box。



              六、实验对比与模型效果

              在KITTI-3D 测试集,选Car这个类进行评估,用以粗体突出显示最佳结果。

              image.gif

              Kitti数据集的模型效果:

              image.gif

              image.gif

              下面是在nuScenes测试集评估的结果:

              image.gif

              nuScenes数据集的模型效果:

              image.gif



              分享完成~

              相关文章
              |
              机器学习/深度学习 算法 PyTorch
              论文阅读笔记 | 目标检测算法——DETR
              论文阅读笔记 | 目标检测算法——DETR
              939 0
              论文阅读笔记 | 目标检测算法——DETR
              |
              机器学习/深度学习 编解码 算法
              【论文理解】ICCV2021-视频中小目标检测Dogfight
              论文地址:https://arxiv.org/abs/2108.02092目标:在无人机飞行过程中捕获的背景杂乱的画面中检测其他无人机挑战:任意的移动(相机移动,目标也移动)小尺寸,只占画面像素的0.05%~0.07%(PASCAL VOC (22.62%) and ImageNet (19.94%))形状变换(拍摄角度不同,拍摄的无人机形状不同)遮挡基于region-proposal的方法无法捕
              |
              7月前
              |
              机器学习/深度学习 人工智能 计算机视觉
              【CVPR小目标检测】- ISNet红外小目标检测
              【CVPR小目标检测】- ISNet红外小目标检测
              227 1
              |
              7月前
              |
              机器学习/深度学习 Shell 计算机视觉
              【论文精读】CVPR2021 - ReDet:一种用于航空目标检测的旋转等变检测器
              【论文精读】CVPR2021 - ReDet:一种用于航空目标检测的旋转等变检测器
              |
              机器学习/深度学习 编解码 算法
              论文阅读笔记 | 目标检测算法——DCN(可变形卷积网络)
              论文阅读笔记 | 目标检测算法——DCN(可变形卷积网络)
              763 0
              论文阅读笔记 | 目标检测算法——DCN(可变形卷积网络)
              |
              机器学习/深度学习 数据可视化 计算机视觉
              【论文解读】单目3D目标检测 CUPNet(ICCV 2021)
              本文分享单目3D目标检测,CUPNet 模型的论文解读,了解它的设计思路,论文核心观点,模型结构,以及效果和性能。
              146 0
              |
              算法 自动驾驶 数据挖掘
              【论文解读】单目3D目标检测 LPCG(ECCV 2022)
              本文分享单目3D目标检测,LPCG模型的论文解读,了解它的设计思路,论文核心观点,模型结构,以及效果和性能。
              265 0
              |
              计算机视觉
              【论文解读】单目3D目标检测 MonoFlex(CVPR 2021)
              本文分享单目3D目标检测,MonoFlex 模型的论文解读,了解它的设计思路,论文核心观点,模型结构,以及效果和性能。
              668 0
              |
              数据可视化 计算机视觉 异构计算
              【论文解读】单目3D目标检测 MonoCon(AAAI2022)
              本文分享单目3D目标检测,MonoCon模型的论文解读,了解它的设计思路,论文核心观点,模型结构,以及效果和性能。
              397 0
              |
              数据可视化 计算机视觉
              【论文解读】单目3D目标检测 MonoDLE(CVPR2021)
              本文分享单目3D目标检测,MonoDLE模型的论文解读,了解它的设计思路,论文核心观点,模型结构,以及效果和性能。
              431 0

              热门文章

              最新文章

              下一篇
              DataWorks