1. 引言

随着深度学习的浪潮从 2D 图像席卷至更加广泛的数据模态和应用场景,3D 物体检测作为现实应用场景中极其重要的一个任务被越来越多的研究者所关注。在这一波浪潮中,最早取得成功和巨大现实影响力的当属基于 LiDAR 点云的针对室外驾驶场景的检测方案们(最早如 MV3D, VoxelNet, Frustum PointNet 等)。而单目3D检测由于其低成本的感知方案,近年来受到越来越多的学者关注,但纯视觉方案的检测性能远不如基于 LiDAR 的一众方法,这是符合直觉的,因为二维图像终究是二维信息,当其中提取到的深度信息不准时,感知任务也变得举步维艰。在进行单目3D检测时,深度信息的估计是重中之重,本文分享2021年CVPR上的一篇单目3D检测论文,其用一种较优雅的方式解决了单目3D检测的问题,也在kitti上达到了SOTA效果。

  • 标题:"Objects are Different: Flexible Monocular 3D Object Detection"
  • 作者: Yunpeng Zhang, Jiwen Lu * , Jie Zhou
  • 年份:2021
  • 期刊:CVPR

2.任务需求

单目3D检测要求使用长方体表征每个目标,长方体投影至图像其效果如图一所示,长方体的数学表征形式为:[x,y,z,w,h,l,θ][x,y,z,w,h,l,\theta][x,y,z,w,h,l,θ], 其中:

  • x,y,zx,y,zx,y,z 为长方体框的中心在相机坐标系下的坐标
  • l,w,hl,w,hl,w,h 为长方体的长宽高信息
  • θ\thetaθ 为长方体的航向角
  • 除以上内容,另外还需要一个代表目标类别的cls

图一.3D检测结果在二维图像上的展示

PS:kitti数据集中相机坐标系如图所示

图二.相机坐标系


3. 论文分析

本部分采取自顶向下的介绍流程,首先介绍Monoflex宏观上的设计思路,再具体阐述各部分损失函数的设计,以及ground true的表示方法

3.1 总体思路

作者将任务需求[x,y,z,W,H,L,θ][x,y,z,W,H,L,\theta][x,y,z,W,H,L,θ],分解为四个子任务进行求解。每个部分完成以下内容:

  1. 对每一类检测目标,均给出先验信息[h‾c,w‾c,l‾][\overline h{_c},\overline w{_c},\overline l][hc​,wc​,l],通过网络输出偏差(δh,δw,δl)(δ_ h , δ_ w , δ_ l )(δh​,δw​,δl​),最终得到[W,H,L][W,H,L][W,H,L]
  2. 估计深度信息z.
  3. 利用深度信息z与长方体的中心在二维图像上的像素坐标结合相机投影公式得出长方体的中心在相机坐标系下的坐标值[x,y][x,y][x,y]
  4. 利用网络直接回归得到角度信息
    图三.Monoflex网络框架图

作者设计如图三所示网络框架,来完成上述子任务。单目图像经过CNN backbone 提取特征后,再经过head端,输出各部分结果。对应上述4个子任务,图三网络框架其实也可拆分为4部分进行阐述。下面将依次阐述:

3.1.1 [W,H,L][W,H,L][W,H,L] 的获得

  • 给出先验信息[h‾c,w‾c,l‾][\overline h{_c},\overline w{_c},\overline l][hc​,wc​,l],代表每一类目标的初始长宽高,
  • 单目图像经过网络输出偏差 :Dimension:=[δh,δw,δl]Dimension:=[δ_ h , δ_ w , δ_ l ]Dimension:=[δh​,δw​,δl​]
  • 通过H=h‾ceδh\overline h{_c}e^{δ_ h}hc​eδh​, W=h‾ceδh\overline h{_c}e^{δ_ h}hc​eδh​, L=h‾ceδh\overline h{_c}e^{δ_ h}hc​eδh​来获得目标最终的尺寸。

3.1.2 深度信息z 的获得

