王 恒,吴 波,王振明,于剑峰
1.中国科学院 上海高等研究院,上海 201210
2.中国科学院大学,北京 100049
同时定位与地图绘制(simultaneous localization and mapping,SLAM)是各个学科、各方面知识交织融合的一个产物,是紧密地联合数学理论、系统理论、计算机视觉、电子信息科学等各个方面的综合体。SLAM概念最早是在旧金山举行的机器人会议上被Smith等人[1]提出。进入21世纪,Davison等人[2]提出了第一个实时的单目SLAM系统(MonoSLAM)。随后,Klein等人提出了并行SLAM系统(parallel tracking and mapping,PTAM)[3],是第一个使用束调整(bundle adjustment,BA)完成实时SLAM的系统,首次把SLAM系统中区分出前后端,实现跟踪与建图线程并行化。Raul等人提出了一种基于稀疏特征点的单目ORB-SLAM系统[4],它突破性地使用了三个线程,分别是跟踪线程、局部建图以及回环检测。这之后,SLAM系统的基本框架趋于成熟,即传感器模块、前端视觉里程计模块、后端非线性优化模块、回环检测模块,建图模块组成。
单目SLAM系统因为成像在深度距离的测算上没有确定性,需要运动起来才能有前后帧间的估算深度,这使得其定位精度较低。同时期,利用深度学习方式进行深度估计的方法越来越多。随着深度学习算法的创新以及硬件计算力的突破,深度学习获得了突破性的发展与进步,有越来越多的人使用深度学习网络的方法来进行单目深度估计。Eigen等人[5]提出了一种采用两段式编码器-解码器(Encoder-Decoder)网络结构来进行单目深度估计的监督学习方法,前者获得低分辨率深度图作为中间产品,而后者获得具有原始分辨率的最终深度图,成为大多数网络的基础框架。为了获得平滑和精确的深度,Hu等人[6]添加多层边界融合模块(bottom-up boundary fusion,BUBF)利用了多级特征和多任务损失。Chen等人[7]添加金字塔模块到网络中,逐渐细化到网络最后的深度。还有一些网络[8-10]等结合深度、语义分割等来预测单目深度。
本文提出的一种基于SS-Net的SLAM系统方案,仅依靠单目获取的信息,利用深度估计网络预测帧序列,有效提升单目SLAM系统的性能,提高系统精度。本文基于ORB-SLAM系统进行改进,提供了一种采用深度学习实现预测同一场景的深度信息,并基于此提高ORB-SLAM性能的方案,内容如下:本改进和创新现有的网络进行单目深度估计的方法,使用边界引导和场景聚合网络(boundary-induced and scene-aggregated net‐work,BS-Net)[10],并在其基础上添加ED,修改SR,提出基于Sobel的边界引导和场景聚合网络(sobel-boundaryinduced and scene-aggregated network,SS-Net)。新的网络可以处理单帧图像,从而获得整个序列的深度估计。在深度估计网络,提出了边界提取模块。在网络中添加边界提取、深度相关模块提取易丢失图片的细节特征,来防止边界在向下采样过程中丢失过多的边界信息,使网络达到高准确性。最后,将改进的深度学习网络应用在SLAM系统中,通过实验来验证其精度,证明其有效性。
在接下来会详细地讲解基于深度估计网络SS-Net的SLAM系统的特性与功能,最后本文通过验证原网络与改进后的网络定位效果,来证明本系统的有效性。
本文所提出的基于深度估计网络SS-Net的SLAM系统,其整体设计思路是基于ORB-SLAM所构建,系统的框架为6部分构成,单目传感器模块、深度估计模块、前端视觉里程计模块、后端非线性优化模块、回环检测模块、建图模块。在ORB-SLAM中,前端视觉里程计和后端非线性优化模块合并至跟踪线程中,局部建图与回环检测模块与跟踪线程同时运行。
如图1所示,系统工作流程为:摄像头(单目传感器)将采集的环境信息传到系统;深度估计模块利用训练好的网络,利用深度学习的方式从RGB图中生成深度图,获取具体的深度信息;前端视觉里程计根据图片帧估计帧间相机运动,进而估计出相机的姿态[11],并采用三角测量法得到相关点的深度信息,并与深度估计模块的深度信息融合优化;后端优化模块会对系统计算得到的相机姿态和深度信息进行全局优化;建图模块会根据优化后的姿态和深度信息对周围环境进行三维重建,从而实现即时定位与建图的功能;与此同时闭环检测模块会不断地对输入图片进行检测,判断是否存在闭环。
图1 融合深度估计网络SS-Net的SLAM系统框架Fig.1 Framework of SLAM system integrating depth estimation network SS-Net
本文的基于深度估计网络的SLAM系统将分为两个部分在后续章节进行介绍,即SS-Net深度估计模块和ORB-SLAM系统。
有监督深度学习网络大多采用深度编码器-深度解码器(Encoder-Decoder)的基础结构,同样,本文的深度估计模块也采用了这样的基础结构。如图2所示,本文设计的网络采用了一种最新的深度预测网络BS-Net[10],BS-Net以基础的Encoder-Decoder框架和多层边界融合模块(bottom-up boundary fusion,BUBF)为基础,融合了深度相关模块(depth correlation encoder,DCE)和细化模块(stripe refinement,SR)。本文在此网络基础上,添加了边界提取模块(edge detection,ED)和新的细化模块(stripe refinement,SR),将原图像的边缘信息融入到输出中。
图2 深度估计模块(SS-Net)Fig.2 Depth estimation model(SS-Net)
多数的深度估计网络主要是解决两个问题[10],一是网络估计RBG图像中各物体之间相对深度的准确性低,二是网络得到的深度图物体的边缘细节准确性低。SS-Net中,DCE模块利用空洞卷积和金字塔场景编码器两个分支获得不同区域之间深度相关性。ED模块跳过Encoder-Decoder过程,直接获取边缘信息特征,传递到SR中;BUBF模块可以保存Encoder过程中网络细节特征不断丢失的问题,与ED模块优化边缘细节特征。SR融合所有模块输出。SS-Net保留了BS-Net对深度相关性估计的优势,同时提出ED模块跳过了传统网络中较长的下采样与上采样过程,使得预测的深度图边缘会有较好效果。
在以往的研究中[9,12-14],大多数深度预测网络均采用Encoder-Decoder的基础结构。本文选择用经典ResNet50网络作为Encoder。如图2所示,Encoder会分成Down 1~Down 5这5个阶段进行下采样。在过去的研究中[15],发现了空洞卷积能获得一个更大的感受野,被证明在网络中会保留更多的信息。因为,网络中加入池化层(Pooling)后往往会损失部分传递的信息。但不加Pooling会使感受野变小,而纯粹的扩大卷积核势必导致计算量的增大,因此使用空洞卷积,如图3所示。因此将Encoder中的Down4和Down5替换为空洞卷积。
图3 空洞卷积Fig.3 Dilated convolution
Decoder会放大Encoder和DCE的输出,利用所学习的特征来预测深度特征,同时减少信道数,生成分辨率更高的特征,结合其他模块最终生成最后的图片。如图2所示,Decoder会分成5个过程,Up1~Up5。Decoder的Up块是由上采样块和大卷积核强化块(large-kernel refinement blocks,L-RB)组成。L-RB部分在提升分辨率的同时,压缩了通道。如图4所示,L-RB有两个平行分支,第一个分支是由5×5 Conv和3×3 Conv构成。第二个分支是由5×5 Conv构成。这两个分支汇聚在一起后输出。
图4 L-RB结构图Fig.4 Framework of L-RB
Decoder将网络编码处理过特征重新放大并保留其预测的深度信息,并传递出来。
在以往的研究中[6,10],BUBF用于保存多层网络的边缘细节信息和深度信息,并传递到SR层。BUBF将Encoder中的Down2~Down5在每次下采样中深度变化信息以及高分辨率中存在的信息提取出来。BUBF可以提取深度的突然变化边界并移除深度的平滑变化的非边界像素。因为浅层网络特征富含边缘位置信息但缺乏深度信息和语义信息,深层网络特征富含深度信息和语义信息,所以这个模块是浅层输出和深层输出的互补。BUBF将浅层位置信息逐层传递到深层,融合相邻两层的特征以获得准确的边界。最终,将这些信息融合,为最后的SR提供输入。
整个模块由4部分组成,同时BUBF中加入了强化块(refinement block,RB),如图5所示。Encoder的所有输出都被RB强化。其次,为了对齐多层深度网络的特征,特征通过Up上采样为57×76×64的特征,并通过RB进一步强化。该操作中的Up模块与本文Decoder和文献[12]中的Up相同。紧接着,每个级别的输出与其相邻的深一级的网络相连接,用于后面更深的融合。依次类推,利用同样的方式融合了其他深度的网络。BUBF将从Down2到Down5的特征融合起来,使得深度边界被更精确地定位。
图5 BUBF结构图Fig.5 Framework of BUBF
BS-Net[10]创新性地提出DCE来感知整个图像中不同区域之间的深度相关性,即物体之间的相对深度,同时DCE估计最远的距离,把不同层次网络的多个特征进行相关性的融合,并为Decoder提供输入。
一方面,利用前四个分支来提取独立的像素之间的相关性,在此基础上建立不同独立像素之间的相对深度。另一方面,后四个分支(PSE)提取多尺度区域中的主要特征并将它们融合为一,从而获得不同区域之间的相关性。
Down5的输出是DCE输入,该模块通过8个平行分支捕获相关性,如图6所示。前三个分支都是3×3Conv,但扩张速率不同,最大速率的卷积核具有整个图像的视野感,而最小速率的卷积核仅覆盖整个图像的大约1/9。第四个分支为1×1Conv。这编码了输入图像的两个遥远区域之间的相关性。在这4个通道后,1×1Conv来整合不同通道的信息以及消除网格阴影。
图6 DCE结构图Fig.6 Framework of DCE
后面四个分支构建了金字塔场景编码器(pyramid scene encoder,PSE)[16],对不同深度网络区域之间的相关性进行编码,并通过考虑相关性来定位最远的区域。这4个分支分别对Down5输出Pooling操作,下采样成为4个大小,接着1×1Conv来融合每个通道的特征,并被上采样到29×38×512大小。由于pooling的操作,不同尺度区域的特征在不同区域中的主要特征会融合。网络的最后是3×3Conv。通过考虑不同尺度区域的深度信息及其相关性,PSE提取了区域之间的相对深度变化。最终,DCE的所有5个分支被连接,通过3×3Conv,融合了不同深度网络输出的特征的相关性,并且信道仍保持在2 048。文献[10]显示了BS-Net中的DCE的有效性。
为提升深度图物体边缘预测的准确性,本文提出边界提取模块(edge detection,ED),该模块将原图像中的物体边界信息保留,并经过卷积操作后,在SR与Decoder、BUBF的输出融合,如图2所示。
在过去的研究中[17],边缘是图像本质的特征,其包含了图像的绝大部分信息。利用边缘检测常检测出图片中反映了图像局部变化较大(突变)的地方,即图像中灰度变化比较剧烈的地方。边缘检测中算子有多种类型,常用的有Sobel算子、Canny算子等。图7中,Canny算子对边缘敏感,容易产生间断,使得整个边缘不连续,而Sobel算子对边缘不敏感,产生的边缘有强有弱,抗噪性强,同时计算量小。SLAM系统需要准确的深度图边缘信息,若网络生成的深度图参杂过多的噪点信息,ORB特征结合错误信息来建图,导致错误率高,会影响SLAM建图准确性。Sobel算子对噪声也具有很好的平滑作用,对物体边界检测有很好的效果,本文选择的是Sobel算子。
图7 不同算子处理的结果Fig.7 Results operated by different operators
Sobel算子是基于一阶微分的边缘检测方法,其检测方法有一定的特点,即按照特定的方向检测。Sobel算子常用的检测方向为45°方向、90°方向、180°方向、315°方向,这些算子如图8所示。
图8 不同方向的Sobel算子Fig.8 Sobel operators in different direction
与大多数的Sobel算子相似,本文所选用Sobel算子检测方向是90°与180°,这可以挑选出水平与垂直的边缘。使用多个方向的Sobel算子能够包含丰富的边缘细节信息,提供给网络更多可训练的特征,但算子较多会增加复杂程度,同时包含了过多的冗余信息,如:噪声点等。使用单个方向Sobel算子能减小算子的复杂度,但算子提供的信息会减少,无法提供更能准确可靠的信息。综合以上两点的考虑,选择用水平与垂直方向的算子作为本文的方案。
本文设计了ED模块,其结构图如图9所示。具体内容为整个模块主要由两部分组成,分别为检测算子(Detect-Operator)和基础操作部分(Base-Operator)。由于输入的图像为三通道,为保证每个通道的信息,首先,选择用detect-operator模块分别处理三层通道,并让这些产生不同通道的边缘。之后选择给每个分支首先会通过一个5×5 Conv的模块。然后,不同通道处理结束后,各个模块产生的特征会被融合在一起。Base-Operator会经过两个5×5 Conv,再经过一个5×5 Conv,并最终将通道扩展输出到128的维度,同时将特征分辨率缩至114×152。
图9 ED结构图Fig.9 Framework of ED
Detect-Operator提取浅层图像的边缘特征,并将特征传递下去,Base-Operator对边界特征进行提取与处理,得到准确的边缘信息,传递给下一层网络。相对于深度学习网络的不确定性,Detect-Operator的Sobel算子作为数字图像处理的成熟技术,可以提取准确的边界信息。因此,Base-Operator并没有搭建较深的网络结构,这样,丰富的边界特征会减少损失,并将更多有效准确特征传递给下一层网络。
ED利用Sobel算子来对图像中有用的边界信息提取处理,再进行卷积、归一化、激活等操作输出,如图2所示。ED会将最浅层的网络信息保留下来,并跳过容易丢失边界信息的Encoder和Decoder的网络,最终将特征输出到SR中。
本文提出一种新的细化模块(stripe refinement,SR),该模块将BUBF、ED和Decoder的输出融合,生成并强化高分辨率深度图。
BUBF的输出的特征大小为114×152×64,Decoder的输出的特征大小为114×152×64,而ED的输出的特征大小为114×152×128。首先,本文设计模块融合BUBF的输出特征与Decoder的输出特征;然后经过通道合并融合ED的输出特征。
如图10所示,SR网络框架由3部分组成。首先,SR利用两个条带卷积(stripe convolutions),分别为3×11和11×3的卷积核,在垂直和水平方向的大范围内聚集边界附近的像素。由于沿正交方向的全局上下文对指示相对深度有重要贡献,因此可以更好地识别对象及其背景之间的深度变化。本文没有像文献[6]利用三个5×5卷积来预测Decoder的最终深度图。因为小核卷积由于其有限的感受野而产生问题。它只聚集局部特征,使得深度预测中的局部混淆不可避免。同时,可能未能充分利用边界和全球背景特征。其次,采用3×3 Conv、BatchNorm和ReLU融合两个条带卷积提取的特征。第三,采用3个5×5 Conv来细化最终的深度图。为了更精确地预测深度图,5×5卷积之前的融合特征通过跳跃连接被传递到最后一个5×5的卷积。
图10 SR结构图Fig.10 Framework of SR
这种方法解决了Hu[6]的网络中5×5小卷积带来的两个问题:只在每个像素处聚集局部特征,使得深度预测中的局部混淆不可避免;未能充分利用边界和全局上下文特征。最终通过SR得到了预测的深度图。
本文使用了BS-Net中的损失函数。为了训练网络,训练数据中的地面真实深度图被表示为G,并且其对应的预测被表示为P。地面真实深度图中的每个像素被表示为gi∈G,并且pi∈P用于预测。
损失函数主要由三部分组成,像素深度差ldepth,梯度差lgrad,表面法线差lnormal。假设∇x()和∇y()表示像素在x和y方向上的空间梯度,地面真实深度图的表面法线及其预测深度图表示为npi=[ -∇x(pi),-∇y(pi),1]和=[ -∇x(gi),-∇y(gi),1]。那么这三个损失函数分别为:
其中,lfinal是总损失函数。由于边界周围的像素具有较大的深度梯度,梯度差lgrad会引导BUBF学习边界。
传统的视觉SLAM系统分为以下几个部分:传感器(sensor)、前端视觉里程计(visual odometry,VO)、后端非线性优化(optimization)、回环检测(loop closing)和建图(mapping)五个模块组成,ORB-SLAM系统包含三个并行运行的线程:跟踪线程(tracking)、局部建图线程(local mapping)和回环检测线程(loop closing)。与传统的系统架构一致,ORB-SLAM系统中跟踪线程包含了传统模块中传感器、前端视觉里程计和后端优化模块。
ORB-SLAM系统主要以摄像头作为传感器,用来感知周围环境的信息。如图11所示,整个系统的大致工作流程可以概括为:Tracking负责处理相机的每一帧,计算与提取ORB特征,并决定何时插入新的关键帧。系统执行与前一帧的初始特征匹配,并使用BA来优化姿态。一旦系统初始化相机姿态和特征匹配成功,就使用由的关键帧的相关图(covisibility graph)来持续计算。最后通过重投影来搜索与局部地图点的匹配,并且利用所有匹配来再次优化相机姿态。Local Mapping处理新的关键帧,并执行局部BA,以实现相机姿态周围的最佳重建。Loop Closing搜索每个新关键帧的循环。如果检测到一个循环,系统会计算一个相似性转换,告知循环中累积的漂移。然后循环的两边对齐,并融合重复的点。最后,对相似性约束进行姿态图优化,以实现全局一致性。
图11 ORB-SLAM系统框架Fig.11 ORB-SLAM system overview
跟踪线程。首先跟踪线程会提取ORB特征。特征是图像的一种数字化的表达形式,计算机视觉领域产生很多稳定的局部图像特征,如SIFT[18]、ORB[19]等。ORB的关键点对FAST角点[20]进行了改进,使特征点具有了旋转不变性和尺度不变性。ORB采用的描述子为BRIEF[21],这是一种二进制的描述子。在实际使用ORB特征进行特征匹配时,ORB保证了特征点具有旋转不变性和尺度不变性,而且速度非常快。接下来是地图与初始姿态估计。系统使用对极几何估计相机姿态。对极几何的代数表示被称为基础矩阵:pT2·F·p1=0。如果矩阵是满秩的,就可以通过解方程的方法求解得到矩阵F。之后,就可以得到相机姿态R和T。在实际使用时,得到的匹配点的数量有很多,但是有一些误匹配的情况存在,为了选取最好的匹配点对去求解准确的R和T,系统采用随机采样一致性算法(random sample consensus,RANSAC)[11]来消除特征误匹配所带来的误差。初始化成功后,跟踪线程开始跟踪当前地图并实时进行局部的建图模块。最后,跟踪线程可以实时决定当前帧是否可以成为关键帧。
局部建图线程。该线程会实现局部的地图构建。首先,局部建图会插入一个关键帧,更新相关图,然后,该线程会结合相近的关键帧生成的点进行验证,并进行筛选,去除不合格的地图点,接着产生新的地图点,使用局部BA优化,最后再对插入的关键帧进行筛选,去除多余的关键帧。
回环检测。这一部分主要分为两个过程,分别是闭环探测和闭环校正:闭环检测首先会检测其他帧的相关性,如果检测到相似性得分较高,就通过Sim3算法计算相似变换;闭环校正主要是将两段不连贯的地图融合在一起,同时,再进行整个地图的优化,沿着图形分布循环消除误差,以校正尺度漂移。
实验基础环境:本文实验的计算机基本硬件参数为AMD Ryzen7 3700X 8-Core Processor 3.60 GHz CPU,NVIDIA GeForce RTX 2080Ti 11 GB显 卡,16 GB内存。实验的计算机为Win10系统环境。基于该系统装有Anaconda、CUDA 11.1、Pytorch 1.7.1等深度学习类软件;基于此装有VMWare16虚拟机,并安装了Ubuntu16.04系统,在此基础上装有SLAM算法及测试相关软件。
使用由各种室内场景组成的NYUDepthV2数据集。NYU-Depth V2数据集是由具有RGB和Depth拍摄功能的Microsoft Kinect摄像机记录的各种室内场景的视频序列组成。NYU-Depth V2数据集总共有51 342对(共4 GB左右)的数据集组成,该数据集由284个不同场景组成。NYU-Depth V2数据集的RGB图与Depth图大小均为640×480,所带有的RGB图与Depth图是相互对齐的,每一幅RGB图可以对应一幅深度图。在以前的研究[5,13,22]中,NYU-Depth V2数据集是最广泛地用于单视角深度预测任务。
深度实验软件环境为Pytorch网络架构。采用ResNet-50作为基础网络,并在ILSVRC[23]上通过与训练模型进行初始化,ResNet原有的输出的分类成被移除。选择20个epoch训练本文的模型,并将batchsize设置为8。Adam优化器采用参数(β1,β2)=(0.9,0.999)。权重衰减(weight decay)为1×10-4。初始学习率(learn‐ing rate)设 为0.000 05,每5个epoch降 低 为 原 来 的10%。
继之前的工作[6-7]之后,考虑654对RGB-D图像集进行测试,5万对图像集进行训练。以与文献[6,10]相同的方式对训练图像进行数据增强。为了训练模型,使用双线性插值将所有图像和标签从原始尺寸640×480下采样到320×240像素,然后从中心部分裁剪到304×228像素。为了与网络输出保持一致,裁剪后的标签被下采样到152×114像素。此外,在测试过程中,网络的输出被上采样到304×228像素以评估模型。
NYUD v2数据集包括由微软Kinect摄像头捕获的12万对RGB和深度图,并被分成训练集(249个场景)和测试集(215个场景)。该数据集中的图像分辨率为640×480。
在本文的实验环境中,多次运行了原BS-Net[10]网络,其网络参数与文献[10]中一致。同时,也运行了本文提出的SS-Net,实验结果如表1。
表1中前三个参数越高表示网络的准确度越高,表格中后三个参数越低表示网络性能越好。由表1可得,网络在Delta=1.25,1.252时表现略好于BS-Net,同时在参数REL表现略好于原网络BS-Net。受限于硬件的性能,训练的batchsize最大只能为4,BS-Net提升不大,但整体来看,网络性能仍略好于BS-Net。
表1 本文实验环境下BS-Net与SS-Net实验结果Table 1 Experimental results of BS-Net and SS-Net in this article environment
同时,本文对该数据集进行了定量和定性分析,并与几种先进的方法进行了比较,如表2。表2中前三个参数越大证明网络性能越好,后三个参数越大表面网络误差越小,性能越好。由表2可得,比较多个网络的实验结果显示,相对于Resnet50这类浅层网络,更深层的网络往往有更好的表现,类似ResNet-101、SENet-154等网络。但更深层的网络结构所带有的参数更多,网络训练量更大,对硬件的要求高。本文因为硬件的限制,选择了网络结构较小的框架。
表2 各网络在NYUD v2图像集测试结果Table 2 Depth accuracy and error of different methods on NYUD v2 dataset
SS-Net获得的实验结果,比其中一些方法[5,22,27-29]有更好的精度,因为所提出的网络将DCE等模块的输出与各种核大小和扩展速率相结合,这有效地保留了全局深度布局的上下文信息。本文网络也并没有达到足够好,这受限于所用的硬件显卡设备,训练的batchsize为4。因此,尽量用较小的batchsize去拟合网络。同样,相比于在本文环境下的实验结果,BS-Net在文献[10]中表现更好,因为其训练环境的硬件设备更好,因此设计了表1的实验来证明本文网络效果是更好的。
SS-Net网络接近400层,整体参数较大,因此需要较高的存储与运行硬件实现,不利于一般设备的应用。但网络整体的实时性较高,SS-Net平均处理单张图片的时间为0.026 s,SLAM图片帧速率为25~30 frame/s,可以满足实时性的要求。
SS-Net网络能够考虑不同区域的相关性,并具有准确的不同区域深度预测能力。具体分析,对于大的、完整的物体,网络预测效果更好。图12(a)、12(b)中床和墙分别作为两个完整的物体估计深度,较小的物体(如:墙上的画、书架的书)能够作为完整的物体一部分预测其深度。网络可以预测墙与床之间的相对深度关系,床相对在前,而墙在后。图12(c)中走廊的效果也极佳,网络预测了左前方的柜子在更近的位置,走廊的尽头是更远的位置。这展示了本文网络深度预测的准确性。
图12 不同区域的深度预测效果Fig.12 Depth estimation results in different regions
SS-Net网络对于存在较多物体,背景复杂的场景,也有较准确的相对深度预测能力。图13中背景是一排书架,书架中有数量非常多的书籍,网络能够将多本书籍与书架作为同一深度的整体来预测深度。
图13 背景复杂的深度预测效果Fig.13 Depth estimation results in messy background
SS-Net网络可以准确边缘预测。具体的对较大、完整、与周围色差大的物体,网络效果更好。图14的深度预测图中的座椅边缘非常准确。而深度真值图中,桌子与座椅的边缘有非常多的噪点,与原图中差距较大。SS-Net所预测的深度图,桌子与座椅的边缘没有噪点,整个图片边缘非常干净。
图14 边缘预测效果Fig.14 Edge estimation results
本网络在嵌入整体的物体识别会存在一定问题,网络对过小物体也会存在问题。如图15(a)、(b)所示,墙面左侧分别有一幅较大的白板与海报,在真实的深度图15(a)、(b)中,墙面是一个完整的物体,深度是一个渐变过程。本文预测的图片,白板与海报作为一个单独物体去估计深度,整个图像的估计出现较大误差。实际上,海报与白板应该与墙面作为同一深度的物体进行预测。同样,图15(b)中桌上的小物体会被作为桌子的一个整体预测深度,较小的物体难以在细节上描述清楚。
图15 嵌入物体和较小物体图片预测效果Fig.15 Estimation results in embedded objects and small objects image
SS-Net对在嵌入整体的物体(或背景)识别会存在一定问题,使用时应尽量减少这类数据集的使用。数据集中存在多个小物体时,本网络预测结果不够理想。这类数据集不建议使用,特别在实际应用中,小物体起到关键作用。
SS-Net在Encoder模块下采样的过程,会把分辨率较高的图像压缩为29×38大小的分辨率,即使SS-Net使用了BUBF保存图像细节特征,但在不同深度逐渐提取特征的过程中,原始图像的细节仍会丢失,或者与周围其他物体融合。这些导致了在上采样过程中无法找到细节的源头,从而生成多个较小物体的整体。解决这类问题,可以考虑两类方法:减小下采样过程,压缩Encoder-Decoder的过程,不过,这样可能对不同区域深度的相关性有影响;或者改变Encoder输出,使其生成为较大分辨率图像,不过,这会带来更多的网络参数,对硬件提出了更高的要求。
深度预测网络的精确度是服务于定位实验,为验证能否更好提升SLAM定位精度,进行了下一个实验。
本文测试基于深度估计网络SS-Net的SLAM系统(以下简称本文系统)定位精度。使用VMWare16中的Ubuntu16虚拟机作为实验的环境,在虚拟机环境中搭建了ORB-SLAM中的环境,同时在虚拟机环境中安装了定位精度测试软件EVO。
在使用NYU Depth V2数据集测试网络后,本文使用了不同的数据集——TUM数据集。TUM数据集采集于不同的室内场景,TUM数据集有RGB图像数据与深度图像数据,可以给网络提供稳定的可靠的深度图训练。TUM大多用于SLAM系统的数据输入,定位精度的测试等,为提供训练的比较,TUM数据集提供了每一份数据集的定位真值(Groundtruth),可以为不同SLAM算法提供定位效果的参考。使用搭建好的虚拟机中EVO工具RPE进行相对姿位评估,可以给出局部精度,例如SLAM系统误差。
假定第i时刻,坐标的真值为xi(即Groundtruth中的值),通过SLAM系统计算出来的坐标值为xi,此时的误差为ei,所有时刻的平均误差为在该实验中,定位测试的参数有平均值误差(mean error,MEAN)、中值误差(median error,MEDIAN)、最 大 值 误 差(max error,MAX)、最小误差(min error,MIN)、均方根误差(RMSE)、和方差(sum of squares due to error,SSE)、标准差(standard deviation,STD),其计算方法为:
本文首先使用单目ORB-SLAM系统去实现定位,将其记录的定位结果与真值进行计算,其结果记录在下表中。其次,使用本文系统去实现定位,将其记录的定位结果与真值进行计算,其结果同样记录在表3中。综合以上的测试指标,实施了实验,从上面的指标中,获得实验结果,如表3所示。
本节所提供的指标均越小越好,由表3可以看出,本文方法的表现极好。本文系统的实验各项参数,最小误差提升了很大,即部分SLAM定位位置预测准确;最大误差减少了95%,平均误差与中值误差缩小了99%。同时,RMSE缩小了98.6%,SSE缩小了99.9%,STD缩小了97.7%。本文各项指标验证本文算法具有较高的精度和较好的稳定性。
表3 ORB-SLAM与本文系统性能对比Table 3 Performance comparison between proposed system and ORB-SLAM
图16展示了EVO评估工具对ORB-SLAM、本文系统的轨迹估计图,同时图中放入轨迹真值作为参考。本文系统与ORB-SLAM系统都能形成较为完整的闭环轨迹,两个系统在直线运动中与真值有较高的拟合度,但本文系统相比较于ORB-SLAM系统拟合效果更好,本文系统具有高的准确性。
图16 ORB-SLAM、本文系统与真值轨迹Fig.16 ORB-SLAM,proposed system and groundtruth trajectory
图17 展示了单位时间两系统的误差情况。图17(a)中展示了ORB-SLAM系统的误差,其单位时间误差上下浮动较大,同时,整个相机轨迹的偏移量与真值相比较大,偏差的最大值超过了0.02;图17(b)中展示了本文系统的误差,本文系统有较大的误差存在,但系统的误差整体偏差较小,整个系统的误差几乎都维持在一个较低水平,这同样证明本文系统的定位更加精确。
图17 单位时间两个系统的误差Fig.17 Error of two systems at different times
本文提出了基于深度估计网络SS-Net的SLAM系统。其主要是基于传统ORB-SLAM的系统、融合SSNet网络框架的系统。基于本文提出的用于深度估计的SS-Net,它考虑了不同区域的深度关系和边界在深度预测中的重要作用。为了更好地估计深度,在传统Encoder-Decoder和BUBF的网络结构中,引入了DCE模块,并提出了ED模块,改进了SR模块,这些模块能够考虑不同区域之间的深度相关性,提取重要的边缘,并融合不同层次下面的网络特征。在NYUD v2数据集上的大量实验表明,受限于硬件原因,本文的方法并不是最优秀的,但该方法仍实现了较好的预测性。最后,将TUM数据集应用在SLAM系统,结果表明采用SLAM系统可以极大改善ORB-SLAM的定位精度。