自动驾驶--Deep3DBox

声明:

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 的中心为 T=[tx,ty,tz]T , 尺寸D=[dx,dy,dz] 以及方向角R(θ,ϕ,α) , 这里用方位角,海拨,(roll)转动角来表示(正常开车没有pitch 和 yaw)。物体相对相机座标的位姿(R,T)SE(3) ,相机的内参 矩阵K,投影的3D点为 X0=[X,Y,Z,1]T 在物体图像座标为x=[x,y,1]T :


x=K[R|T]X0 (1)

假设原始图像中物体的座标中心就是3Dbb 的中心,(这个假设是个比较强的假设)同时尺寸D 也已知,候选的3Dbb 座标可以表示成 X1=[dx/2,dy/2,dz/2]T , X2=[dx/2,dy/2,dz/2]T ,….., X8=[dx/2,dy/2,dz/2]T . 3Dbb 和 2Dbb 能够匹配形成约束,需要3Dbb的每一角能投映射到2Dbb至少一个边上。
例如X0=[dx/2,dy/2,dz/2]T 和2Dbb左边的最小的xmin 链接,点到带你的对应约束可以如下方程:

xmin=(K[R T][dx/2,dy/2,dz/2,1]T)x (2)

其中(.)x 表示相对于 x 座标系,剩余 2Dbb 得的 xmax,ymin,ymax 也可以得到相似的方程,也就是可以得到四个与3Dbb的约束。但是这个用来获取degrees of freedom(DoF) (three for translation, three fro rotation, and three for box dimensions) 是不够的,另外还有一些几何约束可以通过box 的visual appearance 获取,这个主要的标准就是这些约束和visual appearance 紧密相关,同时可以用来加强3Dbb的约束。

4.2 Choice of Regression Parameters

(θ,ϕ,α) 对3Dbb 具有很大的影响,其次文章选择回归box 的尺寸,而不是平移矩阵T ,因为尺寸估计的方差比较小(先验所有的车具有相同的大小) 也不会因为物体的方向角变化而变化。具体的实现细节在后面的章节中。

4.3 Correspondence Constraints

根据方程2, 通过CNN获取的 3Dbb 的方向角和尺寸以及 2Dbb 的约束,最小重投影误差就可以得到平移矩阵 T 详细的处理过程可以参考 补充材料
2D detection box 可以对应到 3Dbb 8个角点 中的任意一个,这样可能性就有 84=4096 种, 很多情况下我们假设物体是朝上的。2Dbb 上面和下面的只对应3D box 的上部和下部,可能性就降为 1024 种, 另外当物体的roll 为0 的时候,2D box 的边座标 xmin,xmax 就是可以对应3Dbb 的边。相似的,ymin,ymax 只对应水平3D box 的点。因此, 每个2D detection box的垂直边 对应[±dx/2,..,±dz/2] ,
每个2D detection box的水平边 对应[±dy/2,..,±dz/2] 因此得到的 44=256 种。 在KITTI 数据库中,物体 pitch 和 roll 的角度都是零,所以随后得到 64 种的映射关系。参考下图:


3d-to-2d

五、3D Box 参数的 CNN 回归

文章这个章节主要讲了或如回归3D bounding box 的方向角和尺寸

5.1 multiBin Orientation Estimation

估计全局物体方向角 RSO(3) 需要相机的参考帧中检测窗口的crop和 crop 的位置。考虑都R(θ) 参数只由 θ (yaw) 决定。图4 是一辆车沿直线行驶的例子。尽管全局的方向R(θ) 没有变,但是它的局部角 θl ( 全局方向和相机中心穿过 crop 中心的射线形成的角度) 一直在改变。


crop

因此我们需要回归局部角 θl ,图3 展示了局部角 θl 和射线角度变化的关系由全局角约束。给定相机的内参,射线的具体像素可以不用计算。我们通过结合射线的防线和局部角来计算物体的全局角。


这里写图片描述

文章提出L2 loss 不太适合用于复杂的多模型的回归问题。L2 loss 促使网络最小所有模式的平均损失,可能导致单个模式非常差的效果。这个已经在图像着色问题中得到验证,L2 范数给物体(衣服)产生不切实际的平均颜色。相似的, 物体检测如 Faster R-CNN 和 SSD 不能直接回归boxes: 取而代之的是将bounding boxes 空间分为多个离散的模式叫: anchor boxes,然后每个anchor box 的估计连续偏移。(这里还不是很懂,貌似是将这类检测问题转化为分类问题,生成多个bounding box, 然后不同的物体,对应不同的bb).


L2

