通过单目或多目摄像机实现车辆定位的方法称之为视觉里程计[1]。定位就是要获取车辆在三维空间中的位置和姿态信息。位置是世界坐标系下的三维坐标,姿态则是车辆运动方向与3个坐标轴的夹角,即俯仰角、航向角和侧滚角。位置和姿态6个自由度的信息可以唯一确定车辆在指定坐标系中的空间状态。视觉里程计被广泛用于无人驾驶、机器人、潜航器等,是继全球卫星定位系统,惯性导航,车轮里程计等定位技术后的一种新的导航技术,其性价比及可靠性较高。
视觉里程计通过相机获取图片序列,经过特征提取、特征匹配/跟踪,外点剔除和运动估计等处理模块得到车辆的位姿更新,进而推算运动轨迹,实现定位导航[1]。Nister等[2]首次实现实时视觉里程计系统,最先采用基于匹配的方法代替基于跟踪的方法进行特征关联以避免基于互相关的跟踪而引起的特征漂移,采用随机采样一致性(RANSAC)算法消除外点,并给出了单目和双目视觉里程计的实现途径和方法,在单目视觉里程计系统中,提出了被后人广泛使用的5点算法。在双目视觉里程计系统中,他们提出了采用3D 到 2D重投影误差代替3D点之间的欧拉距离的误差的运动估计方法。这些工作为视觉程计的研究奠定了基础,当前大多数视觉定位导航系统都遵循这种框架。在实际场景中,单纯的角点并不能满足需求,于是研究人员设计更加稳定的图像特征如SIFT、SUFT等。虽然SIFT和SUFT考虑到图像变换过程中的许多问题,但是计算量较大。2011年Rublee等[3]提出了ORB(oriented FAST and rotated BRIEF)算法,该算法提取的图片特征不仅保留了SIFT和SUFT特征的优点,且速度是SIFT算法的30多倍。2011年Geiger等[4]将图片的稀疏特征运用到视觉里程计中,提出了实时单目视觉里程计的VISO2-M算法,该算法是当时最好的SLAM算法之一。2015年Mur-Artal等[5]在ORB算法上进行研究,提出了ORB-SLAM算法,并在精度上取得了良好的效果。Mur-Artal等[6]继续在ORB-SLAM的基础上进行优化并推出了ORB-SLAM2,是目前定位较精确的视觉定位系统。
上述方法都是基于几何原理,当更换场景后需要对代码中的参数进行大量调整以适应新的场景需求,而使用深度学习的算法完全不同于上述思路。2008年Roberts等[7]尝试使用光流和机器学习相结合的方法预测车辆运动轨迹,提出了一个基于神经网络视觉里程计的模型,模型由160个KNN(K-Nearest-Neighbors)学习机组成,这种模型使用K近邻的方法计算每个单元的光流,再将光流转化为位姿参数。2015年Kishore等[8]首次提出了使用卷积神经网络(Convolutional Neural Network)来学习视觉里程计,其模型将传统方法与深度学习的方法相结合,先使用双目图片估计出深度,再利用两个不同的卷积神经网络分别学习图片特征得到车辆的角度和速度。2015年Kendall等[9]提出了一种端对端的视觉里程计模型PoesNet,该模型首次将视觉里程计设计为端对端的网络,即输入图片经过神经网络后直接输出位姿,不过由于每次输入的都是单张图片,无法建立视觉里程计的时序性,导致其鲁棒性及泛化能力较差,在新场景的应用中定位偏移较大。为了解决时序性的问题,Ronald等[10]提出DeepVO的网络模型,该模型将长短期记忆网络(Long Short-Term Memory, LSTM)加入到整个神经网络中,通过LSTM网络可以很好的构建图片之间的联系,形成图片之间的时序性。2018年Mccormac等[11]用Mask-RCNN网络对距离函数进行重构,设计出一个在线的SLAM系统并具有很高的内存效率。相对于传统的视觉里程计,基于机器学习的视觉里程计无需建立复杂的物体运动的几何模型,甚至无需考虑相机的校准参数以及相对尺度问题,运动估计的准确性与鲁棒性依赖于神经网络估计器的设计和用于训练的图像库是否涵盖待测场景的变化。
2015年Dosovitskiy等[12]提出了一种用于估计帧间光流的卷积神经网络Flownet-s,取得了很好的效果。考虑到光流是相机位姿参数的最好的体现,本文借助Flownet-s的结构提出了一种新的基于卷积神经网络单目视觉里程计模型,我们称之为CNN-VO(Convolutional Neural Network Visual Odometry)。在此基础上引入GoogLeNet[13]的Inception(细胞)结构对模型进行改进,增加了模型的深度。由于Inception结构中的多个1×1卷积的串联,使得图片在相同的运算量下可以获取更多的细微特征,弥补了单一卷积核特征提取不全面的缺陷。改进后的模型称为Deep-CNN-VO(Deep Convolutional Neural Network Visual Odometry)。在预处理阶段建立两张图片的相对关系,每次输入连续的两帧图片,得到后一帧相对于前一帧的6个相对位姿参数,将两种模型进行对比实验,结果表明Deep-CNN-VO相较于CNN-VO在性能上具有明显提升,和现有的视觉里程计系统相比,本文所提方法也不逊色。
1 网络架构及方法网络结构如图1所示。图1(a)是CNN-VO网络架构图,图1(b)是改进后Deep-CNN-VO网络架构图。它们都包括图片输入和预处理模块,卷积神经网络模块和位姿输出模块。其工作原理为:每次将连续的两帧图片进行叠加处理后输入到卷积神经网络模块提取图片的全局帧间变化特征,将高维的特征图输入到三层全连接层降低特征维度,最后输出车辆相对于前一帧的平移和旋转坐标。
|
图 1 视觉里程计端到端网络数据流图 Figure 1 Flow diagram of visual odometry end-to-end network |
输入图像的分辨率为1 280×384。输入时每次输入连续两帧图片,叠加后产生一个6通道组成的(土黄色框)图像输入到卷积神经网络。
1.2 卷积神经网络模块卷积神经网络模块由卷积层,池化层和全连接层组成。CNN-VO网络的卷积层借鉴了Dosovitskiy等[12]提出的Flownet-s结构,该网络通过卷积网络学习图片特征预测光流。如图1(a)所示,CNN-VO卷积层由9个独立的子卷积层(绿色矩形)组成,其参数如表1所示。每个子卷积层后面引入一个非线性激活函数即ReLU(Rectified Linear Unit)[14],其数学表达为:
|
|
表 1 CNN-VO子卷积参数 Table 1 CNN-VO subconvolution parameter |
| $ ReLU\left( x \right) = \left\{ {\begin{array}{*{20}{c}} {0,\;\;x {\text{<}} 0}\\ {x,\;\;x {\text{≥}} 0} \end{array}} \right. $ | (1) |
该函数能够有效地进行梯度下降以及反向传播,避免了梯度爆炸和梯度消失问题。子卷积核的大小由最初的7×7逐步减小为5×5再到3×3。图1(b)中,Deep-CNN-VO网络将CNN-VO网络中的三层子卷积更改为Inception结构(红色矩形),子卷积层数由9层降低为6层。保留下来的子卷积层结构的卷积单元数目及核心数与CNN-VO网络一致。
其中CNN-VO的卷积层参数如表1所示。Deep-CNN-VO剩余的6个卷积层的参数如表2所示。由于CNN-VO中的子卷积层中的5层3×3结构对图片小特征捕捉较好,因此选取原结构中的7×7及5×5卷积核进行改善。Conv1改为Inception1, Conv3和Conv4改为Inception2。
|
|
表 2 Deep-CNN-VO子卷积参数 Table 2 Deep-CNN-VO subconvolution parameter |
Deep-CNN-VO中的两层Inception结构借鉴了GoogLeNet[13]中的Inception结构并进行调整,其结构如图2所示。图2(a)是Inception1的结构,图2(b)是Inception2的结构。相较于CNN-VO,图2(a)在原有7×7卷积层上引入多个1×1的卷积,降低了计算的复杂度,而且在相同的感知野中能够获得更多的图片特征。在7×7卷积作用的同时加入5×5卷积获取图片特征,这样可以在一个Inception层中获取多种图片特征,解决了仅用单一卷积核获取图片特征不足的情况。两种改进型结构都在原有的卷积层前串联了多个1×1卷积层,可以得到图片同样位置更多的非线性特征。最后再将4种卷积后得到的特征合并送入到下一个卷积层进行处理。该模块通过多个卷积核的串联叠加,在保持原有计算量的情况下获取了更多的细微特征,对提高视觉里程计的精度有帮助。这个改进实际上是增加了子卷积层的深度。
|
图 2 细胞结构图 Figure 2 Inception structure |
在卷积层的最后一层后使用池化层(橙色矩形)进行降维处理,在获得较好图片特征的同时降低了数据计算量。经过6个卷积层,2个细胞层和池化层处理后,图像从最初的三维特征变为1024维特征,引入全连接层(蓝色矩形)进行高维特征的降维处理。共包含3个全连接层,与卷积层一样,每个全连接层后有1个非线性激活函数。在降维到128层以后输出位姿,得到帧间相对位姿的6个参数。
1.3 位姿输出模块经过三层全连接层后得到车辆的6个帧间相对位姿,分别是平移
位姿包含平移量和旋转量两种不同的尺度变量,所以本文的损失函数为两者的加权求和。设第i至i+1帧图片的相对平移为
| $ {\rm{loss}} = {\rm{argmax}}\dfrac{1}{N}\mathop \sum \nolimits_{i = 1}^N \left\| {\begin{array}{*{20}{c}} {{T_i}} \end{array} - {T_g}} \right\|_2^2 + \delta \left\| {\begin{array}{*{20}{c}} {{\emptyset _i}} \end{array} - {\emptyset _g}} \right\|_2^2 $ | (2) |
式中:
实验采用KITTI[15]公共数据集中的Visual Odometry/SLAM视频图像进行实验。它提供了从公路、农村和城市场景中的22个经过校正的双目图像序列,每个序列的范围从500~5000 m长度不等,帧速率为10 帧/s,图像分辨率为1 241×376及1 226×370。其中前11个序列提供了从激光雷达和GPS获得的各帧位姿参数的地面真实值。采用00,01,02,08,09序列作为训练集,这些场景相对于其他序列图片数量较多,行驶距离较长且场景更丰富。使用03,04,05,07,10序列作为测试。
系统工作站采用NVDIA GTX 1080Ti GPU进行训练,配备32G内存以及Intel Core Xeon 3.4 GHz CPU, 测试用的笔记本配备NVDIA GTX 1060以及Intel Core i7 2.7 GHz CPU。
网络采用连续两帧图片的叠加作为网络的输入,求解的是连续两帧间的相对位姿态,因此需要使用相邻两帧的相对位姿作为真值进行训练。然而,KITTI提供的每帧的位姿参数是相对于起始点的绝对位姿,因此需要进行如下转换。KITTI提供的第n帧图片的绝对位姿为齐次矩阵为
| $ \begin{split} & { T_{rn}} = { T}_n^{ - 1}{ T_{n + 1}} = {\left[ {\begin{array}{*{20}{l}} {{R_{n1}}}&{{R_{n2}}}&{{R_{n3}}}&{{x_n}}\\ {{R_{n4}}}&{{R_{n5}}}&{{R_{n6}}}&{{y_n}}\\ {{R_{n7}}}&{{R_{n8}}}&{{R_{n9}}}&{{ {\textit{z}}_n}}\\ 0&0&0&1 \end{array}} \right]^{ - 1}} \times \\ &\left[ {\begin{array}{*{20}{l}} {{R_{\left( {n + 1,1} \right)}}}&{{R_{\left( {n + 1,2} \right)}}}&{{R_{\left( {n + 1,3} \right)}}}&{{x_{\left( {n + 1} \right)}}}\\ {{R_{\left( {n + 1,4} \right)}}}&{{R_{\left( {n + 1,5} \right)}}}&{{R_{\left( {n + 1,6} \right)}}}&{{y_{\left( {n + 1} \right)}}}\\ {{R_{\left( {n + 1,7} \right)}}}&{{R_{\left( {n + 1,8} \right)}}}&{{R_{\left( {n + 1,9} \right)}}}&{{ {\textit{z}}_{\left( {n + 1} \right)}}}\\ 0&0&0&1 \end{array}} \right] = \\ &\left[ {\begin{array}{*{20}{l}} {{R_{rn1}}}&{{R_{rn2}}}&{{R_{rn3}}}&{{x_{rn}}}\\ {{R_{rn4}}}&{{R_{rn5}}}&{{R_{rn6}}}&{{y_{rn}}}\\ {{R_{rn7}}}&{{R_{rn8}}}&{{R_{rn9}}}&{{ {\textit{z}}_{rn}}}\\ 0&0&0&1 \end{array}} \right] \end{split} $ | (3) |
式中最后一列是平移参数,
网络使用批量梯度下降法作为优化算法,选择Adam(Adaptive Moment Estimation)作为优化器,进行150 000次迭代,其中Adam优化器参数设置
训练过程中引入验证机制,在每经过4轮训练以后,从验证数据集中随机选取一张图片,对当前训练产生的模型进行测试,若误差持续下降,则证明训练模型结构有效。验证机制的引入可以有效防止训练过程中的过拟合情况。
2.2 运动估计结果及与其他方法的比较使用KITTI数据集中的图像序列对本文两种方法(Deep-CNN-VO和CNN-VO)进行测试评估,并与VISO2-M[4]以及DeepVO[10]两种单目视觉里程计方法进行比较,其中VISO2-M是传统单目视觉里程计方法中比较有代表性的算法,也是开源的。DeepVO采用了长短期记忆网络进行轨迹估计,是目前使用深度学习进行端到端单目视觉里程计研究定位较为精确的算法。完整序列的运动估计误差分别用平均平移误差(ATE)和平均旋转误差(ARE)表示[15],误差越小代表与真实轨迹越相近。表3展示了用4种方法对KITTI数据库中03、04、05、07、10图像序列的平均平移误差和平均旋转误差。
|
|
表 3 测试序列03、04、05、07、10实验结果对比 Table 3 The comparison experimental results of 03, 04, 05, 07 and 10 test sequence |
从表中可以看出,Deep-CNN -VO模型相较于CNN-VO模型在5个测试序列上,无论是ATE还是ARE都有显著提升,说明卷积神经网络中Inception结构起作用。与传统的视觉里程计方法VISO2-M相比,除了序列04,Deep-CNN-VO在其他4个序列,以及总体上ATE和ARE都有提升。与目前比较著名的基于深度学习的视觉里程计DeepVO相比,ATE的表现差一些,ARE基本持平,主要原因是DeepVO引入了包含时序,特性的长短时记忆网络(LSTM)进行优化而本文方法则完全采用相对简单的卷积神经网络。在计算效率方面,本文方法计算量较小,对硬件要求相对较低,更容易移植到实时的系统中。
利用视觉里程计估计得到的每一帧相对位姿参数推算车载相机的运动轨迹。图3展示了以上4种算法对KITTI数据库中04,05,07,10序列的轨迹构建以及和真实轨迹的比较。从图中可以看出,序列04的直线轨迹表现相对较好,其余序列中由于车辆行驶过程中会有转弯等因素的影响,轨迹出现偏移。结果表明,VISO2-M算法和CNN-VO模型产生的轨迹精度偏离真值较大,DeepVO及本文Deep-CNN-VO算法相对比较接近真实轨迹。
|
图 3 序列04、05、07、10轨迹估计 Figure 3 The trajectory estimation of 04,05,07 and 10 sequence |
本文尝试将用于分类的卷积神经网络转化获取图像帧间时序变化特征的网络,实现了采用基于深度学习卷积神经网络技术的车辆自主定位方法。相较于传统的视觉里程计方法,本文方法采用端到端的方式,无需根据场景建立复杂的几何模型,是未来视觉里程计技术的一个发展方向。本文工作证明了其可行性,是一个有益的尝试和探索。
本文方法借助卷积神经网络对彩色图片自动学习提取图像帧间变化的全局特征,采用改进型Inception结构代替单一的卷积层,多个1×1卷积核串联使用可以在相同运算量的基础上提取出更多细微的图片特征,通过三层全连接层输出相机的帧间相对位姿参数,并据此推算相机的运动轨迹。在共用KITTI数据集上进行测试,实验结果表明本文提出的Deep-CNN-VO模型可以较准确地估计车辆的运动轨迹,与目前比较著名的基于深度学习的视觉里程计DeepVO相比,虽然ATE效果差一点,其主要原因是DeepVO引入了包含时序特性的长短时记忆网络(LSTM)进行优化,而本文方法则完全采用相对简单的卷积神经网络。由于仅使用CNN网路作为结构,神经单元相对于DeepVO要小,因此本文方法计算量较小,对硬件要求相对较低,更容易移植到实时的系统中。下一步的工作将考虑结合残差方法及双目图片共同优化网络,达到更好的运动估计精度。
| [1] | 慈文彦, 黄影平, 胡兴. 视觉里程计算法研究综述[J]. 计算机应用研究, 2019, 36(9): 2561–2567. |
| [2] | NISTER D, NARODITSKY O, BERGEN J. Visual odometry[C]//Proceedings of 2004 IEEE computer society conference on computer vision and pattern recognition. Washington, DC, USA: IEEE, 2004: I − I. |
| [3] | RUBLEE E, RABAUD V, KONOLIGE K, et al. ORB: an efficient alternative to SIFT or SURF[C]//Proceedings of 2011 international conference on computer vision. Barcelona, Spain: IEEE, 2011: 2564 − 2571. |
| [4] | GEIGER A, ZIEGLER J, STILLER C. StereoScan: dense 3d reconstruction in real − time[C]//Proceedings of 2011 IEEE intelligent vehicles symposium (IV). Baden-Baden, Germany: IEEE, 2011: 963 − 968. |
| [5] | MUR-ARTAL R, MONTIEL J M M, TARDÓS J D. ORB-SLAM: a versatile and accurate monocular SLAM system[J]. IEEE Transactions on Robotics, 2015, 31(5): 1147–1163. DOI:10.1109/TRO.2015.2463671 |
| [6] | MUR-ARTAL R, TARDÓS J D. ORB-SLAM2: an open-source SLAM system for monocular, stereo, and RGB-D cameras[J]. IEEE Transactions on Robotics, 2017, 33(5): 1255–1262. DOI:10.1109/TRO.2017.2705103 |
| [7] | ROBERTS R, NGUYEN H, KRISHNAMURTHI N, et al. Memory − based learning for visual odometry[C]//Proceedings of 2008 IEEE international conference on robotics and automation. Pasadena, CA, USA: IEEE, 2008: 47 − 52. |
| [8] | KONDA K, MEMISEVIC R. Learning visual odometry with a convolutional network[C]//Proceedings of the 10th international conference on computer vision theory and applications − volume 2. Berlin, Germany, 2015: 486 − 490. |
| [9] | KENDALL A, GRIMES M, CIPOLLA R. PoseNet: a convolutional network for real − time 6 − DOF camera relocalization[C]//Proceedings of 2015 IEEE international conference on computer vision. Santiago, Chile: IEEE, 2015: 2938 − 2946. |
| [10] | WANG S, CLARK R, WEN H K, et al. DeepVO: towards end-to-end visual odometry with deep recurrent convolutional neural networks[C]//Proceedings of 2017 IEEE international conference on robotics and automation. Singapore: IEEE, 2017: 2043 − 2050. |
| [11] | MCCORMAC J, CLARK R, BLOESCH M, et al. Fusion++: volumetric object-level SLAM[C]//Proceedings of 2018 IEEE international conference on 3D vision. Verona, Italy: IEEE, 2018: 32 − 41. |
| [12] | DOSOVITSKIY A, FISCHER P, ILG E, et al. FlowNet: learning optical flow with convolutional networks[C]//Proceedings of 2015 IEEE international conference on computer vision. Santiago, Chile: IEEE, 2015: 2758 − 2766. |
| [13] | SZEGEDY C, LIU W, JIA Y Q, et al. Going deeper with convolutions[C]//Proceedings of 2015 IEEE conference on computer vision and pattern recognition (CVPR). Boston, MA, USA: IEEE, 2015: 1− 9. |
| [14] | XU B, WANG N Y, CHEN T Q, et al. Empirical evaluation of rectified activations in convolutional network[J]. arXiv: 1505.00853, 2015. |
| [15] | GEIGER A, LENZ P, URTASUN R. Are we ready for autonomous driving? The KITTI vision benchmark suite[C]//Proceedings of 2012 IEEE conference on computer vision and pattern recognition (CVPR). Providence, RI, USA: IEEE, 2012: 3354− 3361. |
2020, Vol. 42
Issue (4): 33-40


