基于深度特征的视觉SLAM定位技术研究

2020-03-18 09:42吴雅琴徐丹妮
智能计算机与应用 2020年10期
关键词:特征提取神经网络深度

吴雅琴, 徐丹妮

(中国矿业大学(北京) 机电与信息工程学院, 北京 100083)

0 引 言

SLAM技术使用传感器采集的数据,可以实现智能机器在未知环境中的自主定位,并构建出环境地图,是解决智能机器定位导航的关键技术,广泛应用于虚拟现实、智能家居、移动机器人以及自动驾驶等智能机器领域[1]。本文主要研究的双目视觉SLAM系统,使用摄像机就可以完成图像数据的采集,硬件成本低,携带方便,可搭载到小型设备上。

根据构建帧匹配关系时是否使用全部图像信息来区分,视觉SLAM技术可以分为直接法和间接法。直接法是直接将图像中的所有像素写入姿态估计方程中,以找到帧之间的相对运动。直接法由于使用图像的所有像素,因此计算量较大,并且对相机的采集数据速率和像素分辨率也有较高要求;间接法是基于图像特征的方法,依赖稀疏的场景关键点的重投影误差,建立约束对系统状态向量进行更新。传统的视觉SLAM经常使用的是一些点特征,例如Harris角点、SIFT、SURF、ORB,这些方法使用手工提取特征,易受噪声干扰,对周围环境要求高。然而随着应用场景的复杂变化,传统的特征描述子FAST特征、ORB特征不能满足匹配需求,影响系统结果。近来有许多基于神经网络的深度特征描述子被提出,深度特征描述子比传统描述子性能好,大多数工作专注于网络性能,使用复杂的网络模型进行特征提取,导致计算量增加,降低了运行速度。本文重点研究设计卷积神经网络模型提取图像特征,获取鲁棒性高、可分性好且满足实时需求的局部特征描述子,从而提高整个系统的效率。

1 基于特征点法的视觉SLAM系统架构

1.1 视觉SLAM方法架构

经典的视觉SLAM基本框架如图1所示。

视觉SLAM流程包含的模块及实现的功能:

(1)传感器信息读取。视觉SLAM以相机作为传感器,获取图像数据。

(2)视觉里程计(Visual Odmetry,VO)。VO的任务包括图像特征提取、计算描述子和特征匹配,通过连续相邻图像帧估算相机运动,构建局部地图。

(3)后端优化(Optimization)。针对视觉里程计产生的累积误差进行后端优化。计算累积误差并优化,得到全局轨迹和地图。主要的优化方法有基于滤波的方法和基于图优化的方法。

(4)闭环检测(Loop Closure Detection)。判断机器人是否到达过之前经过的位置,检测到闭环后,把信息交给后端优化算法,根据这些信息调整运动轨迹和地图。

(5)构建环境地图(Mapping)。根据估算的轨迹构建环境地图。

本文使用基于视觉特征的视觉里程计,提取图像特征并进行特征匹配,构建帧间的数据关联信息。传统图像特征由关键点和描述子两部分组成。本文使用卷积神经网络对图像进行特征提取与匹配,以期提高特征提取速度以及匹配准确性。

1.2 ORB特征提取方法

常用的特征提取方式是ORB(Oriented FAST AND Rotated BRIEF)算法。该算法使用改进的FAST算法进行特征点检测和BRIEF算法对特征点进行特征描述。

(1)FAST特征检测。FAST算法定义基于特征点周围的图像灰度值,如果候选点周围领域内有足够多的像素点与该候选点的灰度差绝对值大于一个阈值,则认为该候选点为特征点。如图2所示,从图像中选取一点P,以P为圆心画一个半径为3像素的圆,圆周上如果有N个像素点的灰度值与P点灰度值之差的绝对值大于阈值,则认为P为特征点。

图2 FAST特征检测

假设在图像中提取n个特征点,通过降低判定FAST特征点的阈值,使FAST算法检测到特征点数大于n个,然后计算每个特征点的Harris响应值,按响应值大小排序,取前n个Harris响应值大的点作为最终FAST特征点。