文章使用了类似的想法并提出了MultiBin 结构用来方向估计。首先离散方向角并分为n 个overlapping bins。对于每一个bin,CNN网络估计输出的角度在第ith 个bin 的置信度 ci 和 每个bin 为了获得输出角所需要的(residual rotation correction ) 旋转残差修正。
旋转残差用两个数字表示,用角度的sine 和 cosine值,所有每个bin i 的3个输出是:(ci,cos(Δθi),sin(Δθi)) . 有效的cosine 和 sine 值利用一个L2 归一化层在二维输入的顶部获得。MultiBin 方向的全部损失用一下公式表示:


Lθ=Lconf+ω+Lloc (3)

Lconf 置信损失等于每个bin 的softmax loss 的置信。Lloc 是用于最小化估计的角度和真实的角度,所有和真实角度有重叠的bins 会用来估计正确的角度。定位损失尝试最小化真实数据和所有余弦值最大的bins的误差(如补充材料) 定位误差 Lloc 一下方式计算:


Lloc=1nθΣcos(θciΔθi) (4)

其中nθ 是和真实角度有覆盖的 θ 的bins 的个数。ci 是bin i 的中心角度, Δθi 是bin i 的中心需要的变化量。
根据推论,会选择具有最大置信度的bin,最后的结果会利用bin Δθ 的中心来估计。 MultiBin 模块有两个分支。一个是计算置信度 ci 另外一个是计算 Δθ 的 sine 和 cosine 值。 最后3n 个参数用来估计 n 个 bin。
在 KITTI 数据库中,车,货车,卡车 和 公交车都是不同的类并且不同类的区分方差很小且单峰。例如,车和自行车的尺寸方差在厘米的数量级上。因此,我们直接使用 L2损失,而不是上面的MultiBin, 作为一个标准,在训练的数据集上对于每一个尺寸我们计算相对于平均值的残差,尺寸的估计损失Ldims 通过以下的公式计算:


Ldims=1nΣ(DD¯¯¯δ) (5)

其中D 是 box 的真实尺寸,D¯¯¯ 是一个特定类的物体平均尺寸,δ 是网络预测相对于平均值估计的残差。
CNN参数估计模型的结构在图5 中展示,有三个分支: 两个分支用于方向的估计,一个分支用于尺寸的估计,所有的分支得到相同的卷积特征,并且所有的损害权重结合为L=α×Ldims+Lθ
六、实现细节
文章在 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抖动并且真实的θl 会随着crop 的中心光束移动而变化。另外,增加颜色的畸变和随机的给图像加镜像。网络通过 SGD 保持学习率为0.0001的训练。网络经历20K 的迭代维持batch的大小为 8, 然后最好的模型用于交叉验证。图 6 显示了我们的3D boxes 估计方法在KITTI 验证集上的定性的视觉结果。文章实验两个不同的训练/测试数据划分。第一个划分的利用主要的可行的训练图片展示在官方KITTI 测试集上的结果。第二种划分为了和SubCNN统一以实现公平的比较。后者用了一半来做为验证集。


图6

Pascal3D+ dataset: 这个数据集由Pascal VOC 的图片 和 Imagenet 的具有12类标注和6个自由度的位姿的图片。Pascal 训练集和Imagenet 用于训练,并在Pascal 验证集上评估。不像KITTI,固有的参数都是估计的,所以不能恢复真实的物理物体的尺寸。因此只评估 3个自由度来展示Multi loss方法的有效性。文章用 C×3 MultiBin 模型来预测每个C 类的3 角度。为了一个和Viewpoints and Keypoints这篇文章有一个公平的对比,文章保持 VGGfc6fc7 两层并
去除MultiBin 模块卷积核。所有必要的输入是通过一个全链接层把fc7 做为输入。文章也使用在文章Viewpoints and Keypoints中使用的超参数来训练模型。
详细的实验设置可以参考文章。
以下是跟3DOPMono3DSubCNN 的定量分析:


定量分析

以上的结果确实有一定的性能提升。特别是在考虑方向的时候。
七、总结
文章提出MultiBin 损失仅使用一张图片的2D boxes 恢复出 3D boxes. 未来会考虑在RGB通道上结合深度的通道(立体匹配),另外一个探索方向是结合时间信息在视频中完成物体的位姿和速度的预测。
总体来说文章的方向是这两年刚刚热门的问题。在KITTI的官网上还没有很多的工作,会有比较大的可研究性;同时由于目前无人车的热度上升,这方面的工作会更有实际的价值;但是由于该方面需要深度学习和多视几何方面的知识的结合,每一个方面都是一个大方向,有一定的难度。

后续还会有更多该方面的文章阅读笔记,本人是深度学习小白,如有错误,望大神不吝赐教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章