推荐指数
下面详细介绍VINet的主要组成模块:
SE(3)连接变换
相机位姿初始起点一般用特殊变换欧式群SE(3)表征。在我们的网络中,使用CNN-RNN处理单目图像序列计算帧到帧运动,CNN-RNN执行输入数据到李代数se(3)的映射。指数映射用于将se(3)映射到SE(3),生成轨迹。这样,网络需要近似的函数长时间仍然有界,由于相机帧到帧间的动力学映射。通过RNN学习复杂的运动,而手工建模则比较复杂。如下图所示。
此外,在传统的LSTM模型中,隐藏状态在下一时刻才会计算,但是输出本身并不反馈到输入。而在里程计估计中,前一状态至关重要,因为输出是每一步的累积。我们在模型中,直接将SE(3)层输出的位姿,作为下一时刻Core LSTM的输入。
多速率LSTM
在VIO中,存在着输入数据流的多状态问题。IMU数据帧频一般是视觉数据的10倍左右。因此,我们使用较小的LSTM以IMU速率处理IMU数据,IMU-LSTM最后的隐藏层激活后连接到Core-LSTM。
光流权值初始化
运算量
五、训练
整个网络使用BPTT(back propagation through time)训练,使用带RMSProp自适应学习率的SGD更新网络权值。训练较长的高维连续图像序列需要极大的内存,为降低存储需求,但在训练时仍保持连续性,我们使用滑窗方法,如下图所示。
为克服训练陷入局部最优,使用两种损失函数:se(3)帧到帧预测损失和SE(3)全连接位姿损失。联合这两种训练的算法如下所示。
六、实验
本部分主要评估精度和对校正与同步误差的稳健性,并与传统方法对比。我们使用Theano部署网络,在Tesla k80上训练,每个数据集迭代200次,大概需要6小时。
EuRoC数据集是通过硬同步的前向视觉惯性传感器采集的,全局曝光相机为20Hz,IMU为200Hz,通过Vicon获得的6D ground truth为100Hz。由于评估里程计的性能,所以OKVIS不执行闭环检测。为测试校正误差,在相机IMU旋转矩阵上加入随机角度误差。我们训练了两种网络,一个仅在校正好的数据集上训练,另一个则通过人工mis-calibrated进行了数据增强。实验结果如下图所示。
我们在KITTI里程计数据集上做了测试,使用序列1-10进行训练,使用序列11进行测试。单目图像和ground truth为10Hz,IMU为100Hz。该数据集有许多急转弯和密集输液区域,使得传统的VIO方法帧间数据关联困难。由于KITTI数据集没有硬同步,所以OKVIS在该数据集不能成功运行,我们与采用LIBVISO2估计结果与惯性数据EKF融合后比较,结果如下图所示。
英文名称:VINet: Visual-Inertial Odometry as a Sequence-to-Sequence Learning Problem
链接及源码:
https://arxiv.org/pdf/1701.08376.pdf
死磕自律,遇见更好的自己;自斩双臂,方能长出强两翼。
败而不弃,潜龙勿用待时机;执着坚毅,飞升上神创奇迹!
关注小编吧