采用灰度质心法对提取的特征点进行描述,式(1)为图像块的矩定义:

(1)

其中,I(x,y)表示邻域内像素点在(x,y)处的灰度值;r表示邻域半径。

通过图像块的矩,可以求得半径为r的邻域质心,如式(2)所示:

(2)

在得到r的几何中心和质心后,将其连接,这个向量就可以表示为特征点的方向θ,式(3):

(3)

(2)BRIEF特征描述算法。在提取到关键点之后,需要在这些关键点中加入描述子。BRIEF是一种二进制的描述算法。算法的计算过程:

①以关键点为中心,取大小为SXS的邻域p,S为区域的边长;

②在这个区域p中选取nd个点对nd(x,y),定义τ,式(4):

(4)

其中,p(x)是x点的像素值大小;p(y)是y点的像素值,如果y点的像素值p(y)小于x点的像素值p(x),则τ的值为1,否则为0;(nd=128,256或512);

③将nd个结果从低位到高位组成字符串,式(5):

(5)

对比结果时要使用与点对选取顺序相同的顺序计算字符串,且计算其他特征点的描述子时也要使用同样的顺序选取点对;

④进行特征点匹配,以二个特征点字符串的汉明距离做为判断依据。

ORB算法在特征点提取时使用图像像素值,这种方法受环境影响大,例如在光照、烟雾等复杂环境中,特征点提取准确率低,影响定位结果。因此,本文使用神经网络做特征提取,改进特征点的提取,以提高定位性能。

2 基于ORB-SLAM的改进视觉SLAM系统

本文使用基于特征点法的视觉里程计,即通过特征点的位置变化来得到传感器的位姿变换。单目摄像头在单帧图像中,无法确定距离物体的真实距离,仅能通过相机的运动形成视差,测量物体的相对深度。单目SLAM更易受到运动过程中的噪声影响,稳定性较双目SLAM低,对复杂环境的适应能力较弱,无法长时间保持定位、规划的精准性。双目在硬件结构上更接近人类的双眼,通过左右目图像的视差来确定距离,也就是立体视觉。从工作原理上来说,双目是将左右目拍摄的2D环境图像通过三维立体解算成带有深度信息的三维空间结构,实现更高精度及稳定性的导航定位。

研究过程中,使用双目相机作为图像采集器,对获取的RGB图像进行深度特征提取和匹配,计算左右图像的视差,视差数据结合相机参数通过双目相机几何模型即可确定特征点在世界坐标系下的三维空间坐标。

传感器会不断记录相关数据,可以使用一个通用的数学模型(6)来描述运动过程:

xk=f(xk-1,uk,wk).

(6)

x表示传感器自身的位置,x1,.....,xk表示从离散时刻t=1,….k时传感器的位置,uk表示传感器的输入数据,wk表示噪声数据。在运动过程中需要一个观测方程来(7)描述观察到的周围信息:

zk,j=h(yj,xk,vk,j,),

(7)

因为地图中有很多路标点,若路标点有N个,可以用y1,…yN来表示,zk,j是在xk的地方观测到路标点yk的观测数据,vk,j是观测误差。方程(6)和(7)是对定位问题和建图问题的提炼,通过测量得到的观测数据,对传感器位姿状态进行估计。

2.1 基于深度学习的特征描述算法

随着深度学习在计算机视觉领域的成功,其也被应用在视觉SLAM技术中。例如,使用深度特征完成回环检测过程,使用SLAM帮助建立对应关系的大规模图像数据集等,这些方法通过深度学习的使用获得更好的结果。

通过神经网络生成关键点和特征描述子。由于训练集的完善和计算资源的增加,使用神经网络的图像局部特征描述子在尺度、旋转、光照等变化条件下有较好的不变性、鲁棒性和可区分性。网络输出采用二进制表示,并且将二进制描述向量符作为ORB特性,可以直接使用ORB-SLAM系统的改进进行验证。设计用于图像局部特征描述子提取的神经网络,获取性能超过传统特征的深度特征描述子;同时,考虑特征描述子的提取速度,为保证实时性,选取浅层神经网络作为特征提取器。

