您好, 访客   登录/注册

融合空洞卷积神经网络的语义SLAM研究

来源:用户上传      作者:

  摘  要: 为了解决传统视觉SLAM算法受动态环境因素影响较大、对设备的算力要求高的问题,该文提出一种融合ORB?SLAM2、语义标签以及全局性稠密光流法的视觉SLAM算法。该方法采用空洞卷积神经网络的语义分割模块为双目图像添加语义标签,识别物体类别。再结合相邻帧间位置信息对图像的动态点进行剔除。最后使用Octo?map优化定位与建图,实现动态环境下地图的建立与实时更新。实验结果证明,该文提出的算法在动态环境下的特征点提取速度和质量相較传统视觉SLAM算法有一定提高。
  关键词: 语义SLAM; 空洞卷积神经网络; 语义标签; 动态点剔除; 地图构建; 结果分析
  中图分类号: TN911.73?34; TP301.6              文献标识码: A                     文章编号: 1004?373X(2020)22?0152?05
  Abstract: A visual SLAM algorithm fusing ORB?SLAM2, semantic label and global dense optical flow method is proposed to solve the problem that the traditional visual SLAM algorithm is greatly affected by dynamic environment factors and requires high computing power of equipment. In this method, the semantic segmentation module of dilated convolution neural network is used to add semantic tags to binocular images, so as to identify object categories. The dynamic points of the image are eliminated by combining the position information between adjacent frames. The octo?map is used to optimize location and map construction to realize the map establishment and real?time update under the dynamic environment. The experimental results show that, in combination with the traditional SLAM algorithm, the speed and quality of feature point extraction in dynamic environment are improved.
  Keywords: semantic SLAM; dilated convolutional neural network; semantic tag; dynamic points elimination; map construction; result analysis
  0  引  言
  移动设备在未知的环境中运动时,通常需要采用红外光、雷达等传感器获取周边环境的位置信息[1],估算自身的位置及姿态信息。然而,传统的地图构建方式完全依赖周边环境的几何特征,并不能充分地理解周边环境。这导致设备上的处理器需要对比图像上所有特征点的位移情况,消耗大量算力,限制了其对复杂任务的处理能力。因此,将获取的图像信息从像素级别上升到物体级别,已成为移动设备在现实场景下执行复杂任务的必要手段。
  为了解决以上问题,本文研究一种融合语义信息的SLAM算法。语义与SLAM看似独立,实则相辅相成。一方面,语义信息能够减少传统SLAM对图像特征的依赖,尤其在动态环境下,移动的物体会导致定位精度下降、误差累积、跟踪失败等问题。融入语义信息后,SLAM系统能够在物体层面判断动态物体的精确位置,提高建图和定位的精度;另一方面,借助SLAM技术,充分利用几何信息计算出的物体位置与轮廓信息也有助于提高语义分割的精度。
  本文使用的SLAM系统基于ORB?SLAM2[2]算法,该算法是基于关键帧的稀疏SLAM算法中性能较好的算法框架。系统首先使用MYNT?EYE双目摄像头实时获取图像,再利用ORB?SLAM2算法实现相机的位姿估计并筛选关键帧,同时,结合语义分割算法对获得的二维图像进行语义分割,最后使用光流法结合语义信息实现对动态点的剔除。
  本文提出的语义SLAM在ROS系统下通过5个线程实现,分别为跟踪、本地建图、回环检测、语义分割和Octo?map建图线程。线程之间采用ROS基于话题和服务的通信机制,将双目矫正图像作为输入,分别提供给本地建图线程和语义分割线程。其中,语义分割线程采用的神经网络基于ENet[3]网络结构,将深度信息作为门控信号,从而控制卷积核的大小,提高了目标检测的准确度;跟踪线程在负责跟踪并计算每一帧位姿的同时,通过获取相邻帧间的位姿变化忽略相机自身运动,实时检测关键帧中的动态对象,并将其动态点剔除;本地建图线程通过地图点匹配构建地图,将图像关键帧按时间顺序检测,可有效缩小漏检、误检对整体建图的影响;Octo?map[4]建图线程使用稠密八叉树地图算法,采用log?odds方法计算出叶子节点的占据概率,将八叉树按照占据概率进行渲染,更新并绘制出点云图像。系统运行流程如图1所示。   1  基于空洞卷积的语义分割算法
  1.1  语义分割线程
  经典ORB?SLAM2算法使用特征像素点匹配来获取相邻帧间物体的位置变化,然而匹配得到的像素点并没有实际意义且这种匹配方式过于依赖特征。若环境内有较大噪声,则匹配精度将无法保证。因此,若能将获取到的图像特征融入语义标签,将会降低特征点匹配消耗的算力并提高建图速度。
  本文提出的SLAM系统中融入了语义分割线程,用于加载网络模型及权重信息、输入原始图像并输出分割结果。具体来看,首先线程将待分割的图像进行预处理,调整其通道数及像素值并输入到神经网络中;其次,运行神经网络进行推理,得到不同类别语义标签的概率,在图像中划分并输出语义分割结果。
  1.2  语义分割算法
  用于SLAM系统的语义分割算法要求网络同时具有较高的分割精度及较快的处理速率,但在传统的语义分割算法中,这两者不可兼得。若希望获得较好的分割精度,则需要提取到丰富的图像特征,相对应地增加网络参量,扩大卷积核并保持较大的感受野,以学习到更有区分性的特征。若希望获得较快的运行速度,则需要降低网络的参量,减小卷积核的大小。综合考虑分割精度和速度,本文提出的算法选择了ENet作为基础算法,并在此基础上进行改进。
  ENet算法由较大的Encoder和较小的Decoder组成,Encoder主要进行信息处理和过滤,而Decoder主要是對Encoder的输出做上采样,对细节做细微调整。同时,由于ENet模型未引入bias值,减少了一部分的内核调用和存储操作,分割速度在相似性能的分割算法中也处于领先位置。
  Paszke A等提出在语义分割网络中,最初的网络层不应该直接分类,而应该作为很好的特征提取器并为网络后续部分的输入进行预处理,这样能够大大减少输入的尺寸,使冗余的视觉信息得到有效的压缩,能够降低计算资源的消耗[3]。本文提出的算法借鉴了这一思想,在data层后设计一个数据处理模块,降低图像中的冗余信息。
  1.3  基于深度信息的多尺度卷积门控
  二维图像中物体的大小与距摄像机的距离成反比,图像的深度信息有利于不同尺度物体的分割。Kong S等认为,在语义分割网络中融合深度信息能够提高物体尤其是远处物体的语义分割精度[5]。本文使用双目视觉模块通过双目立体匹配得到视差图,并利用视差和深度的关系,得到当前图像的深度。
  由于图像中远处的物体较大,近处的物体较小。因此,不同深度的图像应使用不同大小的卷积核进行卷积。然而,增大卷积核尺寸会使参数成倍增长,导致网络效率变低。本文使用空洞卷积对图像特征进行提取,在保证参数个数不变的同时,增大了卷积核的感受野,并保持输出的特征映射大小保持不变,使其在附近获取更多的上下文信息。感受野与空洞步长的关系如图2所示。
  为了提升语义分割模块的精确度,本文使用深度信息作为门控信号自适应地学习图像特征。
  1) 本文将深度信息根据距离远近分为5个等级,并生成一张包含深度等级信息的掩模图像;
  2) 采用不同空洞步长的卷积核,对图像进行卷积,得到5张相同尺寸的图像;
  3) 使用深度信息作为门控信号,按照深度掩模图像中每个像素点的深度信息,将5张图像进行叠加,得到其适应深度信息的图像,继续后续卷积操作。
  2  动态点删除
  传统SLAM算法的假设环境是静态或低动态的,但在实际应用环境中,无论是地图中的物体还是无人设备本身,都处在无规则的运动当中。因此动态物体检测的准确性将会影响建图的实际效果,如果发生漏检、误检情况,将会导致两个相邻关键帧的特征点匹配存在差异,破坏SLAM系统的稳定性。因此,从二维图像中识别出动态对象,并在构建语义地图之前丢弃它们是必要的。
  语义分割模块负责预测物体类别,并在图像相应像素点位置标记类别标签,在跟踪线程遍历二维图像后,标记出疑似动态物体在二维图像上的位置信息。然而,语义分割网络可识别的种类有限,且精确度在不同的训练集上略有差异,动态物体检测不能过分依赖于语义分割检测出的动态物体。为解决这一问题,本文使用三帧差分法和光流法检测动态物体的运行轨迹,并结合语义分割模块得到的动态对象特征点信息,实现对动态对象的有效判断与处理。
  2.1  三帧差分法
  三帧差分法[6]是通过相邻三帧图像利用运动目标的位置差异做差分运算,并对结果做阈值化处理得到运动目标区域的方法。选取图像序列连续的3帧图像,分别为[fk-1(x,y)],[fk(x,y)], [fk+1(x,y)] ,相邻2帧图像的差值为:
  2.2  LK光流法
  本文提出的SLAM系统早期采用LK光流法。Yu C等提出的LK光流法首先在跟踪线程提取ORB特征点,粗略地检查特征点的移动情况,并保存潜在异常值,再通过语义分割线程对关键帧做语义分割,使用异常值拒绝方法,结合语义分割和移动一致性检查方法过滤掉动态对象,将位于移动物体上的ORB特征点潜在的异常值剔除[7]。
  然而,LK光流法在追踪运动速度较快的小目标时,出现了跟踪丢失的情况,尤其是面对远处的车辆时,丢失效果较为严重。造成这种现象的原因是图像经过多次下采样,会使小目标丢失特征,且只是对某些特征点进行光流计算,有一定的局限性,无法达到运动检测要求。
  2.3  全局稠密性光流法
  考虑到全局性稠密光流法能够较好地提取出运动物体的轨迹,且定位动态物体较为准确。本文提出的SLAM系统结合了基于梯度的全局性稠密光流算法,通过图像金字塔匹配方法,计算图像上所有点的光流,并将其与已设定的光流动静点阈值作比较,若大于阈值,则判断其移动,并将图像掩模置0,用于后续动态点处理。   为消除相机本身的移动对建图的影响,该算法通过单应矩阵表示相邻关键帧之间的相关性,以获取上一帧与当前帧间的对应关系及运动信息。单应矩阵能够将射影平面上的点映射到另一射影平面上,设[p1x1,y1],[p2x2,y2]为相邻2帧上的图像点匹配的点对,其单应矩阵为H,则有[p2=Hp1],即:
  3  Octo?map建图
  由于点云地图规模很大,需要大量的存储空间,且在位姿出现误差时,会导致地图出现明显的重叠。Sengupta S等将Octo?map地图嵌入到分层鲁棒性的马尔可夫随机场,为带有语义标签的地图提供体素[8]。通过以上操作,Octo?map地图能够压缩点云信息,并以八叉树的形式存储并更新地图。
  八叉树是一种用于表述三维空间并具有8个子节点的树状数据结构,每个子节点代表其被占据的概率[9]。随着不同关键帧的变化,每个子节点的概率也会发生改变,已知在[t=1,2,…,T]时刻,每个子节点的观测值为[z1:T],则第n个叶子节点的概率公式为:
  基于八叉树结构存储的Octo?map地图具有占用空间小、更新地图方便,且分辨率可调的特点,尤其适合无人机等边缘计算设备搭载的视觉SLAM系统。
  本文提出的SLAM系统将视觉模块获取的矫正图像作为输入,筛选出关键帧信息,并将其输入到语义分割线程处理,将八叉树的每个体素都关联特定颜色,每种颜色代表一种语义标签,把相机坐标系下的点云信息转换成世界坐标系下的点云坐标,生成融合了语义标签与点云信息的语义地图。
  4  实验结果与分析
  本文实验平台硬件配置为NVIDIA TITAN RTX型号的GPU,测试系统为Ubuntu 16.04。SLAM部分采用CityScapes数据集(leftimg 8 bit和rightimg 8 bit组合形成双目)及小觅双目视觉模块进行建图测试。语义分割网络采用CityScapes数据集进行对比验证。
  4.1  语义分割模块驗证
  本文设计的SLAM系统将双目视觉模块立体匹配得到的视差图作为输入,获取深度信息。语义分割线程选择其中关键帧中的深度信息,控制空洞卷积中空洞的大小,自适应地调整神经网络卷积过程中的感受野,提升特征提取效果。考虑到本文提出的语义SLAM系统的实际运用场景为街景,因此采用 CityScapes数据集进行效果验证。作为目前街景领域最权威的数据集之一,以场景复杂多变、分割难度大著称,能够较好地体现算法在实际应用环境下的性能。图3为传统ENet网络与本文提出的网络在CityScapes数据集上的分割效果对比,自上而下依次为输入图像、本文算法的效果、传统ENet分割效果。由图3可以看出,相比原ENet网络近处分割较为精细,远处的物体分割粗略,融合深度信息的改进方法使其分割效果更关注远处物体。表1为SegNet网络、ENet网络以及本文方法在CityScapes数据集下运行的准确率,本文方法在深度信息的引入下,相较于原有的ENet算法,分割效果提升1%。
  4.2  动态物体剔除模块验证
  本文提出的语义SLAM系统通过结合全局性稠密光流法对动态物体位置进行判断,提高了动态物体位置的检测精度,并能够精确有效地消除动态噪声,从而构建了相对稳定的语义地图,提高了系统的鲁棒性。
  4.3  Octo?map建图模块验证
  在ROS系统下,整体运行系统,使用Octo?map模块建立结合语义后的SLAM地图,等待地图建立后,利用Rviz可视化工具显示地图,建图效果如图5所示。
  5  结  语
  本文的主要工作是在传统双目ORB?SLAM2算法的基础上,融合基于卷积神经网络的语义分割[10]算法,对移动设备所处的环境构建语义地图。与其他语义地图构建方法相比,本文提出的算法引入图像深度信息作为多尺度空洞卷积网络的门控信号,对分割算法进行改进,得到了更适合移植到嵌入式设备上的语义分割方法。实验结果证明,该网络在街景环境下能够获得较好的分割效果。此外,在SLAM算法中加入了全局性稠密光流法,将动态环境中动态点剔除,减少了动态物体对相机姿态估计的影响,并实现了构建地图的优化,提高了动态场景下系统建图的鲁棒性。
  参考文献
  [1] 潘思宇.基于背负式多激光系统的室内二维与三维构图[D].厦门:厦门大学,2016.
  [2] MUR?ARTAL R, TARDOS J D. ORB?SLAM2: An open?source SLAM system for monocular, stereo, and RGB?D cameras [J]. IEEE transactions on robotics, 2017, 33(5): 1255?1262.
  [3] PASZKE A, CHAURASIA A, KIM S, et al. Enet: a deep neural network architecture for real?time semantic segmentation [J]. Computer vision and pattern recognition, 2016(2): 174.
  [4] HORNUNG A, WURM K M, BENNEWITZ M, et al. OctoMap: an efficient probabilistic 3D mapping framework based on octrees [J]. Autonomous robots, 2013, 34(3): 189?206.
  [5] KONG S, FOWLKES C C. Recurrent scene parsing with perspective understanding in the loop [C]// Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018: 956?965.
  [6] 袁国武,陈志强,龚健,等.一种结合光流法与三帧差分法的运动目标检测算法[J].小型微型计算机系统,2013,34(3):668?671.
  [7] YU C, LIU Z, LIU X J, et al. DS?SLAM: A semantic visual SLAM towards dynamic environments [C]// 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems. Madrid: IEEE, 2018: 1168?1174.
  [8] SENGUPTA S, STURGESS P. Semantic octree: unifying recognition, reconstruction and representation via an octree constrained higher order MRF [C]// 2015 IEEE International Conference on Robotics and Automation. Seattle: IEEE, 2015: 1874?1879.
  [9] MAIER D, HORNUNG A, BENNEWITZ M. Real?time navigation in 3D environments based on depth camera data [C]// 2012 12th IEEE?RAS International Conference on Humanoid Robots. Osaka: IEEE, 2012: 692?697.
  [10] 白云汉.基于SLAM 算法和深度神经网络的语义地图构建研究[J].计算机应用与软件,2018,35(1):183?190.
转载注明来源:https://www.xzbu.com/8/view-15363500.htm