解决什么问题
从一个单视野恢复3D bounding box,在没有额外的3D形状模型、或有着复杂的预处理通道的采样策略下,估计稳定且精准3D目标
方法
方法概述
先直接回归方向和目标维度,用的是CNN方法。给定估计的方向和尺寸,以及3D边界框的投影与2D检测窗口紧密匹配的约束条件,就能恢复出移位,从而得到目标的3D bounding box
问题分析
对于回归参数的选择,作者选择回归维度D,而不是移位T,因为维度估计的多样性更小,大部分的车都差不多大,而且不会随着车的方向改变而改变。维度估计和物体的亚种有很强的联系,如果能识别出这个亚类的话,恢复可能变得精准
亚种就是说知道是那种型号的小汽车
作者也做了实验,回归T的话,很少得到准确的3D框,使用CNN和2D检测框回归出来的3D盒的维度和方向能解决 T T T的问题,而且能最小化初始的2D检测框约束的重射影误差
所以作者选择利用方向和维度,以及2D框来得到位移
3D bounding box estimation
主要思想是3D包围盒在2D检测窗口中的透视射影,作者做出了一种假设:CNN出来的2D框就是3D盒的射影
这个假设很有可能不成立
维度: D = [ d x , d y , d z ] D = [d_x,d_y,d_z] D=[dx,dy,dz]
维度直接回归,先算数据集的中位数,然后预测偏差,维度就是中位数+偏差
方向: R ( θ , ϕ , α ) R(\theta,\phi,\alpha) R(θ,ϕ,α)
只从检测出来的框来估计全局物体方向是不可能的,还得有位置信息才行。
由于透视,一辆车的全局角度可能没变,但是局部角度变了,所以回归的是局部参数,局部角度 θ l \theta_l θl和 θ r a y \theta_{ray} θray角结合,就是全局角度 R ( θ ) R(\theta) R(θ)
给定摄像机的内参,就能知道射线角,这样再用网络回归出 θ l \theta_{l} θl,就能算出 R ( θ ) R(\theta) R(θ)
用内参将像素平面转换成图像平面,焦距为1,根据 ( x , y ) (x,y) (x,y)就能算出角度
L2 loss处理复杂的多模式的回归问题并不好用。L2 loss 鼓励网络最小化平均loss,但这样会导致对每个模型的估计都很差
如果有些占的loss很小,是不是就没什么影响了?,是不是应该再加入一些权重因子?
因此,借鉴了Faster RCNN 和SSD的思想 :不直接回归框,而是通过对anchor box进行调整。
首先将方向角离散到 n n n个重叠的bin中。对于每个bin做以下两个处理:
- 用CNN预测在 i t h i^{th} ithbin中存在角度线的置信度 c i c_i ci(虽然重叠在一起了,但是没有关系,感觉就跟分类差不多,每个bin都代表一个类,类就是方向,看属于哪个类,也就是那个方向,置信度因此也不一样。)
- 为了获得输出角度,应该在bin的中心射线的方向上施加残差旋转矫正,残差旋转用两个数表示: