时间:2024-05-04
罗顺心 张孙杰
(上海理工大学光电信息与计算机学院 上海 200093)
在近些年,移动机器人、无人驾驶、飞行器的发展有称为一个热门的话题,例如百度的无人机是汽车Apollo、大疆的航拍飞行器、餐厅服务机器人等。而这些热门话题中,必不可缺的一门技术就是SLAM(Simultaneous localization and mapping)技术,SLAM是在现实环境中为移动机器人等设备提供定位和建图的功能,通过SLAM技术,移动机器人能够实现在现实生活中的导航功能。由于近些年,视觉传感器的发展,使得视觉SLAM(Visual Simultaneous localization and mapping)的成型尤为迅速。并且在过去几年中已经在机器人技术和计算机视觉中得到了广泛的研究。回环检测,在计算机视觉中,也常被称为位置识别,是视觉SLAM系统中最重要的部分之一。回环检测是解决在机器人移动的定位和建图过程中,使用的帧间位姿估计算法估计位姿时,随着时间的增加而位姿产生漂移的问题。位姿产生漂移,则会使机器人建立的地图和定位不在准确。回环检测旨在识别移动机器人以曾经经过的地方。一个准确的回环检测有利于可视SLAM系统,因为它可以显著地减少随时间累积的位置误差,并使系统能够构建一致的环境图。此外,当机器人跟踪由于例如突然运动,严重遮挡或运动模糊而损失时,环闭合检测可用于重新定位。
回环检测问题的一类流行且成功的方法是基于将外观的方法。由机器人捕获的图像与对应于先前访问过的地点的地图中所获取的图像进行比较。如果它们之间的相似性足够高,超过了所设定的相似度阈值,则检测到回环。因此,在这种情况下,检测循环本质上是图像匹配问题。大多数最先进的闭环检测算法利用Bag-of-Visual-Words(BoVW)模型,例如:DBOW、DBOW2、DBOW3等。视觉词袋模型最初主要应用于图像分类。BoVW模型使用大量图像聚类特征描述符,例如SIFT或SURF,ORB等特征,产生包含许多“单词”的字典,可以将单词视为几个相似特征的代表。当出现新图像时,将计算特征描述符,并根据特征是否出现在字典中来表示图像,通过图像的描述计算图像的相似成图。然而,基于BoVW的方法有几个缺点,因为它们通常依赖于人工建立的传统特征。这些特征中的每一个都有各自的特性,有些特征可能是计算复杂,有些可能是效率低下等,不能很好地描述图像的特性。
卷积神经网络(Convolutional Neural Network,CNN)常用来处理图像类型的数据,是一种专门用来处理具有类似网格结构的数据的神经网络。自从卷积神将网络出现以后,卷积网络的框架也得到了很好的发展。如图1所示。
图1 卷积神经网络的发展
卷积神经网络在深度学习领域的最新发展表明它们具有强大的表示图像的能力,这为解决环闭合检测问题提供了一种新方法。CNN模型是基于数百万个标记图像进行训练,例如,使用ImageNet训练以获得大量权重参数。CNN模型使用训练的方式,能够学习图像的判别特性和特征。现在,由于CNN提取的特征显着优于手工制作的视觉任务特征,CNN已被用于在各种任务上实现优异的性能,例如:图像分类、地方辨识和图像检索等方面。闭环检测基本上类似于图像分类和图像检索,对于这些问题的关键步骤都是获得图像的良好表示,因此CNN特征可用于检测视觉SLAM系统的回环检测。
本模块主要针对于使用卷积特征来实现回环检测。卷积神经网络的框架众多,例如有VGG16、VGG19、深度卷积的Resnet、Googlenet等,本文选用了最常使用的VGG16网络作为卷积特征提取的网络,将获取的图片输入到VGG16的卷积神经网络中,提取图片的特征图,由于特征图是一个高维度的矩阵,因此使用了TSNE降维方法对特征图进行数据处理,然后使用降维之后的数据进行相似度的计算。本节主要包含四个部分,卷积神经网络工作原理、VGG16卷积神经网络特征图提取、TSNE降维数据处理以及相似度计算。回环检测的主要实现过程如图2所示。
卷积神经网络常用来处理图像类型的数据,是一种专门用来处理具有类似网格结构的数据的神经网络。它不像BP神经网络那样通过ONE HOT的方式对图像的数据进行处理,而是直接在图像上面进行卷积。
卷积神经网络包含多个由卷积层和池化层构成的特征提取器。在CNN的一个卷积层中,通常包含若干个特征平面(Feature Map),每个特征平面由一些矩形排列的神经元组成,同一特征平面的神经元共享权值,共享的权值也被称为卷积核(卷积滤波器)。卷积核一般以随机小数矩阵的形式进行初始化,在网络的训练过程中卷积核将通过学习得到合理的权值。卷积核带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。在卷积神经网络中,往往进行卷积的时候也伴随着子采样的过程,子采样也叫做池化(pooling),通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式,子采样可以看作一种特殊的卷积过程。卷积和池化过程都大大简化了模型复杂度,减少了模型的参数。
图2 CNN回环检测
在卷积网络中,也同样由三个部分组成,输入层、隐含层、全连接层。卷积神经网络的输入层直接用来处理多维数据,例如灰度图像或者拥有三通道的RGB图像等。由于卷积神经网络在计算机视觉领域应用非常的广泛,因此一般在介绍其结构时都是预先假设了三维数据,由平面上的二维像素点以及RGB通道组成;隐藏层通常包含了卷积层、池化层、全连接层。全连接是将卷积层的最后一层的特征图转化成一列向量,同神经网络一样,前一层的所有的神经元都与后一个层里面的所有的神经元相连。
卷积层主要是对输入的数据通过其内部的多个卷积核使用滑动窗口的方式进行特征提取,然后生成与之对应的特征图。如图3所示。
图3 卷积层示意图
图中输入的数据为6*8的图片,经过一个每次移动2个位置的2*2大小的卷积核之后,生成了一个3*4的特征图。
池化层池化是一个基于样本的离散化过程。其目的是降低输入表示的采样,减少它们的维度,并允许我们假设特征已经被包含在了子区域中。池化层作用是为了通过提供抽象形式的表现来防止过度拟合。同样的,它也通过减少了参数的数量降低了计算的复杂度并为内部的表示提供一个基本的不变性的转换。池化层示意图如图4所示。
图4 池化层示意图(均值池化、最大池化)
图4 中,分别表示了两种池化方式,一种是均值池化,一种是最大池化,使用了2*2的池化层滤波器,每次移动两个步长,因此均值池化则就是将左图中四个方格的数据相加求和,然后再计算出平均值。最大值池化则是将四个方格的数据比较找出最大的数据作为输出。
VGG16卷积神经网络模型是一个针对于图像分类和目标检测任务的模型,它是由牛津大学视觉几何组在2014年提出,且获得了当年的ILSVR的冠军。本文选用了VGG16模型来提取图像的卷积特征。VGG16模型如图5所示。
VGG16模型的输入是一个224*224*3的图片,当输入图片的时候,需要对图片的大小进行重置,使得其与VGG16模型要求的输入保持一致性。VGG16网络由5个卷积层,3个全连接层以及一个Softmax输出层构成,每一个隐藏层也都参用了RELU作为非线性激活函数。每一个卷积层都增加一个池化层(如图5红色框部分为池化层生成的结果),每一个池化层都会将特征图的尺寸缩为原来的二分之一,通道数增加为原来的2倍,大大减少了参数的同时又增强了特征图对图像的表达能力。
图5 VGG16模型图
VGG16的卷积层使用多个较小卷积核(3×3)的卷积层代替一个卷积核较大的卷积层(如图6所示),一方面可以减少参数,另一方面相当于进行了更多的非线性映射,可以增加网络的拟合以及表达能力,因此小卷积核是VGG16网络的的一个重要特点。两个3×3的卷积堆叠获得的感受野大小,相当一个5×5的卷积;而3个3×3卷积的堆叠获取到的感受野相当于一个7×7的卷积。这样可以增加非线性映射,也能很好地减少参数(例如一个7×7的参数为49个,而3个3×3的参数为27)。
图6 VGG16结构图
本文采用了VGG16的预训练权重作为VGG16的权重参数,该训练参数是由ImageNet数据集的图像训练生成。由于VGG16的卷积层生成的特征图的数量较多,如 CONV1-1、CONV1-2、CONV2-1、CONV2-2、CONV3-1、…、CONV5-3,层数越高,特征图的表达能力就越强,因此本文使用CONV5-3所生成的特征图7*7*512的特征图,即全连接层之前的特征图。每一个7*7的方格块都可以当做该图片的一个特征,因此该图片使用了512个7*7的特征表示,这512张特征图即为该图片的特征图描述。如图7所示。
图7 CNN提取特征图
TSNE(T-Distributed Stochastic Neighbor Embedding)是一种基于流行学习方法(Manifold Learning)的降维方法。它是基于SNE(Stochastic Neighbor Embedding)发展而来。TSNE的思想是通过仿射变换将高维度数据映射到概率分布上,然后降维后的数据具有相似的概率分布,实际上就是映射在高维的数据的距离在映射成低维度之后的距离具有相似的特性。
对于一个N维的数据x1,x2,…,xn进行降维,其中每一个x都具有相同的维度。SNE算法首先将欧几里得距离转换为条件概率来表达点与点之间的相似度。定义一个高维度样本的分布概率P为
P(j|i)表示第i个样本分布在样本j周围的概率。δi表示以样本xi为中心的高斯分布的方差。由于只关心不同样本之间的相似度,因此定义P(i|i)=0。映射的低维空间的概率分布公式为
其中y是x映射到低维空间的向量,同样,在低维空间中,q(i|i)=0。由于要保持低维空间和高为空间中分布概率的一致性,以KL散度定义了两个不同分布之间的目标优化函数为
式中Pi和Qi分别为样本i在高维度空间中的概率分布和在低维度空间中的概率分布。从目标函数中可以看出当 pj|i较大时,qi|j较小时,目标函数的代价会很高;当 pj|i较小时,qi|j较大时,目标函数的代价会得到一个较低的值,因此,这样就会造成不好的拟合结果。对称SNE则很好地解决了此问题。对称SNE将条件概率密度更改为联合概率密度,使在高维空间中的联合概率分布P和低维度空间中的概率分布 Q,对任意 i,j均有 pij=pji,qij=qji,定义如下:
高维度空间为
其中n为x样本的个数,低维度空间为
在对称SNE中,同样最小化SNE中的目标函数,其中条件概率的pj|i、qj|i变成了联合分布的pji、qji:
一个高维度数据降维到一个低维度数据,很可能会产生数据拥挤的问题,TSNE使用了t分布作为低维空间概率分布函数,有效地解决了数据拥挤的问题,同时在高维度空间采用了对称SNE的联合概率分布。因此:
高维度空间概率分布:
低维度空间概率分布:
目标函数也同样采用了KL散度来拟合两个分布函数。
回环检测中的一个重要环节就是计算两个图像的相似度,它代表着两个图像之间的相似程度。在机器人移动的过程中产生了很多的关键帧,将这些关键帧的集合称之为P={p1,p2,…,pn},对于关键帧中的每一帧都需要进行回环检测的计算,每一帧关键帧通过VGG16卷积神经网络提取的特征图使用 F={f1,f2,…,fn},其中每一个 f都是一个7*7*512的维度的矩阵。对于两个关键帧的相似度计算,可使用如下算法描述:
算法计算相似度
输入:关键帧 p1,p2;
输出:相似度得分:Score;
1)定义Score=0;s=[];
2)VGG16提取特征图f1,f2:
5)计算每一个特征层的距离得分:
6)end for
7) 计算两张图像的相似度得分:
return Score
该算法主要分为由三个部分组成。第一个部分是,输入的两个关键帧p1,p2通过VGG16的卷积神经网络提取conv5-3池化后的特征图f1,f2,每一个关键帧的卷积特征都是7*7*512的特征图。在这里,将每一个特征图都可以看做图像的特征描述,特使一个7*7的矩阵块,使用ONE HOT的方式,将该矩阵块变成一个49维度的向量,因此该图片的描述特征为一个512*49的矩阵。如图8所示。
图8 多层特征图转化为特征矩阵
第二个部分是对特征矩阵的降维处理,从算法中可以看待TSNE函数有一个参数dim,该dim就是设定转化到的低维度的空间数。在对特征矩阵降维之前,首先要将两个关键帧的特征矩阵变成一个曾广矩阵,这样可以使得在降维之后,仍能保持两个特征矩阵在同一个空间中,合并特征矩阵生成Fh:
TSNE算法也使得降维后的数据保持了在高维空间中的相似特性。通过TSNE算法降维后生成一个低维度矩阵Fl,将矩阵分割成降维后的特征f1′,f2′:
最后两个关键帧的得分为所有特征之和的平均值:
其中n为特征层的个数,即n=512。
回环检测就是判断两个关键帧之间的得分是否有达到相似度阈值。若大于相似度阈值则检测到回环。若小于相似度阈值,则未检测到回环。
本节主要对本篇论文中所提出的的算法进行有效性验证以及参数与相似度的关系。在本实验中,设备参数:CPU为i7 7700k,运行内存为64G,GPU为英伟达NVDIA GTX1080。采用了基于Ubuntu16.04系统,Python3.6的环境搭建而成。针对于VGG16模型,采用了较为熟知的Keras深度学习框架,VGG16模型的权重参数使用了从ImageNet数据集训练的预训练权重。TSNE降维方法使用了基于Scikit-learn的API库。实验一使用了本地采集的数据集和公开数据集TUM的数据进行测试,验证该算法实现回环的效果。实验二同时展示了降低维度的维数dim与相似度的关系,实验三展示了相似度得分中δ与相似度的关系。
实验一:
图9 本地实验室模拟机器人移动过程中拍摄的照片
图10 TUM数据集中提取的图片
图11 本地数据相似矩阵热力图
图12 TUM数据集相似矩阵热力图
图9 的图片是在本地实验室模拟机器人移动过程中拍摄的照片,图10是TUM数据集中提取的图片;图11是由本地数据集通过本实验算法得到的相似矩阵;图12是TUM公共数据集得到的相似性矩阵。
通过实验一,分别使用本地的数据和TUM数据集的数据验证了算法的可靠性,从热力图中,可以清楚地看出对角线上的相似度分数很高,而不是对角线上的数据的相似度得分很低。该热力图非常形象的说明了该算法的有效性,能够实现回环检测。在TUM数据集中,第一帧图片和最后一针图片也是一个回环,在图12中能够看到该回环同样被有效的检测出。通过本实验,充分验证了该算法对回环检测具有相当优异的表现能力,验证了该算法的可靠性。
实验二:
图13 TSNE降维中低维空间对相似度的影响
在实验二中,使用了三组数据试验了TSNE降维方法中低维空间维度的选取对图片相似度的影响。第一组和第二组采用了回环数据的图片,第三组数据采用了不是回环的数据。从图13中,能够轻易得出随着维度空间的增加,相似度的结果逐渐收敛到一个值,相似度的结果计算越准确。但是同样,随着维度的增加,降维的时间也会变得很长。因此选择一个合适的维度是非常的中,技能工增加实时性,又能够得到优异的结果。从本实验的数据中看出,降低的维度使用维度空间为5就能得到优异的结果。
实验三:
图14 δ参数对相似度的影响
实验三使用了两组数据对参数δ进行了探讨实验,从图14中可以看出,该参数对相似度的影响非常大。图中data1的曲线为回环数据的曲线,data2的曲线为非回环的数据,对于data2来说,如果选择了一个大的参数值,而相似度阈值却没有改变,则很容易就误认为检测到回环。该参数必须选择一个非常合适的才能够准确的表示回环。从本实验中能能够看出,δ的取值尽量在0.1~1之间,该区间内,既能够得到很好的相似度结果,又能够非常明显地区分出不是回环的效果。
本文采用了深度学习中的卷积神经网络作为图像特征的提取,对于得到的高维特征,采用了目前效果最好的TSNE数据降维方法进行数据降维,剔除高维特征中冗余的数据,减轻了计算量。最后采用高斯函数计算每一张特征图的距离相似度得分。最后将所有特征图中的分数均值化处理,得到最终相似度得分。在本文的实验中,能够看出卷积神经网络对实现回环检测有着非常好的效果。TSNE数据降维方法中降低特征的维度的选取是一个重要的参数,它不仅影响着相似度得分,同时对算法的实时性也有重大的影响,因此需要选择一个合适的维度,既能保持相似度的效果,又能满足实时性要求。参数δ也需要选择一个合适的值,使得回环检测的相似度结果满足要求。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!