基于深度学习的语义地图构建

2023-08-21 10:51刘修颀徐宏宇
现代信息科技 2023年12期

刘修颀 徐宏宇

摘  要:同步定位与建图(SLAM)是移动机器人在复杂环境下进行环境感知的重要手段。针对传统的SLAM算法缺乏语义信息的问题,文章使用基于深度学习的语义分割算法,利用轻量化的DeepLabV3+模型在动态环境下进行实时语义分割,得到二维语义标签。通过VINS-Mono算法推测相机位姿,同时结合深度数据、语义信息生成三维语义点云,并将点云转化成八叉树地图进行表示。实验结果表明,文章提出的算法可以满足实时情况下构建语义地图的要求。

关键词:SLAM;VINS-Mono;语义分割;语义地图

中图分类号:TP242  文献标识码:A  文章编号:2096-4706(2023)12-0085-05

Semantic Map Construction Based on Deep Learning

LIU Xiuqi, XU Hongyu

(School of Electronic Information Engineering, Shenyang Aerospace University, Shenyang  110136, China)

Abstract: Simultaneous Localization and Mapping (SLAM) is an important means for mobile robots to perceive the environment in complex environments. Aiming at the problem that traditional SLAM algorithm lacks semantic information, this paper uses a semantic segmentation algorithm based on deep learning, and uses a lightweight DeepLabV3+ model to perform real-time semantic segmentation in a dynamic environment to obtain two-dimensional semantic tags. The camera pose is inferred through the VINS-Mono algorithm, and the 3D semantic point cloud is generated by combining the depth data and semantic information. The point cloud is converted into an octree map for representation. The experimental results show that the algorithm proposed in this paper can meet the requirements of building semantic maps in real time.

Keywords: SLAM; VINS-Mono; semantic segmentation; semantic map

0  引  言

在现代移动机器人研究中,SLAM(Simultaneous Localization And Mapping)指移动机器人通过搭载多种传感器(如摄像头、惯性测量单元IMU、激光雷达等)在环境中进行自身定位并对周边环境进行建图的技术。视觉SLAM框架以相机(单目、双目、RGBD等)为主要外部传感器,同时搭配其他传感器,如IMU等进行信息融合,以达到较好的效果。伴随移动机器人技术的不断发展,对机器人感知环境能力的要求也不断提高,但传统SLAM算法只包括点、线等几何信息,在机器人完成复杂任务时,无法提供对周边环境更高层次的理解。因此在SLAM中为机器人增加语义理解能力是提高机器人智能化水平的重要步骤。

随着机器学习的不断发展,人们开始使用机器学习来解决语义信息的问题。语义分割是指把图像中各个像素所属类别标注在图像上。在早期的研究中,人们通过全卷积神经网络(Fully Convolutional Networks, FCN)[1]实现了语义分割任务,但FCN缺少对像素与像素之间关系的考虑,效果和实时性较差;随后人们又提出了编码器-解码器结构(encoder-decoder),其中encoder主要负责特征提取,decoder负责将图像还原回原始分辨率。其中经典的语义分割模型U-Net[2]利用编解码结构实现了对医学细胞的分割。在SLAM算法中引入语义分割时,由于SLAM经常部署在移动端,并且在实时性上也有一定的要求,所以对使用的语义分割模型要保证计算速度并且限制模型的大小。所以本文使用MobileNetV2对DeepLabV3+模型进行轻量化,限制了模型的大小,又保证了语义分割的精度。

近年來,SLAM领域涌现出了许多优秀的算法,有许多研究将语义信息融入到了传统SLAM算法中。2015年有学者将全卷积网络(FCN)与ORB-SLAM2结合起来[3],实现语义建图。随后Yu等人提出了DS-SLAM算法进行语义地图构建[4],在语义分割部分采用了SegNet,减少了动态物体对位姿的影响,提升了动态环境中的鲁棒性,但由于SegNet部分参数的冗余,导致实时性不足。

