本文分享单目3D目标检测,MonoFlex 模型的论文解读,了解它的设计思路,论文核心观点,模型结构,以及效果和性能。
目录
一、MonoFlex 简介
MonoFlex是一种端到端、单阶段的单目3D目标检测方法,它基于CenterNet框架结合几何约束,回归方式输出3D框信息。
它优化了被截断物体的3D检测,同时优化了中心点的深度估计,检测速度也比较快。
开源地址:https://github.com/zhangyp15/MonoFlex
论文地址:Objects are Different: Flexible Monocular 3D Object Detection
二、论文核心观点
论文核心观点,主要有3点组成:
- 1、有截断的物体和正常的物体要分开处理,提出了截断目标预测的解耦方法。主要体现在:截断的中心点选取差异。
- 2、深度估计中同时考虑:关键点估计的几何深度、直接回归深度,然后两者做加权结合。
- 3、边缘特征提取和融合,单独把边沿的像素拿出来做注意力特征提取,提高offset和heat map的精度。
三、模型框架
MonoFlex是一个单阶段的框架,实现单目3d检测的模型结构如下:
Backbone:DLA34
Neck:FPN
Head:由四部分组成
第一部分,预测2D框中心点。
- 通过输出heatmap,预测所有类别的中心点(默认类别为3)。
- 这部分加入了Edge Fusion,增强边缘的中心点预测。
第二部分,预测中心点的偏差。
- 对于正常物体,预测2D框中心点与3D框投影坐标之间的偏差。
- 对于截断物体,预测2D框中心,和3D框中心投影点与图像边沿之间交点的偏差。(下面详细讲)
第三部分,预测常规的信息。
- 2D框宽高。
- 3D方向。
- 3D尺寸。
第四部分,预测深度信息。
- 深度信息1:模型直接归回的深度信息。
- 深度信息2:通过关键点和几何约束,计算出来的深度信息。估计一共10个关键点:3D框8个顶点和上框面、下框面在图片中的投影到x_r的offset;然后通过相机模型计算深度。
- 深度信息融合,把几何深度、直接回归深度,然后两者做加权结合。
模型结构如下图所示:
补充一下Edge Fusion模块:
为了提高截断物体的中心点检测,提出了边缘特征提取和融合,单独把边沿的像素拿出来做注意力特征提取,提高offset和heat map的精度。
- 模块首先提取特征映射的四个边界,将其连接到边缘特征向量中。
- 然后由两个1*1 conv处理,以学习截断对象的唯一特征。
- 最后,将处理的向量重新映射到四个边界,并添加到输入特征图。
在热图预测中,边缘特征可以专门用于预测外部对象的边缘热图,从而使内部对象的位置不被混淆。
四、损失函数
MonoFlex 的损失由6部分组成:
- 2D框中心点损失,通过输出heatmap,预测所有类别的中心点;使用 Focal Loss 函数。
- 2D框尺寸损失,使用 L1 Loss 函数。
- 3D框中心点与2D框中心点的偏差损失,使用 L1 Loss 函数。
- 3D朝向角损失,使用MultiBin 函数。
- 3D尺寸损失,使用 L1 Loss 函数。
- 深度信息损失,包括直接回归损失和关键点损失。
补充一下heatmap的损失,它是采用带惩罚因子的Facal Loss。
偏差损失计算公式:
关键带你采用L1 loss进行回归:
五、核心观点——有截断的物体和正常的物体要分开处理
在预测3D框中心点的偏差中,早期是使用2D框中心,作为3D框在图像的中心;直接预测2D框中心点的偏差。
现有的大部分单目3D检测方法,是预测2D框中心点与3D框投影坐标之间的偏差。原理可以看MonoDLE
作者做了实验,分析截断的物体和正常的物体的中心点偏差分布。根据物体的投影3D中心在图像内部还是外部,将物体分为两组,内部对象(Inside Objects)和外部对象(Outside Objects)在从2D中心到投影3D中心过程中,呈现完全不同的偏差分布。
考虑到两组偏移量相差大,联合学习会产生长尾偏移,因此作者将内外对象的表示和偏移学习进行解耦。
于是在MonoFlex提出了:有截断的物体和正常的物体要分开处理。主要体现在:截断的中心点选取差异。
下面分析中心点选取的差异:
- 对于正常物体,预测2D框中心点与3D框投影坐标之间的偏差。
- 对于截断物体,预测2D框中心,和3D框中心投影点与图像边沿之间交点的偏差。
下面图中,Xb是2D框中心、Xc是3D框投影在图像中的中心、Xl是预测2D框中心和3D框中心投影点,在图像边沿之间交点。
正常物体,预测3D框中心偏差时,使用Xc与Xb之间的距离作为标签。即:δc=Xc−Xb。
截断物体,预测3D框中心偏差时,使用Xl与Xb之间的距离作为标签。
上图右侧看一下截断物体,中心点在图像边缘的heatmap情况。
为了提高截断物体的中心点检测,提出了边缘特征提取和融合,单独把边沿的像素拿出来做注意力特征提取,提高offset和heat map的精度。
下面是对比图像边沿交点Xl(浅蓝色),与2D框中心Xb(绿色)
下面是是对比实验:
六、核心观点——深度估计同时考虑几何深度和直接回归深度
在深度估计中,同时考虑关键点估计的几何深度和直接回归深度,然后两者做加权结合。
【一、直接回归深度】
【二、关键点估计的几何深度】
采取10个关键点:8个顶点+1个顶面中心+1个底面中心。通过10个关键点和相机投影模型,可以计算出深度信息z。
使用目标的2D高度和3D高度之间的相对比例来计算目标深度,投影公式:
从高度求解深度不仅与orientation估计无关,而且受dimension估计误差的影响较小。
即:3D 边界框支撑线的深度可以通过对象高度和线的像素高度来计算。将十个关键点分为三组,每组都可以独立产生中心深度。
【三、深度信息加权合并】
利用M+1个深度估计值和不确定性,进行加权求解平均值:
该方式可以为那些高置信度的估计器分配更高的权重,同时对潜在的不准确具有鲁棒性。
七、实验对比与模型效果
在KITTI 验证/测试集上的实验,选择Car类别。模型精度高,实时性好。
模型检测效果:
在截断物体的检测效果:
分享完成~
【数据集】单目3D目标检测:
3D目标检测数据集 KITTI(标签格式解析、3D框可视化、点云转图像、BEV鸟瞰图)_kitti标签_一颗小树x的博客-CSDN博客
3D目标检测数据集 DAIR-V2X-V_一颗小树x的博客-CSDN博客
【论文解读】单目3D目标检测:
【论文解读】SMOKE 单目相机 3D目标检测(CVPR2020)_相机smoke-CSDN博客
【论文解读】单目3D目标检测 CUPNet(ICCV 2021)-CSDN博客
【论文解读】单目3D目标检测 DD3D(ICCV 2021)-CSDN博客
【论文解读】单目3D目标检测 MonoDLE(CVPR2021)_一颗小树x的博客-CSDN博客
【论文解读】单目3D目标检测 MonoCon(AAAI2022)_一颗小树x的博客-CSDN博客
【实践应用】
单目3D目标检测——SMOKE 环境搭建|模型训练_一颗小树x的博客-CSDN博客
单目3D目标检测——SMOKE 模型推理 | 可视化结果-CSDN博客
单目3D目标检测——MonoDLE 模型训练 | 模型推理_一颗小树x的博客-CSDN博客
单目3D目标检测——MonoCon 模型训练 | 模型推理-CSDN博客
后面计划分享,实时性的单目3D目标检测:MonoEF、MonoDistillI、DEVIANT等