当前位置: 首页 > news >正文

【论文解读】单目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

二、论文核心观点

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

  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个投影角点量化误差建模。

模型结构如下图所示:

 四、模型预测信息与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&#xff…...

基于全景运动感知的飞行视觉脑关节神经网络全方位碰撞检测

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&#xff1a;禁止文字被复制粘贴1.1 Css 处理1.2 Js 处理 2&#xff1a;元素垂直水平居中2.1:方案一2.2 方案二2.3 方案三2.4 方案四2.5 方案五 1&#xff1a;禁止文字被复制粘贴 1.1 Css 处理 <div class"text">我不可以复制信息</div> <…...

蓝桥杯(迷宫,C++)

输入&#xff1a; 思路&#xff1a; 1、注意输入用字符串。 2、采用广度搜素的方法来求解。 3、因为最后要求字典序最小且D<L<R<U,所以在遍历四个方向的时候&#xff0c; 先向下&#xff0c;再向左、右&#xff0c;最后向上。 #include<iostream> #include…...

Python爬虫selenium安装谷歌驱动解决办法

驱动下载链接&#xff1a;CNPM Binaries Mirror (npmmirror.com) 谷歌浏览器老版本下载&#xff1a;Google Chrome 64bit Windows版_chrome浏览器,chrome插件,谷歌浏览器下载,谈笑有鸿儒 (chromedownloads.net) 驱动下载后解压缩直接放入python相应文件夹&#xff1a; 最后&a…...

生信教程:使用拓扑加权探索基因组进化(3)

使用 Twisst 探索整个基因组的进化关系的拓扑加权教程[1]。 简介 拓扑加权是量化不一定是单系群之间关系的一种方法。它通过考虑更简单的“分类单元拓扑”并量化与每个分类单元拓扑匹配的子树的比例&#xff0c;提供了复杂谱系的摘要。我们用来计算权重的方法称为 Twisst&#…...

React js原生 详解 HTML 拖放 API(鼠标拖放功能)

最近碰到了个需求&#xff0c;大概就是要通过可视化拖拽的方式配置一个冰柜&#xff0c;需要把预设好的冰柜内部架子模板一个个拖到冰箱内。一开始的想法是用鼠标事件&#xff08;mousedown、mouseup等&#xff09;那一套去实现&#xff0c;能实现但是过程过于复杂&#xff0c;…...

LiveMedia视频中间件如何与第三方系统实现事件录像关联

一、平台简介 LiveMedia视频中间件是支持部署到本地服务器或者云服务器的纯软件服务&#xff0c;也提供服务器、GPU一体机全包服务&#xff0c;提供视频设备管理、无插件、跨平台的实时视频、历史回放、语音对讲、设备控制等基础功能&#xff0c;支持视频协议有海康、大华私有协…...

机器学习-有监督算法-决策树和支持向量机

目录 决策树ID3C4.5CART 支持向量积 决策树 训练&#xff1a;构造树&#xff0c;测试&#xff1a;从模型从上往下走一遍。建树方法&#xff1a;ID3&#xff0c;C4.5&#xff0c;CART ID3 以信息论为基础&#xff0c;以信息增益为衡量标准熵越小&#xff0c;混乱程度越小&…...

luffy项目之后台项目搭建、目录调整、封装日志、全局异常、Response、数据库连接

luffy后台项目创建 在虚拟环境中创建luffy项目安装django&#xff1a;pip install django3.1.12命令创建项目django-admin startproject luffy_api也可以pycharm创建项目&#xff0c;创建项目时选则已经创建好的虚拟环境即可 luffy项目目录调整 """ ├── …...

C++标准模板(STL)- 类型支持 (数值极限,min_exponent10,max_exponent,max_exponent10)

数值极限 std::numeric_limits 定义于头文件 <limits> 定义于头文件 <limits> template< class T > class numeric_limits; numeric_limits 类模板提供查询各种算术类型属性的标准化方式&#xff08;例如 int 类型的最大可能值是 std::numeric_limits&l…...