论文中,深度信息z的最终值由两部分组成,一部分是由网络直接预测得到的zdirectz_{direct}zdirect​,一部分是由相机小孔成像相似三角形得到的zindirectz_{indirect}zindirect​,两者通过各自的概率信息,融合得到最终的z值。

zdirectz_{direct}zdirect​的获得:单目图像经过网络,输出depth和depth的置信度。

zindirectz_{indirect}zindirect​的获得:

间接法主要利用小孔成像相似三角形公式:

zl=f∗Hhz_l = \frac {f*H}hzl​=hf∗H​

其中:

  • f为相机的焦距
  • H为目标在三维坐标系下的高度值,由3.1.1获得
  • h为目标在图像坐标系下的像素高度

此时上述公式中的h值未知,作者通过神经网络输出10个特征点(keypoints)在图像上的坐标,以及3组置信度。10个特征点可获得5个h值,这5个h值又可分成3组(对角线两组,中心一组),其中每组对角线上的两个h值代入上述公式后,计算结果取平均,可得一个zindirectz_{indirect}zindirect​,三组h值可得3个zindirectz_{indirect}zindirect​,

图四.10个特征点,以及特征点的分组

多个深度信息z的融合:

此时我们有多个深度信息ziz_izi​,以及他们的置信度σi\sigma_iσi​ 我们通过以下公式计算得到最后的深度信息值

zsoft=(∑i=1Mziσi)/(∑i=1M1σi)z_{soft} = (\sum_{i=1}^M \frac{ z_i} {\sigma_i } ) /(\sum_{i=1}^M \frac{ 1} {\sigma_i }) zsoft​=(i=1∑M​σi​zi​​)/(i=1∑M​σi​1​)


3.1.3 [x,y][x,y][x,y]的获得

目标中心在三维坐标系下的坐标值[x,y]主要由以下相机投影关系公式获得:

x=(uc−cu)zfx=\frac{(u_c-c_u)z}{f}x=f(uc​−cu​)z​

y=(vc−cv)zfy=\frac{(v_c-c_v)z}{f}y=f(vc​−cv​)z​

其中:

  • [uc,vc][u_c,v_c][uc​,vc​]为目标中心在图像坐标系下的坐标值
  • [cu,cv][c_u,c_v][cu​,cv​]为相机光轴和成像平面的交点在图像坐标系下的坐标值
  • f为相机焦距
  • z为3.1.2中获得的深度信息

[cu,cv],f[c_u,c_v],f[cu​,cv​],f为相机内参,通过标定可以获得,此时如何获得[uc,vc][u_c,v_c][uc​,vc​]即目标中心在图像坐标系下的坐标值,成了一个问题。

目标中心在图像坐标系下的坐标值的获得主要参考了2019CVPR的论文“objects as points”。objects as points 的核心思想是将目标作为一个点——即目标BBox的中心点。检测器采用关键点估计来找到中心点,并回归到其他目标属性,例如尺寸,3D位置,方向,甚至姿态。

Monoflex中采用了将目标作为一个点的核心思想,将3D目标中心[uc,vc][u_c,v_c][uc​,vc​]作为表示目标的关键点,简单而言,神经网络按照类别输出热力图,热力图上的峰值的坐标即表示物体的中心在图像上的坐标[uc,vc][u_c,v_c][uc​,vc​]


3.1.4 角度的回归

角度的回归较为简单,直接通过神经网络输出即可。


3.2 各部分损失函数的设计以及ground true的表示方法

未完待续。。。

