CNN for IMU Assisted Odometry Estimation usingVelodyne LiDAR 论文笔记
论文将三维点云编码成2维矩阵,使用CNN对其进行特征提取和后续处理.
类似的方法在其之前的工作中被用于ground segmentation 以及 vehicle detection:
《M. Velas, M. Spanel, M. Hradis, and A. Herout, “CNN for very fastground segmentation in Velodyne lidar data,” 2017. [Online]. Available:http://arxiv.org/abs/1709.0212》,
《B. Li, T. Zhang, and T. Xia, “Vehicle detection from 3D lidarusing fully convolutional network,”CoRR, vol. abs/1608.07916, 2016.[Online]. Available: http://arxiv.org/abs/1608.079116》
这篇是用同样的点云编码方法来做激光里程计。
点云二维编码:
将点云P编码为一个二维矩阵(图像)。
首先将原始点云按照角度和激光的线束,划分为一个个polar bin:
这样每一个polar bin 可以用坐标(r,c)来表示 。r为激光的线束,c表示角度;在二维矩阵中对应像素点(r,c):
由于使用64线的雷达,二维图像的高是64
图像是3通道的,分别记录了每个polar bin 中的所有点云的 深度,高度,强度
∑
p
∈
b
r
,
c
[
p
y
,
∥
p
x
,
p
z
∥
2
,
p
i
]
∣
b
r
,
c
∣
\frac{\sum_{\boldsymbol{p} \in \boldsymbol{b}_{\boldsymbol{r}, \boldsymbol{c}}}\left[p^{y},\left\|p^{x}, p^{z}\right\|_{2}, p^{i}\right]}{\left|\boldsymbol{b}_{\boldsymbol{r}, \boldsymbol{c}}\right|}
∣br,c∣∑p∈br,c[py,∥px,pz∥2,pi]
网络结构
使用多帧输入提升鲁棒性;
使用两个不同的孪生神经网络进行旋转、平移预测,即用CNN对每个输入图像对提特征然后用FC层将所有特征融合输出R或者T (regression CNN)
其中 CNN part 的结构为:
这种分别单独预测的方法大幅提高了平移量的预测精度。(然而在相机重定位中,两个一起预测可以共享特征提升精度。)
然而,旋转精度还是很差。这里将旋转量的预测视为了回归问题,但是在里程计任务中前后帧的差别很小,因此旋转量的解空间也很小,通过密集采样可以将其转换为一个分类问题:
R
=
arg
max
i
∈
{
0
,
…
,
K
−
1
}
Γ
(
R
i
(
M
n
)
,
M
n
−
1
)
Γ
:
M
2
→
R
\begin{array}{c} R=\arg \max _{i \in\{0, \ldots, K-1\}} \Gamma\left(R_{i}\left(\boldsymbol{M}_{\boldsymbol{n}}\right), \boldsymbol{M}_{\boldsymbol{n}-1}\right) \\ \Gamma: \mathbb{M}^{2} \rightarrow \mathbb{R} \end{array}
R=argmaxi∈{0,…,K−1}Γ(Ri(Mn),Mn−1)Γ:M2→R
这里M是编码后的点云图像。
对应的网络结构就变成了(classification CNN)
即将当前帧点云随机旋转多次后和前一帧一起成对的输入CNN和FC网络,最后用softmax对结果进行评分,
这里的CNN part 也进行了改进:图像的水平分辨率也增加到了1800(分辨率提高增加了性能,对应的卷积核size也做了修改)
注意为了减少采样的数量,作者将xyz三个轴的旋转分开,使用三个CNN对其分别进行预测
最优旋转预测量的选择
选择可能性最大的(softmax 输出最高的)
或者使用加权平均:
R
∗
=
∑
i
∈
S
W
p
(
R
i
)
⋅
R
i
∑
i
∈
S
W
p
(
R
i
)
R^{*}=\frac{\sum_{i \in S_{W}} p\left(R_{i}\right) \cdot R_{i}}{\sum_{i \in S_{W}} p\left(R_{i}\right)}
R∗=∑i∈SWp(Ri)∑i∈SWp(Ri)⋅Ri
数据预处理:
对垂直高度进行归一化,对深度进行log放缩:
h
ˉ
=
y
i
H
,
H
=
3
;
d
ˉ
=
log
(
d
)
\bar{h}=\frac{y^{i}}{H}, H=3 ; \quad \bar{d}=\log (d)
hˉ=Hyi,H=3;dˉ=log(d)
实验中没有得到性能提升的尝试:
- 没有使用垂直高度归一化和深度log放缩
- 三维点坐标作为矩阵的通道值。
实验分析
对前后帧输入序列长度的实验
N= 5最佳,分开训练最佳