【论文解读】单目3D目标检测 MonoCon(AAAI2022)

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

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

image.gif



 一、MonoCon简介

MonoCon是一个延续CenterNet框架的单目3d检测器,在不依赖dcn的情况下获得了较好的性能,并且融入了辅助学习,提升模型性能。

曾经在Kitti 单目3D目标检测上,霸榜了一段时间。

MonoCon和MonoDLE很像,在它基础上添加了一些辅助分支检测,促进网络学习特征的能力。

    • MonoCon = MonoDLE + 辅助学习
    • 辅助学习:训练阶段增加一些网络分支,对其计算loss项,而在推理阶段完全忽略掉它们,以期得到更好的特征表示。

    开源地址(官方):https://github.com/Xianpeng919/MonoCon

    开源地址(pytorhc):https://github.com/2gunsu/monocon-pytorch

    论文地址:Learning Auxiliary Monocular Contexts Helps Monocular 3D Object Detection



    二、论文核心观点

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

    1. 带注释的3D 边界框,可以产生大量可用的良好投影的 2D 监督信号。
    2. 使用辅助学习,促进网络学习特征的能力


    三、模型框架

    MonoCon是基于CenterNet框架,实现单目3d检测的。模型结构如下:

    Backbone:DLA34

    Neck:DLAUp

    常规3D框检测头:5个分支

      • 分支一 通过输出heatmap,预测2D框中心点的粗略坐标,以及类别分数。
      • 分支二 预测2D框中心点粗坐标与真实的3D投影坐标之间的偏移。
      • 分支三 预测2D框中心点粗坐标的深度值,和其不确定性。
      • 分支四 预测3D框的尺寸。
      • 分支五 预测观测角。

      辅助训练头:5个分支

        • 分支一  8个投影角点和3D框的投影中心。
        • 分支二  8个投影角点到2D框中心的offsets。
        • 分支三 2D框的尺寸。
        • 分支四 2D框中心量化误差建模。
        • 分支五 8个投影角点量化误差建模。

        模型结构如下图所示:

        image.gif



        四、模型预测信息与3D框联系

        3D框相关的信息

        1、3D中心点坐标(cw, yw, zw):通过预测3D中心在像素坐标系下的坐标,结合相机内参可以获得中心点在图像物理坐标系下的坐标(x,y,z)。再结合预测深度zw,获得zw/z的比例系数,就能求出xw,yw。由此可见,深度估计对整体定位精度的影响还是很大的。

        2、深度估计:基于端到端的思路实现;同时在输出上做了一个不确定性建模,在预测深度d的基础上同时预测标准差σ。对于σ的分布,文中做了拉普拉斯分布和高斯分布,起到一定优化作用。

        3、尺寸估计:以往的尺寸估计,应用的损失函数都是通过计算和真值框之间的交并比来约束尺寸。这样带来的问题就是,由于中心点的预测误差导致的损失偏大,会给尺寸估计带来不必要的负担。所以作者提出了尺寸估计并专门设计了损失函数,只针对尺寸的预测误差对这个分支进行优化。并且根据长宽高对于IOU影响的比例不同,对参数优化的权重也按比例进行了设置。

        4、航向角估计:用的是multi-bin loss。

        模型预测信息,如下图所示:

        image.gif



        五、损失函数

        MonoCon的损失由10部分组成,

        常规3D框检测头:5个分支

          • 分支一 heatmap 类别分数,使用FocalLoss。2D 中心点损失,使用L1 Loss。
          • 分支二 2D框中心点粗坐标与真实的3D投影坐标之间的偏移,使用L1 Loss。
          • 分支三 2D框中心点粗坐标的深度值,和其不确定性,使用Laplacian Aleatoric Uncertainty Loss。(MonoPair & MonoDLE & MonoFlex & GUPNet)
          • 分支四 预测3D框的尺寸,使用Dimension-Aware L1 Loss(MonoDLE)。
          • 分支五 预测观测角,multi-bin Loss,其中分类部分使用 CrossEntropyLoss,回归部分使用 L1 Loss。

          辅助训练头:5个分支

            • 分支一  8个投影角点和3D框的投影中心,使用FocalLoss。
            • 分支二  8个投影角点到2D框中心的offsets,使用L1 Loss。
            • 分支三 2D框的尺寸,使用L1 Loss。
            • 分支四 2D框中心量化误差建模。
            • 分支五 8个投影角点量化误差建模。

            损失函数相关代码如下

            loss_center_heatmap=dict(type='CenterNetGaussianFocalLoss', loss_weight=1.0),
            loss_wh=dict(type='L1Loss', loss_weight=0.1),
            loss_offset=dict(type='L1Loss', loss_weight=1.0),
            loss_center2kpt_offset=dict(type='L1Loss', loss_weight=1.0),
            loss_kpt_heatmap=dict(type='CenterNetGaussianFocalLoss', loss_weight=1.0),
            loss_kpt_heatmap_offset=dict(type='L1Loss', loss_weight=1.0),
            loss_dim=dict(type='DimAwareL1Loss', loss_weight=1.0),
            loss_depth=dict(type='LaplacianAleatoricUncertaintyLoss', loss_weight=1.0),
            loss_alpha_cls=dict(
              type='CrossEntropyLoss',
              use_sigmoid=True,
              loss_weight=1.0),
            loss_alpha_reg=dict(type='L1Loss', loss_weight=1.0),

            image.gif

            补充说明 深度值损失的公式定义如下:

            image.gif



            六、核心内容——辅助训练分支与3D检测分支

            3D框检测头:5个分支

            分支一 通过输出heatmap,预测2D框中心点的粗略坐标,以及类别分数。借鉴自CenterNet,预测C类目标(KITTI中为3类:Car,Pedestrian,Cyclist)的中心点坐标(xb, yb) 。

            分支二 预测2D框中心点粗坐标与真实的3D投影坐标之间的偏移。2D框中心坐标(xb, yb),到3D框中心坐标(xc, yc)之间的偏移。

            分支三 预测2D框中心点粗坐标的深度值,和其不确定性;其中深度值采用逆Sigmoid进行处理。

            image.gif编辑

            g(F; θZ) 估计深度及其不确定性,应用逆 sigmoid 变换来处理 g(F; θZ)[0] 的无界输出。σZ 用于对深度估计中的异方差任意不确定性进行建模。

            分支四 预测3D框的尺寸,即预测长、宽、高。

            分支五 预测观测角,采用multi-bin策略,分成24个区间,前12个用于分类(粗略预测),后12个用于回归(精细预测)将直接回归问题转化为先分类,再回归的问题。

            辅助训练头:5个分支

            分支一 8个投影角点和3D框的投影中心。

            分支二 8个投影角点到2D框中心的offsets。

            分支三 2D框的尺寸。

            分支四 2D框中心量化误差建模。

            分支五 8个投影角点量化误差建模。

            由于backbone降采样的存在,原始图像目标中心点的位置和backbone输出feature map中的位置之间,存在量化误差。MonoCon对2D中心和8个投影角点,分别进行量化误差建模。

            在进行量化误差建模时,MonoCon采用了keypoint-agnostic方式,即关键点无关建模。



            七、实验对比与模型效果

            论文于KITTI 官方测试集中“汽车类别”的最先进方法进行比较,使用单个2080Ti GPU显卡测试的。

            下表中由BEV和3D的测试结果,MonoCon运行时间和精度都是Top 级别的。

            image.gif


            作者基于MonoDLE进行了对比实验,分析5个辅助训练分支,和把BN归一化换为AN归一化,对模型精度的影响。

            image.gif

            模型预测效果:

            image.gif


            下面是单目3D目标检测的效果,激光雷达点云数据仅用于可视化。

            image.gif

            在前视图图像中,预测结果以蓝色显示,而地面实况以橙色显示。

            在激光雷达视图图像中,预测结果显示为绿色。 地面实况 3D 框以蓝色显示。

            image.gif

            分别显示2D框、3D框、BEV的检测效果:

            image.gif

            image.gif

            image.gif



            分享完成~

            相关文章
            |
            存储 机器学习/深度学习 算法
            MMDetection3d对KITT数据集的训练与评估介绍
            MMDetection3d对KITT数据集的训练与评估介绍
            2994 0
            MMDetection3d对KITT数据集的训练与评估介绍
            |
            机器学习/深度学习 传感器 算法
            单目3D目标检测 方法综述——直接回归方法、基于深度信息方法、基于点云信息方法
            本文综合整理单目3D目标检测的方法模型,包括:基于几何约束的直接回归方法,基于深度信息的方法,基于点云信息的方法。万字长文,慢慢阅读~ 直接回归方法 涉及到模型包括:MonoCon、MonoDLE、MonoFlex、CUPNet、SMOKE等。 基于深度信息的方法 涉及到模型包括:MF3D、MonoGRNet、D4LCN、MonoPSR等。 基于点云信息的方法 涉及到模型包括:Pseudo lidar、DD3D、CaDDN、LPCG等。
            2733 2
            |
            算法框架/工具 C++ Python
            根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
            根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
            1333 0
            |
            机器学习/深度学习 JSON 算法
            实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
            本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
            5180 3
            实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
            |
            并行计算 数据可视化 PyTorch
            单目3D目标检测——MonoCon 模型训练 | 模型推理
            本文分享 MonoCon 的模型训练、模型推理、可视化3D检测结果、以及可视化BEV效果。
            677 0
            |
            传感器 机器学习/深度学习 人工智能
            超全汇总 | 基于Camera的3D目标检测算法综述!(单目/双目/伪激光雷达)
            目前3D目标检测领域方案主要包括基于单目、双目、激光雷达点云、多模态数据融合等方式,本文主要介绍基于单目、双目和伪激光雷达数据的相关算法,下面展开讨论下~
            超全汇总 | 基于Camera的3D目标检测算法综述!(单目/双目/伪激光雷达)
            |
            机器学习/深度学习 传感器 编解码
            【多传感器融合】BEVFusion: 激光雷达和摄像头融合框架 NeurIPS 2022
            BEVFusion提出一个融合多摄像头和激光雷达数据的框架,可用于3D检测。在自动驾驶领域,通过独立处理并融合摄像头和激光雷达数据,可以显著提升3D对象检测的准确性和稳健性,尤其是在激光雷达可能出现故障的真实场景中。
            4020 57
            【多传感器融合】BEVFusion: 激光雷达和摄像头融合框架 NeurIPS 2022
            |
            传感器 机器学习/深度学习 人工智能
            史上最全综述 | 3D目标检测算法汇总!(单目/双目/LiDAR/多模态/时序/半弱自监督)(下)
            近年来,自动驾驶因其减轻驾驶员负担、提高行车安全的潜力而受到越来越多的关注。在现代自动驾驶系统中,感知系统是不可或缺的组成部分,旨在准确估计周围环境的状态,并为预测和规划提供可靠的观察结果。3D目标检测可以智能地预测自动驾驶车辆附近关键3D目标的位置、大小和类别,是感知系统的重要组成部分。本文回顾了应用于自动驾驶领域的3D目标检测的进展。
            史上最全综述 | 3D目标检测算法汇总!(单目/双目/LiDAR/多模态/时序/半弱自监督)(下)
            |
            传感器 计算机视觉
            【论文解读】单目3D目标检测 DD3D(ICCV 2021)
            本文分享单目3D目标检测,DD3D 模型的论文解读,了解它的设计思路,论文核心观点,模型结构,以及效果和性能。
            1347 1
            |
            计算机视觉
            【论文解读】单目3D目标检测 MonoFlex(CVPR 2021)
            本文分享单目3D目标检测,MonoFlex 模型的论文解读,了解它的设计思路,论文核心观点,模型结构,以及效果和性能。
            1136 0