作为机器人的一个重要分支,移动机器人系统所具有的核心能力就是自主导航能力.为实现这一目标,须要完成建图、定位、运动规划等任务[1].大多数视觉同时定位与地图构建(SLAM)系统依赖于人为设计的图像特征,例如改进的尺度不变特征转换(SIFT)[2]特征与定向旋转不变快速(ORB)[3]特征,但是这些特征在较为复杂的环境中可能无法提供一致的特征提取与特征匹配结果,其中最为典型的场景就是光照条件的改变及动态物体的干扰.随着计算机与人工智能的发展,基于深度学习卷积神经网络(CNN)的特征提取在计算机视觉任务中已经在一定程度上代替了人为设计的图像特征[4],并且成为领域的研究热点.卷积神经网络在大量面向任务的数据训练后,可以学习如何在光照条件改变、动态物体干扰以及视角变化的情境下进行鲁棒性地特征提取.虽然大多数卷积神经网络对图像的特征表达是基于图像区域级的(例如语义),但是也有专注于像素级特征的卷积神经网络(例如Superpoint[5]与GCN v2[6]),这些基于像素的特征也被称作局部特征.基于这些特征的视觉同时定位与地图构建系统为了保证特征的质量,需要大量的训练数据训练卷积神经网络模型进而需要计算能力较强的GPU进行加速以保证实时性,因此较难布置在移动机器人平台上,例如DROID-SLAM[7]对GPU的计算能力有着较高的要求,因此该算法较难在移动机器人平台进行布置.针对动态物体存在的情况,还有一种较为常见的方法是结合深度学习的语义信息,在图像中剔除动态物体.例如Su等[8]提出了一种基于Yolo v5的语义视觉SLAM算法,实时地对图像进行语义分割,框选潜在的运动物体并将该区域的特征点剔除,在一定程度上保证了实时性.阮晓钢等[9]则基于Mask R-CNN做了类似的研究工作,把动态对象的语义信息提供给跟踪线程,通过运动一致性检测剔除动态对象中的特征点并利用静态的特征进行位姿估计.基于语义的视觉同时定位与地图构建虽然可以在一定程度上解决动态物体的问题,但是当动态物体占据画面较大面积时较难提供稳定的特征,而且对光照条件改变情景下效果的提升不显著.除此之外,视觉同时定位与地图构建系统中的重定位流程一般是基于词袋模型(BOW)[10]进行的.重定位流程是基于当前图像帧与关键帧数据库中所有关键帧的一个匹配过程,因此词袋模型作为一种聚合图像局部特征的全局特征被应用于这个领域,但这意味着词袋模型的效果很大程度上依赖于局部特征的稳定.因此,基于卷积神经网络的图像全局特征(例如NetVlad[11]),更加适合用于视觉同时定位与地图构建系统中.综上所述,本研究提出了一种面向光照条件改变以及动态物体存在场景的视觉同时定位与地图构建方法,建立神经网络模型解决局部特征与全局特征的提取问题,引入注意力机制降低训练所需的数据量,同时改进了传统的重定位流程.1 整体框架本研究提出的视觉同时定位与地图构建方法整体框架基于ORB SLAM2[12],其框架如图1所示.首先收集黑暗与明亮场景的图像与不包含潜在动态物体的图像,输入到教师模型中导出预测,作为数据集的标签参与学生模型的训练.在运行中则输入图像到神经网络模型中,输出局部特征与全局特征,局部特征进行特征匹配解算位姿,同时与全局特征参与基于多级特征的重定位流程,剩余的流程与传统的视觉SLAM算法一致,包含后端优化、局部建图以及回环检测等流程.10.13245/j.hust.240658.F001图1整体框架示意图2 基于深度学习的特征提取与匹配为了在一定程度上解决传统特征不够稳定的问题,本研究在复合神经网络HF-Net[4]的基础上进行了一定改进作为特征提取的神经网络,其主要结构见图2.10.13245/j.hust.240658.F002图2神经网络结构示意图2.1 特征提取网络的整体结构特征提取网络的主干网络选择轻量化的MobileNet V2[13],以保证整个系统的实时性.输入图像在经过第一部分编码器Mobilenet环节后,经过注意力模块输出的特征图进入Superpoint局部特征解码模块,该模块主要负责输出输入图像中每个像素点成为关键点的分数及其局部描述子.输出的特征图再经第二部分编码器MobileNet处理,得到更深层的特征图后输入到NetVlad层,进而输出图像的全局描述子.作为主干网络的MobileNet V2体积小,精度高,是典型的轻量级神经网络.相较于初代MobileNet[14],额外引入了线性瓶颈结构与反向残差结构.前者可以减少参数量,后者则主要在防止梯度消失的前提下加深网络的深度,进而增加特征模型的表达能力.用于提取图像全局特征描述子与局部特征描述子的解码器模块,则分别使用Superpoint模块与NetVlad模块.Superpoint模块提取的特征对视角变化的抵抗性较好.至于NetVlad模块,是Vlad算法[15]的神经网络实现版本,可将若干局部特征描述子聚集起来,作为图像的全局描述子.2.2 注意力机制的引入由于神经网络不同层级之间输入输出的特征图是按多个通道进行输出的,而且各个通道对输出的影响是不同的,因此引入SE-NET[16]注意力机制,用于获取特征图的各个通道对整体任务的影响程度,并且为各个通道赋上权值进而使神经网络在训练中重点关注某些特征通道,并且抑制对任务用处不大的特征通道,其流程见图3.假设特征图的维度为[h,w,c],首先通过全局平均池化,将特征图的维度压缩为[1,1,c],此时原本特征图中的每个二维特征都被压缩为1个实数.压缩后的特征图经过一个全连接层后,将特征图的通道数压缩为原来的1/r,即此时的维度为[1,1,c/r].之后经过另一个全连接层,将特征图的维度升回[1,1,c],再经过sigmoid激活函数,将其转化为归一化的权值向量.最后将原输出特征图与该权值向量相乘,得到加权后的特征图.10.13245/j.hust.240658.F003图3注意力机制示意图2.3 神经网络模型的蒸馏训练一般来说,针对特征提取任务,需要训练用的数据集具有真值进行监督训练,而对这样规模的数据集进行人为标注非常困难.而且为了模型的适用性,需要数据集在图像级别上体现出感知的多样性,包括光照条件的不同、季节的不同.为了解决这个问题,采取多任务蒸馏训练的方式进行,即从教师模型中学习学生模型.为了使训练得到的模型对光线条件改变具有较强的抵抗性及对各种不同场景的普适性,训练用的数据集取自BerkeleyDeepDrive数据集中的光照条件各异的图像,并将其按照光照条件分为night组和dawn组,这一部分主要用于训练模型对于光照条件改变的抵抗性.此外,在GoogleLandmarks数据集中下载了大约1.85×105张图像,这些图像绝大多数不包含潜在的动态物体(例如汽车、行人等).这使得训练的模型在真实环境下提取特征时会更倾向于在一些不包含潜在动态物体的区域,从而间接提高模型对动态物体的抵抗性.因此,这部分数据主要用于训练模型的普适性及提高模型对动态物体的抗干扰能力.此外,这些数据集是没有标签的,因此先导出作为教师模型的NetVlad模型和Superpoint模型的预测,作为数据集的标签,实现对学生模型的监督,完成整个模型的监督训练.3 基于局部-全局特征的重定位改进3.1 基于词袋模型的重定位存在的问题传统的视觉重定位方法是基于词袋模型的.词袋模型通过预先离线对大量的图像进行特征提取获得特征,将获得的所有特征进行反复聚类,得到词汇树.之后对每一帧图像的任一特征fi,都可以找到与之对应的单词wj.再对该帧图像的全部特征(f1,f2,…,fn),在词汇树里寻找该特征对应的单词,将图像用词袋向量V=(w1,w2,…,wn)表示.在重定位流程中,针对当前帧图像F计算其对应的词袋向量,并且在当前已有的关键帧数据库中检索得到与当前帧具有公共单词的所有关键帧,在找出的关键帧中与当前帧F具有最多公共单词的数目记作M1;之后进行二次筛选,筛选公共单词数目≥0.8M1的关键帧,并且利用下式计算满足该条件的每帧关键帧的相似得分s,有s=∑i=0nvi-wi-vi-wi, (1)式中vi和wi为当前帧图像词袋向量与当前计算的关键帧词袋向量的第i项.之后,针对这些关键帧再寻找每一个与之具有共视关系的关键帧,形成若干个关键帧组并记录组内的最高分与总分.这些组中的总分最高值记作M2,则筛选总得分≥0.75M2的组,并将这些组内的最高分关键帧返回作为最终的备选关键帧.得到备选关键帧后优化流程,得到优化后的当前帧的位姿;一旦任何一个备选关键帧成功计算出当前帧的位姿,则重定位流程结束,剩余的备选关键帧也不再考虑.基于以上的机制,可以分析出视觉重定位失效的主要原因:在基于词袋模型的初步筛选关键帧过程中没有任何关键帧满足所有的条件,也就是关键帧数据库里没有任何一帧关键帧与当前帧有公共单词,或者在其他环节被筛掉了.3.2 基于局部-全局特征的重定位改进针对以上原因,对重定位流程进行改进,提出了基于全局描述子的关键帧粗筛选.首先,重定位流程的第一步保持不变,在关键帧数据库中寻找与当前帧具有公共单词的关键帧;之后,在这些关键帧中不再根据公共单词的数目作为评价的标准,而是根据神经网络模型输出的全局描述子向量Vglb,与关键帧数据库中每一帧的全局描述子向量Vkglb按照下式计算二者之间的距离,有:Vdis=Vglb-Vkglb; (2)d=∑i=0nVdis2, (3)式中d为当前帧与关键帧的距离.将这些关键帧按照距离排序,选择前4帧关键帧作为备选帧.须要注意的是这里的4帧是可以改变的,并且若第一步筛选出的关键帧不足4帧则全部作为备选帧,随后进行位姿估计流程.4 实验分析4.1 神经网络模型的收敛情况对引入注意力模块前后的网络分别进行训练,验证其对训练效率的影响.数据集为上文提到的来自BDD100k[17]和GoogleLandMark的总计约2.2×105张图片,预先用Superpoint模型和NetVlad模型对上述图片进行处理,得到预测作为训练时的标签.训练用的工作站操作系统为Ubuntu18.04,处理器为英特尔酷睿i9-9900x,最大频率为3.5 GHz,GPU为英伟达RTX2080ti,显存为11 GiB.训练中迭代次数iiter设置为8.5×104次,批量大小设置为16,每500次记录一次损失函数的收敛情况,训练结果如下:损失函数项中关键点分数、局部描述子和全局描述子未引入注意力收敛次数分别为6.15×104,6.2×104和6.2×104,引入注意力后收敛次数均为6.05×104.在未引入注意力机制的情况下,关键点分数项在迭代次数为6.15×104次左右时收敛,而局部描述子和全局描述子的损失项则在迭代次数为6.2×104次左右时收敛.引入注意力机制后三项损失函数项均在6.05×104次达到收敛,比未引入注意力的网络平均提前了大约1 300次收敛,减少的数据量约为2.08×104,这意味着网络对训练用的数据量的需求变小了,在更小的数据量下可以达到相同的效果,提升了网络训练的效率.4.2 特征提取匹配的评估对于视觉SLAM系统来说,最大的挑战之一就是光照条件的改变,因此在本部分评估训练得到的模型能否在同一地点不同角度与光照条件的情景下提取特征并进行匹配,并且与Superpoint算法进行对比,手动采集了若干组同一地点但是光照条件及角度不同的图片对进行对照.本部分用的图片分辨率均为1 024✕1 024,均为jpg格式,第一组面向室内场景的三对图像结果如下:其中上方为Superpoint算法进行的特征提取匹配,下方为本文算法,结果如图4所示.10.13245/j.hust.240658.F004图4室内场景对比结果场景一是室内货架混杂物体摆放,此场景是纹理丰富的,因此两种算法的表现相差不多.场景二是室内有地面反射与玻璃透射的场景,可以发现Superpoint算法在地面反射的窗格区域存在误匹配现象,而本文算法则没有出现.场景三则是室内楼梯间,虽然Superpoint算法提取到了更多的特征,但是仍然存在地面反射的误匹配现象.室外场景下的对比结果如图5所示.场景一两种算法都在窗格区域产生了误匹配情况,但本文算法在图像左侧提取并匹配到了特征,而Superpoint算法没有,意味着本文算法提取的特征更加均匀且可靠.场景二本文算法明显提取了更多的稳定特征,Superpoint算法仅匹配了7对特征,而且地砖区域存在误匹配.场景三也是本文算法提取的特征更加均匀,而Superpoint算法则过于集中在纹理丰10.13245/j.hust.240658.F005图5室外场景对比结果富的区域.综上所述.本文算法在纹理丰富场景下与Superpoint算法效果相差无几,而在一些较为极端的场景下(例如反射纹理),本文算法表现则优于Superpoint算法.在室外场景下,提取的特征更加均匀可靠,这有利于SLAM系统中的跟踪.4.3 整体系统定位精度评估为了验证本文视觉SLAM系统的整体效果,在TUM数据集上进行验证,TUM数据集主要包含分辨率为640✕480的8位RGB图像和分辨率同样为640✕480的16位深度图像,二者格式都为PNG格式,同时TUM数据集提供了由外部运动捕捉系统采集到的groundtruth轨迹文件,因此便于用于视觉SLAM系统进行建图的定位精度评估.验证的平台CPU为i5-6300hq,GPU为GTX950m.选取的序列为用于评估动态物体影响的Dynamic Objects系列中的fr3/sitting_static序列和fr3/walking_static序列,并且与ORB SLAM2和GCN SLAM算法进行对比.在序列一fr3/sitting_static中动态物体的干扰形式为两名工作人员在画面中以坐姿的形式进行一系列交谈与肢体动作,同时视觉传感器作小幅度的运动.分别用上述三种算法在该数据集上进行稀疏建图,之后利用EVO轨迹评测工具评估三者的定位精度(结果见表1),评估指标为整条轨迹与groundtruth轨迹的绝对轨迹误差.可以看出:本文算法均方根误差、最大误差、最小误差及平均误差均优于基于传统ORB特征的ORB SLAM2算法,也优于同样基于深度学习特征的GCN SLAM算法.10.13245/j.hust.240658.T001表1序列一定位精度对比算法均方根误差最大误差最小误差平均误差ORB SLAM29.12741.5540.6157.995GCN SLAM6.63227.7810.6665.644本文6.13126.6910.3915.158mm在序列二fr3/walking_static中,动态物体的干扰形式为两名工作人员从坐姿站起走出画面后再走回画面坐下,三种算法的精度都较上文的数据集序列有较明显的下降,对比结果见表2.10.13245/j.hust.240658.T002表2序列二定位精度对比算法均方根误差最大误差最小误差平均误差ORB SLAM2391.023646.44653.751356.315GCN SLAM304.538713.22122.837218.280本文124.493352.45518.827104.138mm三种算法都会在一定程度上随人员走出与走回画面时产生较大误差,其中GCN SLAM算法甚至会丢失跟踪,这也是为什么在最大误差项中GCN SLAM算法的表现甚至不如ORB SALM2算法的原因.在均方根误差项中,本文算法大幅度领先于ORB SLAM2算法,也在一定程度上优于GCN SLAM算法.最大误差项由于GCN SLAM算法会丢失跟踪,因此表现甚至不如ORB SLAM2算法.最小误差项本文算法比GCN SLAM算法的表现略好一点,并且二者都比ORB SLAM算法表现要好.平均误差项则本文算法较大幅度领先于ORB SLAM2算法和GCN SLAM算法.4.4 真实室内环境下建图与重定位实验在室内办公室走廊环境进行建图效果验证,实验平台运动底盘为Husky A200,使用的视觉传感器为Kinect V2.实验环境选择了典型的室内走廊环境,其场景和空间结构如图6所示,构建的稀疏点云地图如图7所示.10.13245/j.hust.240658.F006图6室内走廊环境的场景和空间结构10.13245/j.hust.240658.F007图7室内环境下稀疏点云地图构建在得到稀疏点云地图后,对本文算法的重定位性能进行评估,并且与3.1节传统的重定位方法进行对比实验.在预先建图后,在环境中随机选取10个位置进行重定位实验,以重定位成功的次数作为指标.同时为了避免随机性带来的影响,本实验共进行3轮,实验结果见表3.可以看出:本文改进的重定位方法相较于传统重定位方法性能略有提升,但是在纹理极为稀疏的情况下仍会出现失效的问题.10.13245/j.hust.240658.T003表3三轮重定位成功次数对比实验结果方法第一轮实验第二轮实验第三轮实验传统方法997本文方法10995 结语本研究提出了一种基于深度学习图像特征的视觉SLAM方法.首先,在神经网络模型中引入了注意力机制,达到同等效果所需的训练的数据量平均降低了2.08×104次.其次,收集了大量的图像用于训练流程,验证了神经网络模型在同一场景不同角度及光照条件下提取的特征的鲁棒性、准确性与均匀性均强于Superpoint算法.此外,基于深度学习提取的局部特征与全局特征,对重定位流程进行了一定的改进,在TUM数据集fr3/sitting_static和fr3/walking_static序列上验证了其定位精度,优于传统的ORB SLAM2算法和GCN SLAM算法,轨迹的均方根误差为0.006 131 m和0.124 493 m.最后在真实室内环境下验证了本研究方法建图的效果,并且在该稀疏点云地图的基础上将传统重定位流程与本研究改进的重定位流程进行了对比,结果显示本研究改进的重定位方法性能稍强于传统重定位方法,但是在纹理极为稀疏的场景下仍会失效.

使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,

确定继续浏览么?

复制成功,请在其他浏览器进行阅读