DeepCA-VO:基于通道域注意力机制的视觉里程计方法*

2023-06-04 06:24熊志丽刘华军
计算机与数字工程 2023年2期
关键词:里程计注意力卷积

熊志丽 刘华军

(南京理工大学计算机科学与工程学院 南京 210094)

1 引言

同时定位与地图构建(Simultaneous Localization and Mapping,SLAM)问题一直备受机器人和自动驾驶领域的关注,在经典的视觉SLAM 框架中,视觉里程计(Visual Odometry,VO)扮演着前端的作用,即在读取传感器传来的信息后,通过相邻两帧的图像信息估计出图像之间的相对运动,运动主要包括旋转和平移两个层面。VO的概念最早应用领域为火星探索[1]。传统的VO 工作流程主要包括:相机校准、对输入的图像进行特征的提取和筛选、相邻帧的特征匹配、异常值剔除、运动估计和比例估计、局部优化、最后输出位姿。可见传统VO系统的运行过程比较复杂,分为很多模块,每个模块都有各自的算法,将不同模块耦合在一起也是工作重点。

传统方法按照是否提取特征可以分为特征点法和直接法。特征点法主要运用在场景纹理丰富、特征明显的情况下。特征点由关键点和描述子组成,在提取关键点后再通过计算描述子对关键点进行筛选。提取关键点是指获得像素点的位置,而描述子是一个向量,能够根据人工设计的方法对该关键点周围的像素信息进行描述,减少甚至消除相机视角的变化对图像尺度和方向的影响,更好地进行帧间匹配。有的特征点还包含朝向、大小等信息。SIFT[2]、SURF[3]、BRIEF[4]是描述子常见的算法。

直接法主要用光流来描述运动信息。光流分为计算所有像素的稠密光流以及计算部分像素的稀疏光流。稀疏光流的代表有Lucas-Kanade(LK)光流[5],可用于SLAM 的特征点位置跟踪。通常被用来跟踪角点的运动。稠密光流的代表则有Horn-Schunck[6]光流。

目前像ORB-SLAM2[7]这样的特征点法在精度上已经能够达到工业界的要求,但特征点的筛选和匹配算法计算复杂耗时较大,而且受环境影响严重。当处于光线暗以及纹理弱的环境下,能检测到的特征点数量会大大下降,从而对结果产生很大影响。而基于光流的直接法虽然运行速度快,但由于该方法依赖于像素的运动,因此受光照强度变化的影响很大。而随着深度学习的兴起及其在图像特征检测方面的卓越优势,学者们看到了用深度学习解决视觉里程计问题的潜力。另外,基于深度学习的方法不需要人工设计特征,这也是此类方法的一大优势。

在特征提取,特征匹配及位姿估计这些环节都可以引入深度学习。LIFT(Learned Invariant Feature Transform)[8]就采用深度学习的框架实现了特征提取的功能,其性能甚至优于传统的SIFT 算法。D2-Net((A Trainable CNN for Joint Description and Detection of Local Features)算法是由Mihan 等人[9]提出的,该方法对光照的鲁棒性较好。而在位姿估计环节,因为CNN 在对序列关系进行建模方面表现不尽如人意,此环节引入了循环神经网络(RNN),后来由于RNN 不适合用于长时序列的估计,而LSTM(Long Short-Term Memory)[10]能很好地解决这个问题,逐渐用LSTM替代了原始的RNN。

2 相关原理

2.1 CNN用于特征提取

卷积神经网络(Convolutional Neural Network,CNN)的研究自21世纪80年代开始,在经历少有人问津的几十年后,随着深度学习理论的提出重现于人们的视野中。为了适应不同的学习任务,各种各样的CNN结构层出不穷。著名的结构有AlexNet[11],VGG,GoogleNet,ResNet等。

对于视觉里程计问题,因为视觉里程计和图像分类,目标跟踪这类问题有很大区别,我们不能简单地采用这些流行结构来解决问题。这里我们采用2015 年Dosovitskiy 等[12]提出的卷积神经网络FlowNet-S。这是一种用于估计帧间光流的卷积神经网络,可以学习图片间的几何特征。但我们只关注FlowNet-S 网络前面的卷积部分,丢掉了后面的反卷积部分。

2.2 LSTM解决时序性问题

循环神经网络(RNN)主要用于处理时序输出信号。RNN 的网络深度的增加有助于网络在更加抽象的特性上的表达,将上一层RNN 的输出作为下一层RNN 的时序信号输入,依次往上叠加,最后一层RNN 的输出作为整个网络的输出,深度RNN网络由此形成。RNN 的状态更新方程。以及输出方程为

梯度消失问题产生的原因是当前时刻的梯度往前传播时,梯度会随着时间间隔变长而变小。采用LSTM 可以很好地解决这个问题,其内部结构如图1。LSTM 采用三个门来处理输入信号、内部状态以及输出信号,其中输入门对输入信号进行过滤,遗忘门对上一时刻状态进行过滤,输出门对输出信号进行过滤。几何法求解VO 问题时,经常会考虑集束约束(Bundle Adjustment,BA)问题,其实就是把多帧图片之间的约束关系考虑进来,从而提高VO估计的精度。

图1 LSTM内部结构

2.3 注意力机制

近两年,注意力模型在自然语言处理、图像识别及语音识别等各种不同类型的深度学习任务中有着广泛使用。人们对他们注意到的目标内部以及该场景内每一处空间位置上的注意力分布是有区别的。注意力机制是一种能让模型对重要信息重点关注并充分学习吸收的技术。计算机视觉中的注意力机制分为通道域注意力机制,空间域注意力机制,混合域注意力机制。本文采用的是通道域的注意力机制[13]。

对于通道域注意力机制的原理,联系傅里叶变换我们可以从信号变换的角度理解。时频变换可以将正弦波信号转换成频率信号,而所有的信号都可以看成是正弦波的线性组合。在卷积神经网络中,每张RGB 图片都由三个通道表示,在经过不同的卷积核卷积之后,每一个通道又会生成新的信号,比如对图片特征的每个通道用64 个卷积核进行卷积操作,就会产生64 个新通道的矩阵(H,W,64)。可将这64 个新通道的特征视为图片在不同卷积核上的分量表示。产生的新的64 个通道对于关键信息的贡献理论上来说不尽相同,那么每个通道对关键信息贡献度可以用权重来代表,权重越大,则表示相关度越高,说明此通道需要被注意。

3 融合了注意力机制的VO方法

本文所提出的网络结构可以端到端地输出相机位姿,主要由基于卷积神经网络的特征提取器和基于LSTM 的位姿回归器组成。通过对特征提取模块添加注意力机制子网络使得卷积神经网络能提取到更多利于位姿估计的特征。本文的网络结构参考DeepVO[14],但在此基础上做了以下改进:

1)卷积神经网络最后加了一层池化层,使得特征图维度进一步降低。