本文在经典SLAM算法VINS-Mono的基础上,结合语义分割算法DeepLabV3+,并使用轻量级网络MobileNetV2作为DeepLabV3+的主干特征提取网络,提升了语义分割的实时性。最终将语义信息和位姿信息进行融合,实现了语义地图的构建。

1  语义SLAM框架

语义SLAM框架如图1所示,其中传感器负责采集彩色RGB图、深度图以及IMU数据;然后将RGB图、IMU数据送入到视觉-惯性SLAM模块中,得到不断更新的相机位姿;同时将RGB图输入到语义分割模型中,得到二维语义标签,并从该图像对应的深度图获取深度数据,生成语义点云。结合相机位姿,将点云地图转换成表达方式更加灵活、便于实时更新的八叉树地图,利于后期导航和避障的使用。

1.1  视觉-惯性SLAM算法

现代的视觉SLAM算法主要包括传感器信息获取、视觉里程计、后端优化、回环检测、建图五个部分。视觉里程计接收传感器数据,要完成的任务包括特征提取,初始化,特征跟踪,帧间运动估计,确定位姿信息,构建局部地图等,又被称为前端。后端接收前端视觉里程计的位姿信息,并且综合回环检测的结果,进行轨迹优化,得到全局一致的轨迹和地图。回环检测主要依靠图像间的相似性来判断是否出现回环,从而减少累计误差。最后描绘出运动轨迹并按照任务要求进行建图[5]。视觉-惯性SLAM算法则是在视觉SLAM算法的基础上将IMU数据和相机数据进行融合,相较于单一的VO(视觉里程计)系统,提高了系统的鲁棒性,一方面通过视觉算法减少IMU的积分漂移,另一方面解决了视觉SLAM在特征少、运动快的环境下定位困难的问题,并有效解决了单目相机的尺度不可觀测问题。

VINS-Mono算法[6]是一种利用图优化的紧耦合VIO(视觉惯性里程计)算法,VINS算法框架如图2所示。

由图2可见,VINS-Mono一共分为四个部分:1)在预处理部分使用FAST算法采集Harris角点作为特征,采用金字塔光流法对特征点进行跟踪,同时采用去除畸变和均匀化等操作,得到合适的特征点;又因为IMU的测量频率高于图像频率,所以对IMU数据进行中值预积分,避免每次更新姿态进行重复积分,最终得到两个关键帧之间的相对位姿,同时根据误差状态传播方程计算预积分残差的协方差矩阵,以及预积分结果对各自的变量雅各比矩阵[7]。2)在初始化部分,利用SFM(structure from motion)求解出不具有尺度信息的相机位姿以及特征点的三维坐标。然后再通过视觉惯性联合初始化,计算出陀螺仪的偏置和绝对尺度,其中由于重力加速度远大于其加速度的偏置,而且在初始化阶段很难计算加速度计的偏置,所以在初始化阶段忽略了加速度计的偏置。3)使用紧耦合结构的非线性优化模型,利用滑动窗口,对窗口内的关键帧以及预积分值进行联合优化。4)在回环检测与重定位部分,采用DBoW2回环检测算法,当相似度超过一定阈值时,将该候选帧视为正确的循环检测并执行紧耦合重定位。

1.2  语义分割模型

语义分割部分的主要工作是对给定的图像进行像素级的分割处理,将图像的高级语义信息分配给每一个像素,作为类别标签。目前,高精度的语义分割网络大多采用Encoder-Decoder架构,其中Encoder用于编码有用的信息,Decoder再进行解码。为了确保语义分割的精度,Encoder就需要有较好的特征提取效果,所以大多数网络在编码器部分会将网络设计的较深。当网络层数升高,参数量增大时,会导致计算量增加,从而减慢了对一张图片的处理速度。所以在语义建图的算法中,如何均衡语义分割模型的准确度与模型的大小就成了重中之重。

