3D目标检测---GS3D
论文解读
论文地址
两大发现:
- 可以根据2D检测器检测出来的2D bbox得出粗糙的3D bbox作为
Guidance
- 前人的方法直接在2D BBox区域提取特征信息,带来表征歧义,本文通过提取2D BBox的面特征来消除这一问题。
方法流程
3D BBox的描述为:$$B_g=(w_g, h_g, l_g, x_g, y_g, z_g, \theta_g)$$
其中,特定类别的物体大小\((w_g, h_g, l_g)\)可通过数据集先验数据获得,自动驾驶场景下假设物体都是底面和地面平行,所以只有偏航角。
该算法通过主题流程为:
- CNN预测目标物的2D BBox,观察角
- 根据先验知识(物体的长宽高、3D框底面中心在2D下边框中心偏上)和相机内参矩阵求得物体在相机坐标系下的3D坐标
- 根据3D坐标位置和观察角得到物体可视面,并将其投影至2D特征平面提取特征进一步优化3D预测框结果
CNN
CNN预测出2D BBox和观察角,相机的内参矩阵已知:
\[(x^{2d}, y^{2d}, w^{2d}, h^{2d}),\alpha, K
\]
先验:
- 3D物体的顶面中心点在2D BBox上边框的中点
- 3D物体的底面中心点在2D BBox的下边框中点偏上的位置
求底面中心绝对坐标
底面和顶面中心点在图像坐标系
下坐标为:
\[C_t^{2d}=(x^{2d}, y^{2d}-h^{2d}/2, 1)
\]
\[C_b^{2d}=(x^{2d}, y^{2d}+(0.5-\lambda)h^{2d}, 1)
\]
根据相机内参矩阵\(K\)可得底面和顶面中心点在相机坐标系
下的标准化坐标:
\[\hat{C_t}=K^{-1}C_t^{2d}, \hat{C_b}=K^{-1}C_b^{2d}
\]
再根据类别先验真实高度 \(h_g\) 和标准化高度 \(\hat{y}_b-\hat{y}_t\) 可得深度为:
\[d = h_g/(\hat{y}_b-\hat{y}_t)
\]
根据深度和相机坐标系下的标准化坐标可得地面中心在相机坐标系下的绝对坐标:
\[C_b=dK^{-1}C_b^{2d}
\]
求偏航角
根据Kitti坐标系中观察角和偏航角的关系,可求得偏航角:
\[\theta=\alpha + arctan(z_b/x_b)
\]
至此求得了3D物体的坐标:
\[()
\]
表面特征提取
根据观察角:
角度范围 | 可视面 |
---|---|
\(\alpha>0\) | 前端面 |
\(\alpha<0\) | 后断面 |
\(-90<\alpha<90\) | 右端面 |
otherwise | 左端面 |
将可可视面坐标投影到2D图像坐标系,找到特征图上对应的特征,进行特征提取。 |