linux 服务器类型Apache配置https访问

一&#xff1a;查看服务器类型&#xff0c;下载相应的SSL证书 命令&#xff1a;netstat -anp | grep :80 httpd是Apache超文本传输协议(HTTP)服务器的主程序&#xff0c;所以下载Apache证书 二&#xff1a;将证书解压后复制到服务器上 三个文件&#xff1a;xxx.key xxx_publ…...

langchain 加载各种格式文件读取方法

参考&#xff1a;https://python.langchain.com/docs/modules/data_connection/document_loaders/ https://github.com/thomas-yanxin/LangChain-ChatGLM-Webui/blob/master/app.py 代码 可以支持pdf、md、doc、txt等格式 from langchain.document_loaders import Unstruct…...

飞花令游戏(Python)

飞花令是古时候人们经常玩一种“行酒令”的游戏&#xff0c;是中国古代酒令之一&#xff0c;属雅令。“飞花”一词则出自唐代诗人韩翃《寒食》中 春城无处不飞花 一句。行飞花令时选用诗和词&#xff0c;也可用曲&#xff0c;但选择的句子一般不超过7个字。 在《中国诗词大会》…...

解决“413 Request Entity Too Large”错误 代表请求包太大,服务器拒绝响应

解决办法&#xff1a; 在nginx的配置文件nginx.conf中&#xff0c;添加这么一句client_max_body_size 1024m; 意思是最大请求是1024m。这个配置可以放到 http段 或者 server段 或者 location段。...

MoeCTF2023web

01http 打开题目环境 可以看到要求完成所有任务&#xff0c;这里用burp抓个包 按照要求修改可以得到flag moectf{basic_http_knowledge_HJbg427uFuznTqiJdtS1xhZNwpdsOnKU} 02 Web入门指北 直接找到结尾发现乱码&#xff0c;去解码 编码可以试试url编码和base64到16 这里用…...

C语言编写简易图书管理系统

这篇文章介绍了一个基本的图书管理系统的实现&#xff0c;它允许用户添加、插入、删除、修改、显示和查询图书的功能。该系统通过使用二进制文件将图书信息保存到磁盘&#xff0c;并且在程序启动时能够加载已保存的图书信息。 介绍 在计算机科学中&#xff0c;图书管理系统是…...

C++入门 第一篇(C++关键字, 命名空间,C++输入输出)

目录 1. C关键字 2. 命名空间 2.1 命名空间定义 2.2命名空间的使用 命名空间的使用有三种方式&#xff1a; 1.加命名空间名称及作用域限定符 2.使用using将命名空间中某个成员引入 3.使用using namespace 命名空间名称 引入 3. C输入&输出 4.缺省函数 4.1 缺省参…...

python股票波动性分析

一、简介 我们都经历过这样的情况——盯着股票图表,试图理解那些疯狂的价格上涨,或者只是想知道为什么突然平静。在这些波动中,有一个一致的因素常常脱颖而出:波动性。了解波动性为衡量任何特定点的市场情绪和情绪提供了一个视角。通过剖析波动性的细微差别,我们不仅可以更…...

53 打家劫舍

打家劫舍 题解1 DP1题解2 DP2 &#xff01;经典DP&#xff01; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果 两间相邻的房屋在同一晚上被小偷闯入…...

CentOS 7 基于C 连接ZooKeeper 客户端

前提条件&#xff1a;CentOS 7 编译ZooKeeper 客户端&#xff0c;请参考&#xff1a;CentOS 7 编译ZooKeeper 客户端 1、Docker 安装ZooKeeper # docker 获取zookeeper 最新版本 docker pull zookeeper# docker 容器包含镜像查看 docker iamges# 准备zookeeper 镜像文件挂载对…...

2023-2024-1 for循环-1(15-38)

7-15 输出闰年 输出21世纪中截止某个年份以来的所有闰年年份。注意&#xff1a;闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。 输入格式: 输入在一行中给出21世纪的某个截止年份。 输出格式: 逐行输出满足条件的所有闰年年份&#xff0c;即每个年…...