本文使用的神经网络结构为:卷积层1(Conv2d 1)-激活函数(tanh)-池化层(MaxPooling)-卷积层2(Conv2d 2)-激活函数(tanh)-全连接层(256),连接一个符号函数(Sign(x)),将输出特征向量转换为二进制表示。构建的网络结构如图3所示。

图3 网络结构示意图

基于深度学习的图像局部特征描述子,其网络训练使用随机采样策略构建训练图像三元组,使用三元组损失函数作为优化函数。神经网络训练过程如下:

(1)随机选择一对来自同一标签的正样例以及一个与正样例不同标签的负样例作为三元组,每个三元组视为一个训练样本。

(2)训练集输入网络,由图3可知网络输出为256维的二进制特征向量,训练使用的损失函数为三元组损失(tripletloss),即分别计算一对正样例的特征向量距离d1以及其中一个正样例和负样例的特征向量距离d2,距离计算使用欧式距离,如式(8):

d=(f1-f2)2,

(8)

其中,f1和f2分别为提取的特征向量。

损失函数为(α为阈值)式(9):

loss=max(d1-d2+α,0).

(9)

(3)在测试集上验证模型的性能,调整参数优化网络,得到更加准确的匹配。

2.2 基于深度特征的系统框架

使用开源的视觉SLAM框架ORB-SLAM2作为实验基础,在此基础上使用基于深度学习的图像局部特征描述子代替传统的ORB、SIFT等特征描述子,改进后的算法设计主要包括以下关键部分:

(1)对传感器进行标定,获取相机内部参数,并且对系统初始化。

(2)图像的预处理,如尺寸裁剪、去噪等,将输入经过学习的CNN网络结构,生成深度特征描述子,利用特征匹配算法将图像特征与最新图像帧进行特征匹配。

(3)对图像进行回环检测,检测是否有闭环出现。如果出现闭环,以闭环图像帧为基准,调整当前关键帧的偏移误差,并调整与当前关键帧存在重叠关系的其他关键帧位姿以及其地图点位置。

(4)当完成全局优化时,根据当前所有的关键帧在地图中的位姿,以及深度关键帧对应深度图像,构建稠密地图。

改进后的算法流程如图4所示。

图4 基于深度特征的SLAM整体框架

整个系统围绕深度特征进行计算,使用了3个线程完成SLAM:实时跟踪特征点的跟踪线程,局部优化线程(建图)以及全局的回环检测与优化线程。

3 实验设计及验证

3.1 实验环境及数据

实验使用Ubuntu18.04操作系统。选取卷积神经网络对图像进行特征提取,用深度特征代替传统特征描述子。在回环检测模块使用基于深度学习的回环检测方法,即使用前端提取的深度特征做回环检测,提高系统的定位精度和鲁棒性。为了评估改进算法的性能,使用标准的开源数据集对改进的算法进行验证,与ORB-SLAM算法在图像特征点提取速度和匹配的准确性、回环检测的效率进行对比。在真实环境数据下,验证了改进算法的有效性。在开源的Brown数据集[8]、Hpatches数据集[9]、DTU数据集[10]以及TMU数据集上训练神经网络,这些数据集包含一些室内环境序列,在不同纹理,不同光照和不同的条件结构下的图像序列、相应的轮廓和完整的校准参数,因此使用这些数据集训练得到的网络具有很强的泛化能力,在复杂场景下依然能提取到有效的深度特征。

3.2 特征提取及匹配实验

在完成网络训练后进行对比实验,对ORB传统特征提取算法和不同网络结构的神经网络特征提取进行验证,实验主要衡量特征点提取速度以及提取精度:

步骤1使用双目相机采集室内场景图像;

步骤2选取第一步中图像的连续关键帧,对双目相机的左右帧分别采用神经网络和ORB算法进行特征点提取,并计算特征提取所用的平均时间;

步骤3对实验结果对比分析,两种算法的耗时对比见表1。

