今天聊聊双目的3d object detection。这是一篇来自DJI与港科大合作的文章,作者分别是li peiliang,陈晓智 @陈晓智(DJI,MV3D的作者)和港科大的shenshaojie老师。
1. introduction
2018年在3D检测方面的文章层出不穷,也是各个公司无人驾驶或者机器人学部门关注的重点,包含了点云,点云图像融合,以及单目3D检测,但是在双目视觉方面的贡献还是比较少,自从3DOP之后。
总体来说,图像的检测距离,图像的density以及context信息,在3D检测中是不可或缺的一部分,因此作者在这篇文章中挖掘了双目视觉做3D检测的的潜力。
2. network structure
整个网络结构分为以下的几个部分。
1). RPN部分,作者将左右目的图像通过stereoRPN产生相应的proposal。具体来说stereo RPN是在FPN的基础上,将每个FPN的scale上的feature map的进行concat的结构。
3). keypoint的检测。这里采用的是类似于mask rcnn的结构进行关键点的预测。文章定义了4个3D semantic keypoint,即车辆底部的3D corner point,同时将这4个点投影到图像,得到4个perspective keypoint,这4个点在3D bbox regression起到一定的作用,我们在下一部分再介绍。
在keypoint检测任务中,作者利用RoiAlign得到的14*14feature map,经过conv,deconv最后得到6 * 28 * 28的feature map,注意到只有keypoint的u坐标会提供2D Box以外的信息,因此,处于减少计算量的目的,作者aggregate每一列的feature,得到6 * 28的output,其中,前4个channel代表4个keypoint被投影到相应的u坐标的概率,后面两个channel代表是left or right boundary上的keypoint的概率。
3. 3D Box Estimation
通过网络回归得到的2D box的dimension,viewpoint,还有keypoint,我们可以通过一定的方式得到3D box的位置。定义3D box的状态x = [x, y, z, θ]。
Figure 5,给出了一些稀疏的约束。包含了特征点的映射过程。这里也体现了keypoint的用处。
上述公式即为约束方程,因此可以通过高斯牛顿的方法直接求解。具体可以参考论文的引文17。这里我们简单证明一下第一个公式。注意,这里的假设都是u,v坐标都已经经过相机内参的归一化了。
4. Dense 3D Box Alignment
这里就回到shenshaojie老师比较熟悉的BA的过程了,由于part 3仅仅只是一个object level的深度,这里文章利用最小化左右视图的RGB的值,得到一个更加refine的过程。定义如下的误差函数
其中
代表第i个pixel的深度与相对应的3D box的深度差。而这一块的求解利用G20或者ceres也可以完成。整个alignment过程其实相对于深度的直接预测是更加robust的,因为这种预测方法,避免了全局的depth estimation中的一些invalid的pixel引起的ill problem的问题。
5. experiment
作者在实验这块达到了双目视觉的state of art,同时对于各个module也做了很充足的实验,具体的数值可以参考论文的原文
6. Insight
最后谈谈文章给我的一些insights,首先,整个文章将传统的detection的任务,结合了geometry constraint优化的方式,做到了3D位置的估计,想法其实在不少文章sfm-learner之类的文章已经有体现过了,不过用在3Ddetection上面还是比较新颖,避免了做双目匹配估计深度的过程。也属于slam跟深度学习结合的一篇文章,感兴趣的朋友可以继续看看arxiv.org/abs/1802.0552等相关文章
谈几点我个人意义上的不足吧,首先耗时过程0.28s的inference time,不过可能作者的重点也不在这个方面,特征的利用上可以更加有效率,在实现上。其次,能不能采用deep3dbox的方式预测dimension,然后添加入优化项呢...总体来说,是一篇不错的值得一读的文章!不足之处欢迎指教讨论!