Deep3DBox论文解读
Deep3DBox是早期的一篇来自于CVPR上经典的单目3D检测的文章《3D Bounding Box Estimation Using Deep Learning and Geometry》
文章链接:CSDL | IEEE Computer Society
核心思想:
首先使用深度神经网络回归出相对稳定的3D目标的特性,再利用估计出来的3D特征和由2D bounding box转换为3D bounding box时的几何约束来产生最终的结果。文章先回归方向和尺寸,再结合几何约束产生3D位姿。
第一层网络输出一个混合离散-连续损失(MultiBin)来表示3D物体的方向,这个损失优于L2.
第二层网络回归3D物体的尺寸(可以从很多物体类别中得到先验)
框架结构:
文章实现了从单目图像预测目标物体3D位置、大小以及朝向的功能。整个算法框架分为三个部分:
1、2D图像目标检测网络:文章采用MS-CNN网络检测2D目标,
2、目标大小姿态估计网络:获取2D检测框之后将其截取出来Resize到224x244,送入VGG网络来回归3D包围框的长宽高以及朝向角
3、目标3D中心点解算模块:利用预测的长宽高以及角度的几何投影的关系来求解一个最小二乘方程组计算3D包围框中心点的三维坐标(相机坐标系)
值得注意的是也可以把一二部分结合起来,在目标检测网络后面直接加了大小和朝向的回归分支,所以整体框架又可以理解为:2D图像目标检测以及大小姿态估计网络+目标3D中心点解算模块。
上图的CNN参数估计模型的结构在公共的特征图后网络有三个分支,分别估计3D物体的长宽高、每个Bin的置信度和每个Bin的角度估计。所有的分支得到相同的卷积特征,并且所有的损害权重结合为:
实现细节:
2D box的回归:文中采用MS-CNN网络进行2D检测,该网络类似RCNN系列,分为proposal提取ROI和目标检测两个部分。该检测器的设计之初是为了解决目标大小不一致的问题,采用的多尺度目标检测器能够解决这种目标大小与感受野不一致的现象,每一个检测层只着重检测与这一层尺寸相匹配的目标。
中间是网络的主干,在一些卷积层中带有分支结构。其中每个分支都是一个单一尺度的目标检测器。
绿色框代表检测到的目标候选框,蓝色框为带有该目标的上下文信息的候选框,其中蓝色框为绿色框的1.5倍,通过将这两个框进行堆叠,在通过一个降维卷积层将冗余的信息进行压缩,在不损失准确率的情况下减少了参数。
3D box的长宽高回归:在 KITTI 数据库中,车,货车,卡车 和 公交车都是不同的类并且不同类的区分方差很小且单峰,所以直接使用 L2损失。首先对不同类别的物体统计真实尺寸,获得每个类别的先验长宽高,通过网络回归真实物体尺寸相对于该类物体先验的残差:
角度回归:估计全局物体方向角 R 需要相机的参考帧中检测窗口的crop和 crop 的位置。考虑到R(θ)参数只由 θ(yaw) 决定。下图是一辆车沿直线行驶的例子。尽管全局的方向R(θ) 没有变,但是它的局部角 θ( 全局方向和相机中心穿过 crop 中心的射线形成的角度) 一直在改变。
因此我们需要回归局部角 θ,下图展示了局部角 θ 和射线角度变化的关系由全局角约束。给定相机的内参,射线的具体像素可以不用计算。我们通过结合射线的防线和局部角来计算物体的全局角。
文章提出MultiBin的结构来进行姿态的估计,首先离散化旋转角到N个重叠的Bin,对个每一个Bin,CNN网络估计出姿态角度在当前Bin的概率,同时估计出角度值的Cos和Sin值。
还有一个注意点是,回归角度的分支实际是回归角度的正弦值以及余弦值,需要在fc层后加上L2 norm,因为这样才归一化到三角函数的值域范围。
3D box解算:已知相机内参矩阵:
从目标坐标系(三维框中心为原点,向前为z轴正方向,向右是x轴正方向,向下为y轴正方向)转到相机系(与KITTI的定义一样,向前为z轴正方向,向右是x轴正方向,向下为y轴正方向)的旋转矩阵为:
目标系原点在相机系中的坐标为:
则目标三维框的8个顶点可以用下面的公式转化为平面的图像坐标:
其中,[X,Y,Z]为目标系中三维框顶点坐标,[x,y]为投影到图像坐标系的坐标,
注意R可以用r_y角求得,[X,Y,Z]可以直接根据预测的H、W、L写出来,而[x,y]是由2D目标检测网络检测得到的2维框顶点坐标,所以这里未知数是[Tx,Ty,Tz]。
上面又可以写为:
展开后有:
文中假设三维框的顶点投影到图上应该包含在图像目标2维框内,故8个点投影出的x的最小值应该等于2D框的最小的x,即左上点的x坐标;8个点投影出的y的最小值应该等于2D框的最小的y,即左上点的y坐标;8个点投影出的x的最大值应该等于2D框的最大的x,即右下点的x坐标;8个点投影出的y的最大值应该等于2D框的最大的y,即右下点的y坐标。故共有4个方程,求解用最小二乘即可。
要点分析:
1. 通过2D bounding box (方向和大小由CNN产生) 和几何约束估计物体3D位姿和尺寸。
2. 采用MultiBin回归的离散-连续 CNN 结构用来估计物体的方向。
3. 提出三个额外的判断3D box精度效果指标:box 中心离相机的距离,最近的bounding box 离相机的距离,所有的bounding box 跟ground truth 的 overlap(通过 3D intersection over Union (3DIoU))。
实验结果:
思考与展望:
文章的思路是将深度学习和多视几何相结合起来用2D检测加上几何约束回归3D信息,但是3D定位精度本质上受限于重投影误差, 2D box 的定位精度是有限的,所以瓶颈明显。
其一是部分目标有一部分出现在图像内一部分出现在图像外时,3D框是不准的,因为在求解三维位置时,假设了2D框的中心是3D框中心的投影。
其二是与2D目标检测器的位置回归精度有强依赖。
当然区别与该思路的其他方法有两个:
其一是走立体匹配的路线,先要做深度估计,然后可以直接使用深度图也可以转换成伪点云使用;
其二是结合时间信息在视频中完成物体的位姿和速度的预测;
Deep3DBox论文解读相关推荐
- 自监督学习(Self-Supervised Learning)多篇论文解读(下)
自监督学习(Self-Supervised Learning)多篇论文解读(下) 之前的研究思路主要是设计各种各样的pretext任务,比如patch相对位置预测.旋转预测.灰度图片上色.视频帧排序等 ...
- 自监督学习(Self-Supervised Learning)多篇论文解读(上)
自监督学习(Self-Supervised Learning)多篇论文解读(上) 前言 Supervised deep learning由于需要大量标注信息,同时之前大量的研究已经解决了许多问题.所以 ...
- 可视化反投射:坍塌尺寸的概率恢复:ICCV9论文解读
可视化反投射:坍塌尺寸的概率恢复:ICCV9论文解读 Visual Deprojection: Probabilistic Recovery of Collapsed Dimensions 论文链接: ...
- 从单一图像中提取文档图像:ICCV2019论文解读
从单一图像中提取文档图像:ICCV2019论文解读 DewarpNet: Single-Image Document Unwarping With Stacked 3D and 2D Regressi ...
- 点云配准的端到端深度神经网络:ICCV2019论文解读
点云配准的端到端深度神经网络:ICCV2019论文解读 DeepVCP: An End-to-End Deep Neural Network for Point Cloud Registration ...
- 图像分类:CVPR2020论文解读
图像分类:CVPR2020论文解读 Towards Robust Image Classification Using Sequential Attention Models 论文链接:https:// ...
- CVPR2020论文解读:手绘草图卷积网络语义分割
CVPR2020论文解读:手绘草图卷积网络语义分割 Sketch GCN: Semantic Sketch Segmentation with Graph Convolutional Networks ...
- CVPR2020论文解读:3D Object Detection三维目标检测
CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...
- CVPR2020论文解读:三维语义分割3D Semantic Segmentation
CVPR2020论文解读:三维语义分割3D Semantic Segmentation xMUDA: Cross-Modal Unsupervised Domain Adaptation for 3D ...
最新文章
- 为什么2100万个BTC发行总量少了0.0231?
- CMD命令操作MySql数据库详解
- 用php写京东抢购,关于抢京东券高并发的问题?
- 其它项目中引用AirSIm模块报错NullReferenceException: Object reference not set to an instance of an object
- malloc 背后的系统知识(虚拟内存地址)
- windows gtk+ 开发环境搭建
- ubuntu16.04 xfce4的鼠标主题设置为oxygen-red、修改文件夹背景颜色、两处系统字体设置、右键菜单添加压缩解压选项
- hash表和hashmap
- 将Maven创建的web Servlet2.3工程改为Servlet3.0
- Setup JIRA Service Desk 3.9.2 on Oracle Linux 6.8
- plot 串口助手,DataScope软件的数据,导入matlab绘图。温度曲线
- 曾宪武《物联网通信技术》课后答案(四)
- elment ui 表格中输入验证
- termux python 打开摄像头_python+opencv 电脑调用手机的摄像头
- centos7搭建webpack
- 微信公众号图文 点击显示图片效果
- 程序“媛”公号,越来越少了,这次推荐俩,轻拍!
- 百科系统php,HDwiki与PHPCMS联合推出开源中文Wiki系统
- 金融分析与风险管理——资本资产定价模型
- 完美解决微信页面返回不刷新问题
热门文章
- [工具] PicGo + smms 构建图床
- jQuery Mobile中固定工具栏header、footer的data-*选项
- python实现将文件下内每张图片按顺序命名为txt文本文件中的内容
- 【Proteus仿真8086】往8086 内存中写入数据
- 16 树的子结构(这题多复习)
- python SMTP attachment
- 罗列几个Android插件化开发框架
- 【IO面试题】打印目录树形结构,并输出到file.txt中
- SVN服务器的本地搭建和使用
- IOS创建静态库Cocoa Touch Static Library