表1 特征点提取算法耗时对比

从表1可以看出,神经网络算法与ORB算法相比,提取图像特征所用时间明显缩短,提取效率提高约30%。由于使用浅层神经网络,网络结构简单,参数量小, 因而神经网络算法的计算量小于ORB算法,耗时较短。实验对图5所示的室内场景分别用不同算法进行特征提取。

图5 室内场景

图6是ORB特征点数目为500时的提取结果。

图7是通过神经网络提取的特征点。

图6 ORB特征点

为了验证神经网络算法在特征点匹配方面的高效性和准确性,同样选取室内图像进行匹配实验,分别使用ORB算法和神经网络算法对图像进行特征提取和匹配。对匹配特征点对数、配对正确率以及匹配时间做对比,实验结果见表2。

表2 特征点匹配准确率及时间对比

从表2中可以看出使用神经网络算法进行特征点提取和匹配提高了匹配准确率,缩短了匹配时间。主要原因是ORB算法中对两帧图像中不重合的部分进行了匹配,在匹配点对数相同的情况下,匹配准确率下降的同时也消耗更多时间。而神经网络算法一方面提取的特征点更加准确,另一方面特征匹配时省略不重合的区域。图8是真实场景图像用神经网络完成特征提取后进行特征匹配的效果图。

3.3 实验结果分析

在EuRoC[11]数据集下对改进的视觉SLAM系统进行定位测试,EuRoC数据集包括11个运动速度、光照强度、场景复杂度不同的场景序列,这些序列由微型飞行器在不同房间和大型工业环境中飞行记录,其中剧烈光照变化、运动模糊和低纹理区域的序列是实验的重点。实验步骤:

图8 基于神经网络的特征匹配

(1)训练神经网络模型,得到最优卷积神经网络参数。

(2)神经网络模型作为ORB-SLAM算法中特征提取方法器,提取图像特征点,对每帧图像特征点进行识别,对左右帧图像进行特征点匹配。

(3)在EuRoC数据集上验证定位效果,由于EuRoC数据集中包含标准的相机运动轨迹,本文采用了均方根误差(the Root Mean Square Error,RMSE)[12]进行精度验证,视觉轨迹与真实轨迹之间的偏差定义为式(10):

(10)

表3 ORB_SLAM2系统与改进后系统定位精度对比

从表3可以看出对于简单环境如无光照影响,运动速度慢的图像序列,改进后的算法对定位精度影响不大。在复杂环境下,由于深度特征包含更丰富的环境信息,改进后算法的定位精度有所提高。

4 结束语

同时定位与地图构建技术(SLAM)的研究是移动机器人能够实现自主定位移动的关键,本文改进了基于传统特征的视觉SLAM,使用卷积神经网络算法代替传统手工特征方法,对图像进行特征点提取和匹配,实现室内复杂环境下的定位功能。在公开数据集上对改进算法实验验证,证明使用神经网络方法在定位精度和实时性上均有提高。从实验结果来看,改进算法提高了系统定位准确性和实时性,但仍存在一些问题有待研究解决。例如,可以考虑对神经网络进一步压缩优化,减小计算量,从而降低模型运行时间,进一步提高实时性。此外,系统采用纯视觉SLAM算法,仅使用双目相机作为传感器,后续可扩展到多传感器融合[13]的方法,例如惯性测量单元(IMU)等作为辅助传感器等,来提高定位精度。视觉SLAM还有许多难点有待解决,例如环境噪声等问题,这些问题有待深入研究。

猜你喜欢
特征提取神经网络深度
同步定位与建图特征提取和匹配算法研究
基于神经网络的船舶电力系统故障诊断方法
四增四减 深度推进
深度思考之不等式
MIV-PSO-BP神经网络用户热负荷预测
基于改进Hopfield神经网络的对地攻击型无人机自主能力评价
简约教学 深度学习
基于MED—MOMEDA的风电齿轮箱复合故障特征提取研究
三次样条和二次删除相辅助的WASD神经网络与日本人口预测
基于曲率局部二值模式的深度图像手势特征提取