DeepLabV3+网络在语义分割任务中取得了很好的效果[8]。DeepLabV3+为了解决DeepLabV3存在的边界细节缺失问题,在原有的DeepLabV3的基础上引入了简单的解码模块,形成了一种新的Encoder-Decoder结构,增强了边缘分割的效果。在Encoder部分,使用DeepLabV3的结构进行特征提取,将主干特征提取网络得到的初步特征,通过空洞空间卷积池化金字塔模块(ASPP)对输入进行不同采样率的空洞卷积并行采样,提取多尺度的语义信息,扩大了模型的感受野。在Decoder部分,将低层次特征图与上采样后高层次的特征图进行特征融合,使得网络同时具备细节特征和语义特征。本文所采用的DeepLabV3+是将原本的主干特征提取网络替换成轻量级网络MobileNetV2,有效地减少了模型的参数,具体流程如图3所示。

本文选用的主干特征提取网络是MobileNetV2[9],其主要采用深度可分离卷积,线性瓶颈(Linear Bottlenecks)以及倒残差(Inverted Residuals)结构。深度可分离卷积将标准的卷积操作分成了深度卷积和逐点卷积,减少了模型参数,降低了运算量。倒残差结构与Resnet的残差结构正好相反,倒残差先使用1×1的卷积进行升维,然后进行特征提取,再使用1×1的卷积进行降维,使得网络能在高维度空间中提取更多的信息。瓶颈结构是指将高维空间映射到低维空间,缩减通道数。而线性瓶颈就是将倒残差结构中的降维操作采用线性激活的方式,而不使用ReLU激活,避免了ReLU函数对低维空间的信息进行破坏。

1.3  八叉树地图

根据语义图像相对应的深度图,结合相应的位姿,求解出图片中每个像素对应的世界坐标,构建出三维语义点云,其中三维点云数据中的每个点都包含了坐标信息(x、y、z)以及颜色信息,其中的颜色信息来自于语义图的投影。但语义点云占据的存储空间较大,并且不适合后期进行导航或避障等操作,所以一般会将点云转化成八叉树地图Octomap[10],易于地图的更新和后续的处理。

在八叉树中用概率形式表达某个节点是否被占据。我们假设节点为n,观测数据为z,用概率对数的形式去表达t时刻某个节点的概率,如式(1)所示:

其中, 代表从开始到t时刻某节点的概率对数值, 代表从开始到t-1时刻某节点的概率对数值, 代表t时刻节点n的概率对数值。采用概率的对数值进行计算的原因在于,假如x代表某个节点是否被占据的概率,如果让x不断地增加或者减少,x就会超过[0,1]区间,就不再满足概率的要求,所以对x采用logit变换,将其转化成概率对数值,当概率对数值在-∞到+∞变化时,其概率值x仍在[0,1]之间。

2  实验与分析

本次实验使用标定过的RGBD相机IntelRealsenseD435i进行实验,图像分辨率为640×480,实验的硬件配置采用IntelCore i7-11700K CPU、内存为32 GB、RTX 3060 Ti显卡,同时结合ROS开发环境,在真实环境下进行测试。

2.1  语义分割网络测试

使用开源数据集VOC2012对基于MobileNetV2的DeepLabV3+进行训练和测试,其中的类别包括人,显示屏,椅子等总计20个类别。第一个评估标准采用语义分割普遍通用的区域交并比IoU[11]。IoU的计算主要是利用真实值的区域和预测值区域的交集比上真实值的区域和预测值区域的并集。在语义分割中,为了得到全局评价,一般将所有类的IoU相加取平均得到平均交并比MIoU,计算如式(2)所示:

其中k代表分割类别,i代表真实值,j代表预测值,pij代表将i预测为j,pji将j预测为i,pii代表将i预测为i。第二个评估标准采用模型参数量,模型参数量可以代表模型的空间复杂度。第三个评估标准采用每秒传输帧数(fps)用于衡量实时性。

由表1可见,使用MobileNetV2轻量化的DeepLabV3+模型在效果上相较于原版DeepLabV3+略微下降,但参数量只相当于原版的10%,二者的分割效果如图4所示。

左图是对室内环境视频中一帧的截取,中间图是使用MobileNetV2轻量化后的DeepLabV3+语义分割结果,右图是原版DeepLabV3+的语义分割结果。综合实验可以看出,轻量化后的DeepLabV3+的語义分割速度较快,同时在分割效果上两者并没有太大区别,原图像中椅子所占大小与语义分割后的大小相近,可见MobileNetV2轻量化后的DeepLabV3+在分割效果相似的情况下,实时性更好。

