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

目录
一、MonoCon简介
二、论文核心观点
三、模型框架
四、模型预测信息与3D框联系
五、损失函数
六、核心内容——辅助训练分支与3D检测分支
七、实验对比与模型效果
一、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
二、论文核心观点
论文核心观点,主要包括为两点:
- 带注释的3D 边界框,可以产生大量可用的良好投影的 2D 监督信号。
- 使用辅助学习,促进网络学习特征的能力。
三、模型框架
MonoCon是基于CenterNet框架,实现单目3d检测的。模型结构如下:
Backbone:DLA34
Neck:DLAUp
常规3D框检测头:5个分支
- 分支一 通过输出heatmap,预测2D框中心点的粗略坐标,以及类别分数。
- 分支二 预测2D框中心点粗坐标与真实的3D投影坐标之间的偏移。
- 分支三 预测2D框中心点粗坐标的深度值,和其不确定性。
- 分支四 预测3D框的尺寸。
- 分支五 预测观测角。
辅助训练头:5个分支
- 分支一 8个投影角点和3D框的投影中心。
- 分支二 8个投影角点到2D框中心的offsets。
- 分支三 2D框的尺寸。
- 分支四 2D框中心量化误差建模。
- 分支五 8个投影角点量化误差建模。
模型结构如下图所示:

四、模型预测信息与3D框联系
3D框相关的信息
1、3D中心点坐标(cw, yw, zw):通过预测3D中心在像素坐标系下的坐标,结合相机内参可以获得中心点在图像物理坐标系下的坐标(x,y,z)。再结合预测深度zw,获得zw/z的比例系数,就能求出xw,yw。由此可见,深度估计对整体定位精度的影响还是很大的。
2、深度估计:基于端到端的思路实现;同时在输出上做了一个不确定性建模,在预测深度d的基础上同时预测标准差σ。对于σ的分布,文中做了拉普拉斯分布和高斯分布,起到一定优化作用。
3、尺寸估计:以往的尺寸估计,应用的损失函数都是通过计算和真值框之间的交并比来约束尺寸。这样带来的问题就是,由于中心点的预测误差导致的损失偏大,会给尺寸估计带来不必要的负担。所以作者提出了尺寸估计并专门设计了损失函数,只针对尺寸的预测误差对这个分支进行优化。并且根据长宽高对于IOU影响的比例不同,对参数优化的权重也按比例进行了设置。
4、航向角估计:用的是multi-bin loss。
模型预测信息,如下图所示:

五、损失函数
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),
补充说明 深度值损失的公式定义如下:

六、核心内容——辅助训练分支与3D检测分支
3D框检测头:5个分支
分支一 通过输出heatmap,预测2D框中心点的粗略坐标,以及类别分数。借鉴自CenterNet,预测C类目标(KITTI中为3类:Car,Pedestrian,Cyclist)的中心点坐标(xb, yb) 。
分支二 预测2D框中心点粗坐标与真实的3D投影坐标之间的偏移。2D框中心坐标(xb, yb),到3D框中心坐标(xc, yc)之间的偏移。
分支三 预测2D框中心点粗坐标的深度值,和其不确定性;其中深度值采用逆Sigmoid进行处理。

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 级别的。

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

模型预测效果:

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

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

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