【单目3D检测】Monoflex论文阅读相关推荐

  1. AutoShape:实时单目3D检测网络(ICCV2021)

    作者丨柒柒@知乎 来源丨https://zhuanlan.zhihu.com/p/404683961 编辑丨3D视觉工坊 论文标题:AutoShape: Real-Time Shape-Aware M ...

  2. GUPNet:基于几何不确定性映射的单目3D检测网络(ICCV2021)

    作者丨柒柒@知乎 来源丨https://zhuanlan.zhihu.com/p/397105796 编辑丨3D视觉工坊 论文标题:Geometry Uncertainty Projection Ne ...

  3. MonoDETR:用于单目3D检测的深度感知transformer(CVPR2022)

    作者丨zyrant@知乎 来源丨https://zhuanlan.zhihu.com/p/508682621 编辑丨3D视觉工坊 -- 2022.4.29 by 周报拓展. --CVPR还有一篇Mon ...

  4. 如何在mmdetection3d下批量的预测单目3d检测结果并保存

    这是为了能通过pycharm功能在服务器下可以看见图片并成批量保存做的笔记,本人不是太会说明,所以代码解释如下 from mmdet3d.apis import init_model, inferen ...

  5. 【单目3D目标检测】MonoFlex论文精读与代码解析

    文章目录 Preface Abstract Contributions Pipeline Problem Definition Decoupled Representations of Objects ...

  6. 【单目3D目标检测】SMOKE论文解析与代码复现

    文章目录 yacs Introduction Usage SMOKE Preface Abstract Contributions Pipeline Backbone Head Branch Orie ...

  7. 【单目3D目标检测】MonoDLE论文精读与代码解析

    文章目录 Preface Abstract Contributions Diagnostic Experiments Pipeline Revisiting Center Detection Trai ...

  8. 【单目3D目标检测】FCOS3D + PGD论文解析与代码复现

    文章目录 前言 FCOS3D 概述 主要创新点 主要框架结构 回归目标 损失函数 推理过程 2D引导的多层3D预测 2D高斯分布的3D中心度 实验设置 源码复现 PGD 概述 主要创新点 深度估计 主 ...

  9. 探究位置误差对单目3D目标检测影响

    标题:Delving into Localization Errors for Monocular 3D Object Detection 作者:Xinzhu Ma1, Yinmin Zhang3, ...

  10. 浅述单目3D目标检测

    作者丨慕弋云子@知乎 来源丨https://zhuanlan.zhihu.com/p/432135656 编辑丨3D视觉工坊 三维目标检测是一个相对上游.比较基础却又新兴的任务领域.得益于自动驾驶和2 ...

最新文章

  1. 大于小于优化_工程优化设计与Matlab实现——优化设计的数学基础
  2. 28家知名IT公司名称的由来
  3. mockito接口_什么是Mockito Extra接口?
  4. windows上的python能否在unix上使用_怎么用python在Windows系统下,生成UNIX格式文件
  5. android 底部滑动效果怎么做,Android实现简单底部导航栏 Android仿微信滑动切换效果...
  6. 锦标赛排序、洪水填充算法、平衡规划
  7. java isequal_Java LocalDate isEqual()用法及代码示例
  8. deepfake 资源总结
  9. java.net.URLEncoder 、URLDecoder 编码与解码
  10. vue 保留小数点厚一位_蓝盈莹真是一位有韵味的女人,羊羔绒还要拼上牛仔穿,真惹眼...
  11. 【Energy Forecasting】能源预測的发展和展望
  12. 佳能Canon imageCLASS MF236n 一体机驱动
  13. 如何在linux下编写代码(非常详细)
  14. 移动开发之三种近场通信
  15. python 排产计划_生产排程计划表
  16. java8新特性之lambda表达式--超级详细版本
  17. 第二次结对编程——电梯调度算法UI贾伟王伟东
  18. 型号不同的计算机内存条可以通用么,想知道电脑内存条不同品牌可以混用吗
  19. 温度自动控制系统matlab,某温度控制系统的MATLAB仿真
  20. H5项目中 ios的border不显示问题

热门文章

  1. 「 数学模型 」“三角函数化简公式”小结
  2. Visual Studio安装时,installer下载不动的问题解决
  3. 三方协议、报到证(派遣证)、干部身份
  4. linux下国产达梦数据库的命令行安装
  5. 08矩阵加法httpwww.noi.openjudge.cn
  6. [Python程序设计] 用Scrapy爬取学堂在线计算机类课程页面的信息
  7. CAD图纸被设置成只读格式,如何取消?
  8. npm安装依赖报错:npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\misal\AppData\R
  9. 怎么查看微信收藏功能的剩余可用空间
  10. excel换行快捷键_13个excel快捷键,学会他们,让你的1秒钟,抵得上同事的5分钟...