声明:
1)本文为论文阅读记录,主要用于分享和学术交流
2)若有错误,欢迎各位大牛吐槽,如有版权问题请联系:[email protected]
近年来,自动驾驶已经成为了热点,大大小小的公司都在尝试踏足这个领域。
本文的第二、三作者就是Zoox 自动驾驶公司。
原文链接:https://arxiv.org/pdf/1612.00496.pdf
一、感悟:
刚看到这篇文章和另外一篇文章deepManta,简直惊为天人。首先对于长期从事SLAM研究的非计算机科班机械狗,认为SLAM的稠密三维重建才是自动驾驶的明天,这篇文章嘲笑了我的幼稚。深度学习与SLAM的应用结合或许真的能解决了只建立稀疏点云方案的SLAM不能导航的缺点。
二、核心思想:
文章通过一张图片获取图像中的3D物体以及位姿,相对于目前只能回归物体3D方向的技术,我们的方法利用深度学习网络和2D物体Bounding box的几何约束生成一个完整的3D Bounding Box 和 6个自由度的位姿(位置和角度),
注意:先回归方向和尺寸,在结合几何约束产生3D位姿。
第一层网络输出一个混合离散-连续损失(MultiBin)来表示3D物体的方向,这个损失优于L2.
第二层网络回归3D物体的尺寸(可以从很多物体类别中得到先验)
三、创新点:
1. 一种通过2D bounding box (方向和大小由CNN产生) 和几何约束(几何投影)估计物体3D位姿和尺寸。
2. 一个叫MultiBin回归的离散-连续 CNN 结构用来估计物体的方向。
3. 相对原来的KITTI数据库,只有3D box 方向的估计,文章提出了三个另外的判断3D box精度效果指标:box 中心离相机的距离,最近的bounding box 离相机的距离,所有的bounding box 跟ground truth 的 overlap(通过 3D intersection over Union (3DIoU))。
4. 方法在KITTI 车辆数据库中的良好表现
5. 在Pascal 3D+ 数据库的视角估计。
四、实现方法:
4.1 3D Bounding Box Estimation (下面简化为3Dbb)
为了在3Dbb中利用已有的成熟的2D object detection 的工作,这里我们构建两者的关系, 3Dbb 投影到2Dbb (是不是跟SLAM的里面的3D-to-2D很像,没错,后面就是用PnP 算的)。3Dbb 的中心为
假设原始图像中物体的座标中心就是3Dbb 的中心,(这个假设是个比较强的假设)同时尺寸
例如
其中
4.2 Choice of Regression Parameters
4.3 Correspondence Constraints
根据方程2, 通过CNN获取的 3Dbb 的方向角和尺寸以及 2Dbb 的约束,最小重投影误差就可以得到平移矩阵
2D detection box 可以对应到 3Dbb 8个角点 中的任意一个,这样可能性就有
每个2D detection box的水平边 对应
五、3D Box 参数的 CNN 回归
文章这个章节主要讲了或如回归3D bounding box 的方向角和尺寸
5.1 multiBin Orientation Estimation
估计全局物体方向角
因此我们需要回归局部角
文章提出L2 loss 不太适合用于复杂的多模型的回归问题。L2 loss 促使网络最小所有模式的平均损失,可能导致单个模式非常差的效果。这个已经在图像着色问题中得到验证,L2 范数给物体(衣服)产生不切实际的平均颜色。相似的, 物体检测如 Faster R-CNN 和 SSD 不能直接回归boxes: 取而代之的是将bounding boxes 空间分为多个离散的模式叫: anchor boxes,然后每个anchor box 的估计连续偏移。(这里还不是很懂,貌似是将这类检测问题转化为分类问题,生成多个bounding box, 然后不同的物体,对应不同的bb).
文章使用了类似的想法并提出了MultiBin 结构用来方向估计。首先离散方向角并分为
旋转残差用两个数字表示,用角度的sine 和 cosine值,所有每个bin
其中
根据推论,会选择具有最大置信度的bin,最后的结果会利用bin
在 KITTI 数据库中,车,货车,卡车 和 公交车都是不同的类并且不同类的区分方差很小且单峰。例如,车和自行车的尺寸方差在厘米的数量级上。因此,我们直接使用 L2损失,而不是上面的MultiBin, 作为一个标准,在训练的数据集上对于每一个尺寸我们计算相对于平均值的残差,尺寸的估计损失
其中
CNN参数估计模型的结构在图5 中展示,有三个分支: 两个分支用于方向的估计,一个分支用于尺寸的估计,所有的分支得到相同的卷积特征,并且所有的损害权重结合为
六、实现细节
文章在 KITTI 和 Pascal 3D + 两个数据集中展示效果。
**KITTI 数据库:**KITTI 数据库一共有7481 张训练的图片。文章用MS-CNN 方法训练得到2D的 boxes 然后高于一定阈值的估计出3D的boxes。为了回归3D的参数,我们利用预训练 VGG 网络去掉 FC 层并加上3D box 层,如果图5所示。在模型中,每一个方向分支都有256维度的FC层,第一个FC层中尺寸回归的维度为512。在训练中,每一个真实的crop 被 resize 成 224x244。 为了
使网络对视角变化和阻塞更加鲁棒,真实的boxes抖动并且真实的
Pascal3D+ dataset: 这个数据集由Pascal VOC 的图片 和 Imagenet 的具有12类标注和6个自由度的位姿的图片。Pascal 训练集和Imagenet 用于训练,并在Pascal 验证集上评估。不像KITTI,固有的参数都是估计的,所以不能恢复真实的物理物体的尺寸。因此只评估 3个自由度来展示Multi loss方法的有效性。文章用
去除MultiBin 模块卷积核。所有必要的输入是通过一个全链接层把
详细的实验设置可以参考文章。
以下是跟3DOP 、Mono3D、SubCNN 的定量分析:
以上的结果确实有一定的性能提升。特别是在考虑方向的时候。
七、总结
文章提出MultiBin 损失仅使用一张图片的2D boxes 恢复出 3D boxes. 未来会考虑在RGB通道上结合深度的通道(立体匹配),另外一个探索方向是结合时间信息在视频中完成物体的位姿和速度的预测。
总体来说文章的方向是这两年刚刚热门的问题。在KITTI的官网上还没有很多的工作,会有比较大的可研究性;同时由于目前无人车的热度上升,这方面的工作会更有实际的价值;但是由于该方面需要深度学习和多视几何方面的知识的结合,每一个方面都是一个大方向,有一定的难度。
后续还会有更多该方面的文章阅读笔记,本人是深度学习小白,如有错误,望大神不吝赐教。