该论文代码至今未开源,估计以后也不会了
总体思想
(1)用一个CNN based的检测器(作者称其为2D+O),检测物体的2D框和观察角
(2)利用2D框和从训练集中获取的信息来生成3D guidance
(3)从物体的可视面中提取特征
(4)基于物体的类别,对3D框进行refine
【1】2D+O
利用faster R-CNN,增加一个新的分支用于观察角的预测。
观察角就是,以相机与物体中心的连线为y轴、垂直方向为x轴(右手定则)的坐标系下,物体与x轴正方向的夹角。如下图所示
这部分没什么好说的,就是用一般的目标检测算法获取物体的类别,2D框和观察角。
【2】生成3D guidance
(1)获取3D框的size(长宽高)
作者统计了自动驾驶场景下,同一种类别物体的size变化不大,所以直接利用从训练集中获取的size平均值作为guidance的size。
(2)估计guidance的位置
因为车载摄像头安装的位置一般在车顶,所以一般情况下与其他物体高度齐平。所以3D框投影到2D图像时,3D框的上底面中心非常靠近于2D框的上底边中点,3D框的下底面中心则是在2D框内部,且靠近于2D框的下底边中点。
设预测的2D框信息为, 则2D框上底边中点为,下底边中点为,然后给出3D框上底面中心和下底面中心坐标的齐次形式
(其中是从训练集中统计来的,描述的就是3D框下底面中心和2D框下底边中心的偏差程度)
然后通过已知的相机内参,就可以分别获得标准化的3D坐标。
如果深度d已知的话,就可以计算到实际的3D坐标
因为前面已经获得了guidance的高度和标准化的高度,所以可以计算出d
然后就编圆了,总的来说就是假设同一类别的尺寸都是一致的,假设3D框的上下面中心和2D框的上下边中点有明确的转换关系,再通过一个针孔相机模型就算出来了实际的坐标。
(3)计算物体在相机坐标系下的角度
前面已经得到了物体的观察角和所处的坐标
【3】提取可视面特征
一般情况下都会有三个可视面,