2)DeepVO中随机产生长度不同的序列作为网络的输入,而本文采取固定长度输入,序列长度为超参数,可以根据需要进行调整。

3)DeepVO 中采用了两层LSTM,本文只有一层。

4)本文的方法添加了通道域注意力模块。

3.1 基于卷积神经网络的特征提取器设计

该网络一共包含十层卷积,每层卷积后面都接一个非线性激活函数ReLU(Rectified linear unit)。本文在最后一层卷积层后加一个池化层,起到降低特征图维度,减少网络参数的作用,将经过CNN 处理得到的多个10×3×1024 大小的张量拉伸为一维向量后再输入给LSTM。所有的图像在输入前统一将尺度调整为1280×384,因为输入的是图像对,且都为RGB图像,所以通道数为6。

LSTM层的主要作用是让网络自动学习连续多个姿态时序上的内在关系,因为LSTM 能记住前面多帧图片之间的几何关系,然后再对当前时刻的姿态进行估计,达到多帧图片之间几何约束的效果。因为Sigmoid 激活函数会将数据限定在(-1,1)之间,完整的网络结构如图2所示。

图2 CNN-LSTM网络结构图

3.2 基于卷积神经网络的特征提取器设计

卷积神经网络在提取特征时对每个通道一视同仁,这显然是不合理的。基于通道域的注意力机制[13]通过对通道之间的相互依赖关系进行建模,能够自动改变通道对特征的响应,选择性地关注有用的特征并抑制不太有用的特征。这种子网络的计算成本很低,但能给性能带来明显的提升。具体操作是将特征图放到一个向量上去操作,给响应最大的位置更多的权重。将基于通道域注意力模块集成到本文提出的深度学习网络框架中进行端到端的训练。其基本结构如图3 所示,集成到深度学习网络框架后的网络结构如图4所示。

图3 通道域注意力机制子网

图4 添加注意力模块的网络框架

3.3 用于数据增强的网络结构设计

在之前的基础上设计了一种网络结构,通过添加约束使网络更准确地估计相对位姿。如图5 所示,网络结构是左右对称的,左边和上文提到的网络结构一样,而右边结构为左边结构翻转得到,各个部分的参数共享。左右两边同时输入,但右边的输入序列为左边输入序列的逆序。最后对输出的两个姿态一起计算误差并优化。

图5 数据增强后的网络结构

图6 注意力机制对性能的影响

3.4 损失函数及优化

可以把VO 估计问题看成一个条件概率问题:给定一个序列的图片(I1,I2,I3…,In),计算得到这串序列中两两相邻的图片之间的相对位姿的概率:

求解最优的网络参数w使得上述概率最大化:

对于N 个序列,采用MSE(Mean Squared Error)作为误差评价函数,可以得到最终需要优化的函数:

β为尺度因子,用于保持位移误差和转角误差的平衡性。

4 实验结果与分析

本节通过3 组实验验证了本文设计的基于通道域注意力机制的视觉里程计网络的有效性,第1组实验致力于比较添加注意力模型对网络性能的影响。第2 组实验对不同方法性能进行了比较,包括传统方法VISO2_M 和VISO2_S,以及基于深度学习的方法DeepVO。第3 组实验致力于验证本文方法在不同数据集上的有效性。