2.2  语义点云测试

本实验将语义分割后的语义图结合对应的深度图,根据点的空间位置和像素坐标之间的关系,如式(3)所示:

其中s代表深度数据与实际距离的比例,u,v代表像素坐标系下的像素坐标,x,y,z代表世界坐标系下的空间坐标,C代表相机的内参矩阵,R代表旋转矩阵,t代表位移矢量。根据上述公式,进行三维投影生成语义点云,如图5所示。

其中,左边的三幅图从上到下分别为相机输入的原始图像,语义分割图像,深度相机采集的深度图像。右边的图像是根据语义图像和对应的深度图像进行三维投影生成的点云图。

2.3  Octomap建图

在ROS环境下,使用Octomap模块将语义点云图和位姿信息结合,将点云动态转化为语义八叉树地图,在Rviz中进行显示,结果如图6所示。

3  结  论

针对传统SLAM算法构建地图时缺乏语义信息的问题,本文在VIO算法VINS-Mono的基础上,结合了效果较好的语义分割网络DeepLabV3+构建语义地图,但由于模型对SLAM算法的实时性产生了较大影响,所以采用MobileNetV2作为DeepLabV3+的主干特征提取网络,完成模型轻量化,减少参数量,加快语义分割速度,实现在移动环境下,构建语义八叉树地图。实验表明,轻量化后的DeepLabV3+结合VINS-Mono算法,可以进行实时三维语义地图的构建。

参考文献:

[1] EVAN S,JONATHAN L,TREVOR D. Fully convolutional networks for semantic segmentation [J].IEEE Trans Pattern Anal Mach Intell,2017,39(4):640-651.

[2] RONNAEBERGER O,FISCHER P,BROX T. U-Net:Convolutional Networks for Biomedical Image Segmentation [C]//Lecture Notes in Computer Science. Cham:Springer International Publishing,2015:234-241.

[3] VINEET B,MIKSIK O,LIDEGAARD M,et al. Incremental dense semantic stereo fusion for large-scale semantic scene reconstruction [C]//2015 IEEE International Conference on Robotics and Automation (ICRA).Seattle:IEEE,2015:75-82.

[4] YU C,LIU Z,LIU X,et al. DS-SLAM:A Semantic Visual SLAM towards Dynamic Environments [C]//2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).Madrid:IEEE,2018:1168-1174.

[5] 李小倩,何伟,朱世强,等.基于环境语义信息的同步定位与地图构建方法综述 [J].工程科学学报,2021,43(6):754-767.

[6] QIN T,LI P,SHEN S.Vins-mono:a robust and versatile monocular visual-inertial state estimator [J].IEEE Transactions on Robotics,2018,34(4):1004-1020.

[7] 曾超,郑茜颖,程树英.基于VINS-Mono的室内机器人定位系统 [J].传感器与微系统,2022,41(11):85-88.

[8] CHEN L C,ZHU Y,PAPANDREOU G,et al. Encoder-decoder with atrous separable convolution for semantic image segmentation [C]//Proceedings of the European conference on computer vision (ECCV). Springer,2018:801-818.

[9] 丁万坤,周作建,李红岩,等.基于MobileNetV2优化的DeeplabV3+目像分割方法研究 [J].中医药信息,2022,39(1):1-5.

[10] 席志红,韩双全,王洪旭.基于语义分割的室内动态场景同步定位与语义建图 [J].计算机应用,2019,39(10):2847-2851.

[11] 宋鑫,张荣芬,刘宇红.集成RGB-D语义分割网络的室内语义地图构建 [J].计算机应用研究,2022,39(11):3481-3486.

作者简介:刘修颀(1997—),男,汉族,黑龙江大庆人,硕士研究生在读,研究方向:信息获取与处理;徐宏宇(1965—),男,汉族,辽宁沈阳人,副教授,本科,研究方向:信息获取与处理。