分享完成~
【数据集】单目3D目标检测:
3D目标检测数据集 KITTI(标签格式解析、3D框可视化、点云转图像、BEV鸟瞰图)_kitti标签_一颗小树x的博客-CSDN博客
3D目标检测数据集 DAIR-V2X-V_一颗小树x的博客-CSDN博客
【论文解读】单目3D目标检测:
【论文解读】SMOKE 单目相机 3D目标检测(CVPR2020)_相机smoke-CSDN博客
【论文解读】单目3D目标检测 MonoDLE(CVPR2021)_一颗小树x的博客-CSDN博客
【实践应用】
单目3D目标检测——SMOKE 环境搭建|模型训练_一颗小树x的博客-CSDN博客
单目3D目标检测——SMOKE 模型推理 | 可视化结果-CSDN博客
后面计划分享,实时性的单目3D目标检测:MonoFlex、MonoEF、MonoDistillI、GUPNet、DEVIANT等
相关文章:
【论文解读】单目3D目标检测 MonoCon(AAAI2022)
本文分享单目3D目标检测,MonoCon模型的论文解读,了解它的设计思路,论文核心观点,模型结构,以及效果和性能。 目录 一、MonoCon简介 二、论文核心观点 三、模型框架 四、模型预测信息与3D框联系 五、损失函数 六、…...
Angular知识点系列(5)-每天10个小知识
目录 41. Angular的路由守卫42. 处理文件的上传和下载43. Angular的动画系统44. 使用第三方库和选择评估45. 性能优化46. AOT和JIT编译47. 处理响应式布局和适配不同屏幕尺寸48. Angular的国际化(i18n)49. Angular的PWA开发50. 使用Angular Material或其…...
基于海洋捕食者优化的BP神经网络(分类应用) - 附代码
基于海洋捕食者优化的BP神经网络(分类应用) - 附代码 文章目录 基于海洋捕食者优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.海洋捕食者优化BP神经网络3.1 BP神经网络参数设置3.2 海洋捕食者算法应用 4…...
Lift, Splat, Shoot图像BEV安装与模型详解
1 前言 计算机视觉算法通常使用图像是作为输入并输出预测的结果,但是对结果所在的坐标系却并不关心,例如图像分类、图像分割、图像检测等任务中,输出的结果均在原始的图像坐标系中。因此这种范式不能很好的与自动驾驶契合。 在自动驾驶中,多个相机传感器的数据一起作为输…...
MySQL简介
数据库管理系统 1、关系型数据库管理系统: Oracle:Oracle是一种商业级关系型数据库管理系统,支持高可用性、高安全性以及广泛的企业级应用需求。SQL Server:SQL Server是Microsoft开发的企业级关系型数据库管理系统,广泛应用于Windows环境下的软件开发。MySQL:MySQL是一…...
php代码优化---本人的例子
直接上货: 1:数据统计 店铺数量、提现金额、收益金额、用户数量 旧: // //店铺// $storey db( store )->whereTime( addtime, yesterday )->count();//昨天// $stored db( store )->whereTime( addtime, d )->count();//今天…...
EMC Unity存储(VNXe) service Mode和Normal Mode的一些说明
本文介绍下EMC unity存储设备(也包含VNXe存储设备)的两种工作模式: Service mode:也叫做rescue mode,存储OS工作不正常或者有其他故障,就会进入这个模式,无法对外提供服务Normal modeÿ…...
基于全景运动感知的飞行视觉脑关节神经网络全方位碰撞检测
https:/doi.org/10.1155/2023/5784720 摘要: 生物系统有大量的视觉运动检测神经元,其中一些神经元可以优先对特定的视觉区域做出反应。然而,关于如何使用它们来开发用于全向碰撞检测的神经网络模型,很少有人做过工作。为此&#…...
Java 继承与实现
一、继承(extends) 1.1 继承概念 继承是面向对象的基本特征,它允许子类继承父类的特征和行为,以提高代码的复用率和维护性等。下面一张图生动地展示了继承和类之间的关系: 继承图 上图中,“动物”、“食草…...
Unity 3D基础——计算两个物体之间的距离
1.在场景中新建两个 Cube 立方体,在 Scene 视图中将两个 Cude的位置错开。 2.新建 C# 脚本 Distance.cs(写完记得保存) using System.Collections; using System.Collections.Generic; using UnityEngine;public class Distance : MonoBehav…...
css常见问题处理
文章目录 1:禁止文字被复制粘贴1.1 Css 处理1.2 Js 处理 2:元素垂直水平居中2.1:方案一2.2 方案二2.3 方案三2.4 方案四2.5 方案五 1:禁止文字被复制粘贴 1.1 Css 处理 <div class"text">我不可以复制信息</div> <…...
蓝桥杯(迷宫,C++)
输入: 思路: 1、注意输入用字符串。 2、采用广度搜素的方法来求解。 3、因为最后要求字典序最小且D<L<R<U,所以在遍历四个方向的时候, 先向下,再向左、右,最后向上。 #include<iostream> #include…...
Python爬虫selenium安装谷歌驱动解决办法
驱动下载链接:CNPM Binaries Mirror (npmmirror.com) 谷歌浏览器老版本下载:Google Chrome 64bit Windows版_chrome浏览器,chrome插件,谷歌浏览器下载,谈笑有鸿儒 (chromedownloads.net) 驱动下载后解压缩直接放入python相应文件夹: 最后&a…...
生信教程:使用拓扑加权探索基因组进化(3)
使用 Twisst 探索整个基因组的进化关系的拓扑加权教程[1]。 简介 拓扑加权是量化不一定是单系群之间关系的一种方法。它通过考虑更简单的“分类单元拓扑”并量化与每个分类单元拓扑匹配的子树的比例,提供了复杂谱系的摘要。我们用来计算权重的方法称为 Twisst&#…...
React js原生 详解 HTML 拖放 API(鼠标拖放功能)
最近碰到了个需求,大概就是要通过可视化拖拽的方式配置一个冰柜,需要把预设好的冰柜内部架子模板一个个拖到冰箱内。一开始的想法是用鼠标事件(mousedown、mouseup等)那一套去实现,能实现但是过程过于复杂,…...
LiveMedia视频中间件如何与第三方系统实现事件录像关联
一、平台简介 LiveMedia视频中间件是支持部署到本地服务器或者云服务器的纯软件服务,也提供服务器、GPU一体机全包服务,提供视频设备管理、无插件、跨平台的实时视频、历史回放、语音对讲、设备控制等基础功能,支持视频协议有海康、大华私有协…...
机器学习-有监督算法-决策树和支持向量机
目录 决策树ID3C4.5CART 支持向量积 决策树 训练:构造树,测试:从模型从上往下走一遍。建树方法:ID3,C4.5,CART ID3 以信息论为基础,以信息增益为衡量标准熵越小,混乱程度越小&…...
luffy项目之后台项目搭建、目录调整、封装日志、全局异常、Response、数据库连接
luffy后台项目创建 在虚拟环境中创建luffy项目安装django:pip install django3.1.12命令创建项目django-admin startproject luffy_api也可以pycharm创建项目,创建项目时选则已经创建好的虚拟环境即可 luffy项目目录调整 """ ├── …...
C++标准模板(STL)- 类型支持 (数值极限,min_exponent10,max_exponent,max_exponent10)
数值极限 std::numeric_limits 定义于头文件 <limits> 定义于头文件 <limits> template< class T > class numeric_limits; numeric_limits 类模板提供查询各种算术类型属性的标准化方式(例如 int 类型的最大可能值是 std::numeric_limits&l…...
linux 服务器类型Apache配置https访问
一:查看服务器类型,下载相应的SSL证书 命令:netstat -anp | grep :80 httpd是Apache超文本传输协议(HTTP)服务器的主程序,所以下载Apache证书 二:将证书解压后复制到服务器上 三个文件:xxx.key xxx_publ…...
利用Cosmos-Reason1-7B进行Java面试题智能解析与答案生成
利用Cosmos-Reason1-7B进行Java面试题智能解析与答案生成 最近在帮朋友准备Java面试,发现一个挺普遍的问题:网上的面试题答案要么太零散,要么太浅显,很难找到一个能讲透原理、还能分析源码的深度解析。自己整理吧,费时…...
Pixel Epic动态卷轴技术揭秘:TextIteratorStreamer流式输出实现原理与调优
Pixel Epic动态卷轴技术揭秘:TextIteratorStreamer流式输出实现原理与调优 1. 引言:像素史诗的独特体验 Pixel Epic(像素史诗)作为一款研究报告辅助终端,最引人注目的特点莫过于其独特的"动态卷轴"输出效果…...
Phi-4-mini-reasoning惊艳效果:自动识别题目所属数学分支并推荐解法策略
Phi-4-mini-reasoning惊艳效果:自动识别题目所属数学分支并推荐解法策略 1. 模型介绍 Phi-4-mini-reasoning是微软推出的3.8B参数轻量级开源模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这个模型主打"小参数、强推理、长上下文、低延…...
从FasterRCNN到自定义检测器:SimpleDet扩展开发完全手册
从FasterRCNN到自定义检测器:SimpleDet扩展开发完全手册 【免费下载链接】simpledet A Simple and Versatile Framework for Object Detection and Instance Recognition 项目地址: https://gitcode.com/gh_mirrors/si/simpledet SimpleDet是一个简单且多功能…...
3步打造零杂乱桌面:NoFences开源桌面管理工具全指南
3步打造零杂乱桌面:NoFences开源桌面管理工具全指南 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否每天花费10分钟在混乱的桌面寻找文件?据统计…...
等保测评后,我的CentOS/Ubuntu服务器安全加固清单还加了这些
等保测评后,我的CentOS/Ubuntu服务器安全加固清单还加了这些 在完成等保测评基础整改后,许多安全工程师常陷入"合规即安全"的误区。实际上,等保要求只是安全基线的最低标准。本文将分享我在实际运维中积累的合规之上的实战加固技巧…...
Ostrakon-VL像素终端实战:为盲人顾客生成语音版货架导航
Ostrakon-VL像素终端实战:为盲人顾客生成语音版货架导航 1. 项目背景与价值 在零售场景中,视觉障碍顾客常常面临难以独立寻找商品的困境。传统解决方案依赖人工引导或专用盲道,成本高且灵活性不足。我们基于Ostrakon-VL-8B多模态大模型&…...
从原理到实战:位运算巧解最小码距(附完整代码)
1. 什么是码距?从生活场景理解概念 第一次听到"码距"这个词时,我脑海里浮现的是超市货架上相似商品间的距离。后来才发现,在计算机世界里,它描述的是两个编码之间的差异程度。举个生活中的例子:假设我们用5…...
预制指标、宽表、SQL、本体ABC:真正决定长期成本的,是一次变更会波及多少层
企业做智能问数,最常见的比较题是:预制指标、宽表、人工 SQL、本体ABC,到底哪条路线维护成本更低?如果只给一个笼统答案,往往容易失真。因为真正决定长期成本的,不是“今天开发快不快”,也不是“…...
Windows 10/11下用StyleGAN2-ADA-PyTorch训练自己的数据集(避坑Visual Studio编译错误)
Windows平台StyleGAN2-ADA-PyTorch环境配置全指南:从编译错误到自动化训练 在Windows 10/11上配置StyleGAN2-ADA-PyTorch环境时,许多开发者都会遇到Visual Studio编译工具链缺失的经典问题。不同于Linux系统的开箱即用,Windows环境需要额外处…...