4.1 数据集

4.1.1 KITTI数据集

KITTI Visual Odometry[15]是目前自动驾驶领域最重要的测试集之一,该数据集提供了很多基准如立体评估、光流估计、深度估计等。KITTI数据集还可以广泛用于评估各种VO 或者视觉SLAM 算法。KITTI VO benchmark 共包含22 个场景序列。其中前11 个场景还包含汽车行驶轨迹的真值,本文方法只需用到双目图像中的单目图像。

和DeepVO 一样,将序列00,01,02,08,09 作为训练集,序列03,04,05,06,07,10作为测试集。

4.1.2 Microsoft 7-Scenes数据集

Microsoft 7-Scenes[16]是一个由手持Kinect RGB-D 相机在7 个不同的室内办公场景中采集的RGB-D 图像组成的数据集。并使用KinectFusion获取真实位姿。每个场景包含若干运动方式不同的序列,在室内存在运动模糊、感知混叠以及无纹理的情况。

4.2 实验环境及参数配置

本实验采用一块英伟达泰坦显卡(NVIDIA TITAN X Pascal GPU)来训练和测试网络。通过深度学习框架Pytorch 进行相关算法的设计。优化方法为批量梯度下降法(Batch Gradient Descent),其它参数详情见表1。

表1 网络超参数设置

4.3 实验结果与分析

目前在KITTI VO/SLAM 数据集上最常用的评价指标有四种:不同长度子序列的平均旋转误差(Translation errors for subsequences)和平均平移误差(Rotation errors for subsequences),以及不同时速下的平均平移误差(Translation errors for different speeds)和平均旋转误差(Rotation errors for different speeds)。

4.3.1 注意力模型对性能的影响

本文测试的网络分别为基于深度学习的视觉里程计方法CNN-LSTM-VO 和在此基础上添加了通道域注意力模型的视觉里程计方法Deep-CA-VO,以及经过数据增强后的网络Deep-CA-VO-cons。不同网络测试后的轨迹对比图如6所示,其中gt表示位姿标签。

针对常用的前两种评价指标,在不同长度序列(100m,200m,…,800m)上计算平移矢量和旋转量的均方误差,计算其均值并以此作为视觉里程计方法的精度指标。具体数值如表2 所示。从表中可以看到添加了注意力机制后,网络对旋转的估计精度提高较对平移估计精度提高更显著。

表2 注意力机制有无在04,07,10序列上的误差

4.3.2 与其它方法的性能比较

本节选择主流的三种方法VISO2-M,VISO2-S,DeepVO 与添加了注意力模块且经过数据增强网络DeepCA-VO-cons 进行对比。前两种是主流的传统方法,区别在于VISO2-M 是单目视觉里程计方法,而VISO2-S 是双目视觉里程计方法。而DeepVO 是近期提出解决视觉里程计问题主流的深度学习框架。如表3 所示,显示了不同方法在不同序列下平均平移和旋转误差的RMSE。图7是不同方法在序列07 上的轨迹图。在不同路径长度下,本文提出的方法优于VISO2-M,与DeepVO 性能接近,分析原因是DeepVO 使用了两层LSTM,因此对序列依赖关系的学习能力更强。而VISO2-S用到了双目图像,性能普遍比单目视觉里程计方法要好。

表3 不同方法性能对比

图7 与其它方法的性能比较

4.3.3 在Microsoft 7-Scenes数据集上的结果分析

本节选择用Fire,Office,RedKitchen 以及Stairs场景下的序列作为训练集,其余Chess,Heads,Pumpkin 场景下的序列作为测试集。由于室内数据集上的平移分量较室外数据集上的小,因此在训练过程中降低了损失函数中旋转与平移分量权重因子β的值。图8显示了Chess场景下seq-02上估计的轨迹结果。结果表明本文提出的方法在不同场景下也具有可用性。

图8 在chess场景seq-02上的轨迹估计结果

5 结语

本文提出了一种新的端到端的基于深度学习并融入通道域注意力机制视觉里程计算法。通过融合基于通道域的注意力机制,使得网络模型能够学到更多有用的特征,相比于传统算法,具有更准确的结果,同时摒弃了相机标定,特征提取等复杂过程。在不同场景下具有实用性,且具有较高的稳定性。相比于其它的基于深度学习的网络,其复杂度低,对硬件要求相对较低。下一步的工作将考虑增加样本空间,提高位姿估计效果,更好地应对测试集中样本多样性增多的情况。考虑采用轻量化网络,减少网络参数,加快网络训练速度,拓展其应用前景。

猜你喜欢
里程计注意力卷积
室内退化场景下UWB双基站辅助LiDAR里程计的定位方法
让注意力“飞”回来
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
一种单目相机/三轴陀螺仪/里程计紧组合导航算法
基于模板特征点提取的立体视觉里程计实现方法
基于傅里叶域卷积表示的目标跟踪算法
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
大角度斜置激光惯组与里程计组合导航方法