劉修頎 徐宏宇
摘? 要:同步定位與建圖(SLAM)是移動機(jī)器人在復(fù)雜環(huán)境下進(jìn)行環(huán)境感知的重要手段。針對傳統(tǒng)的SLAM算法缺乏語義信息的問題,文章使用基于深度學(xué)習(xí)的語義分割算法,利用輕量化的DeepLabV3+模型在動態(tài)環(huán)境下進(jìn)行實(shí)時語義分割,得到二維語義標(biāo)簽。通過VINS-Mono算法推測相機(jī)位姿,同時結(jié)合深度數(shù)據(jù)、語義信息生成三維語義點(diǎn)云,并將點(diǎn)云轉(zhuǎn)化成八叉樹地圖進(jìn)行表示。實(shí)驗(yàn)結(jié)果表明,文章提出的算法可以滿足實(shí)時情況下構(gòu)建語義地圖的要求。
關(guān)鍵詞:SLAM;VINS-Mono;語義分割;語義地圖
中圖分類號:TP242? 文獻(xiàn)標(biāo)識碼: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? 引? 言
在現(xiàn)代移動機(jī)器人研究中,SLAM(Simultaneous Localization And Mapping)指移動機(jī)器人通過搭載多種傳感器(如攝像頭、慣性測量單元IMU、激光雷達(dá)等)在環(huán)境中進(jìn)行自身定位并對周邊環(huán)境進(jìn)行建圖的技術(shù)。視覺SLAM框架以相機(jī)(單目、雙目、RGBD等)為主要外部傳感器,同時搭配其他傳感器,如IMU等進(jìn)行信息融合,以達(dá)到較好的效果。伴隨移動機(jī)器人技術(shù)的不斷發(fā)展,對機(jī)器人感知環(huán)境能力的要求也不斷提高,但傳統(tǒng)SLAM算法只包括點(diǎn)、線等幾何信息,在機(jī)器人完成復(fù)雜任務(wù)時,無法提供對周邊環(huán)境更高層次的理解。因此在SLAM中為機(jī)器人增加語義理解能力是提高機(jī)器人智能化水平的重要步驟。
隨著機(jī)器學(xué)習(xí)的不斷發(fā)展,人們開始使用機(jī)器學(xué)習(xí)來解決語義信息的問題。語義分割是指把圖像中各個像素所屬類別標(biāo)注在圖像上。在早期的研究中,人們通過全卷積神經(jīng)網(wǎng)絡(luò)(Fully Convolutional Networks, FCN)[1]實(shí)現(xiàn)了語義分割任務(wù),但FCN缺少對像素與像素之間關(guān)系的考慮,效果和實(shí)時性較差;隨后人們又提出了編碼器-解碼器結(jié)構(gòu)(encoder-decoder),其中encoder主要負(fù)責(zé)特征提取,decoder負(fù)責(zé)將圖像還原回原始分辨率。其中經(jīng)典的語義分割模型U-Net[2]利用編解碼結(jié)構(gòu)實(shí)現(xiàn)了對醫(yī)學(xué)細(xì)胞的分割。在SLAM算法中引入語義分割時,由于SLAM經(jīng)常部署在移動端,并且在實(shí)時性上也有一定的要求,所以對使用的語義分割模型要保證計(jì)算速度并且限制模型的大小。所以本文使用MobileNetV2對DeepLabV3+模型進(jìn)行輕量化,限制了模型的大小,又保證了語義分割的精度。
近年來,SLAM領(lǐng)域涌現(xiàn)出了許多優(yōu)秀的算法,有許多研究將語義信息融入到了傳統(tǒng)SLAM算法中。2015年有學(xué)者將全卷積網(wǎng)絡(luò)(FCN)與ORB-SLAM2結(jié)合起來[3],實(shí)現(xiàn)語義建圖。隨后Yu等人提出了DS-SLAM算法進(jìn)行語義地圖構(gòu)建[4],在語義分割部分采用了SegNet,減少了動態(tài)物體對位姿的影響,提升了動態(tài)環(huán)境中的魯棒性,但由于SegNet部分參數(shù)的冗余,導(dǎo)致實(shí)時性不足。
本文在經(jīng)典SLAM算法VINS-Mono的基礎(chǔ)上,結(jié)合語義分割算法DeepLabV3+,并使用輕量級網(wǎng)絡(luò)MobileNetV2作為DeepLabV3+的主干特征提取網(wǎng)絡(luò),提升了語義分割的實(shí)時性。最終將語義信息和位姿信息進(jìn)行融合,實(shí)現(xiàn)了語義地圖的構(gòu)建。
1? 語義SLAM框架
語義SLAM框架如圖1所示,其中傳感器負(fù)責(zé)采集彩色RGB圖、深度圖以及IMU數(shù)據(jù);然后將RGB圖、IMU數(shù)據(jù)送入到視覺-慣性SLAM模塊中,得到不斷更新的相機(jī)位姿;同時將RGB圖輸入到語義分割模型中,得到二維語義標(biāo)簽,并從該圖像對應(yīng)的深度圖獲取深度數(shù)據(jù),生成語義點(diǎn)云。結(jié)合相機(jī)位姿,將點(diǎn)云地圖轉(zhuǎn)換成表達(dá)方式更加靈活、便于實(shí)時更新的八叉樹地圖,利于后期導(dǎo)航和避障的使用。
1.1? 視覺-慣性SLAM算法
現(xiàn)代的視覺SLAM算法主要包括傳感器信息獲取、視覺里程計(jì)、后端優(yōu)化、回環(huán)檢測、建圖五個部分。視覺里程計(jì)接收傳感器數(shù)據(jù),要完成的任務(wù)包括特征提取,初始化,特征跟蹤,幀間運(yùn)動估計(jì),確定位姿信息,構(gòu)建局部地圖等,又被稱為前端。后端接收前端視覺里程計(jì)的位姿信息,并且綜合回環(huán)檢測的結(jié)果,進(jìn)行軌跡優(yōu)化,得到全局一致的軌跡和地圖?;丨h(huán)檢測主要依靠圖像間的相似性來判斷是否出現(xiàn)回環(huán),從而減少累計(jì)誤差。最后描繪出運(yùn)動軌跡并按照任務(wù)要求進(jìn)行建圖[5]。視覺-慣性SLAM算法則是在視覺SLAM算法的基礎(chǔ)上將IMU數(shù)據(jù)和相機(jī)數(shù)據(jù)進(jìn)行融合,相較于單一的VO(視覺里程計(jì))系統(tǒng),提高了系統(tǒng)的魯棒性,一方面通過視覺算法減少IMU的積分漂移,另一方面解決了視覺SLAM在特征少、運(yùn)動快的環(huán)境下定位困難的問題,并有效解決了單目相機(jī)的尺度不可觀測問題。
VINS-Mono算法[6]是一種利用圖優(yōu)化的緊耦合VIO(視覺慣性里程計(jì))算法,VINS算法框架如圖2所示。
由圖2可見,VINS-Mono一共分為四個部分:1)在預(yù)處理部分使用FAST算法采集Harris角點(diǎn)作為特征,采用金字塔光流法對特征點(diǎn)進(jìn)行跟蹤,同時采用去除畸變和均勻化等操作,得到合適的特征點(diǎn);又因?yàn)镮MU的測量頻率高于圖像頻率,所以對IMU數(shù)據(jù)進(jìn)行中值預(yù)積分,避免每次更新姿態(tài)進(jìn)行重復(fù)積分,最終得到兩個關(guān)鍵幀之間的相對位姿,同時根據(jù)誤差狀態(tài)傳播方程計(jì)算預(yù)積分殘差的協(xié)方差矩陣,以及預(yù)積分結(jié)果對各自的變量雅各比矩陣[7]。2)在初始化部分,利用SFM(structure from motion)求解出不具有尺度信息的相機(jī)位姿以及特征點(diǎn)的三維坐標(biāo)。然后再通過視覺慣性聯(lián)合初始化,計(jì)算出陀螺儀的偏置和絕對尺度,其中由于重力加速度遠(yuǎn)大于其加速度的偏置,而且在初始化階段很難計(jì)算加速度計(jì)的偏置,所以在初始化階段忽略了加速度計(jì)的偏置。3)使用緊耦合結(jié)構(gòu)的非線性優(yōu)化模型,利用滑動窗口,對窗口內(nèi)的關(guān)鍵幀以及預(yù)積分值進(jìn)行聯(lián)合優(yōu)化。4)在回環(huán)檢測與重定位部分,采用DBoW2回環(huán)檢測算法,當(dāng)相似度超過一定閾值時,將該候選幀視為正確的循環(huán)檢測并執(zhí)行緊耦合重定位。
1.2? 語義分割模型
語義分割部分的主要工作是對給定的圖像進(jìn)行像素級的分割處理,將圖像的高級語義信息分配給每一個像素,作為類別標(biāo)簽。目前,高精度的語義分割網(wǎng)絡(luò)大多采用Encoder-Decoder架構(gòu),其中Encoder用于編碼有用的信息,Decoder再進(jìn)行解碼。為了確保語義分割的精度,Encoder就需要有較好的特征提取效果,所以大多數(shù)網(wǎng)絡(luò)在編碼器部分會將網(wǎng)絡(luò)設(shè)計(jì)的較深。當(dāng)網(wǎng)絡(luò)層數(shù)升高,參數(shù)量增大時,會導(dǎo)致計(jì)算量增加,從而減慢了對一張圖片的處理速度。所以在語義建圖的算法中,如何均衡語義分割模型的準(zhǔn)確度與模型的大小就成了重中之重。
DeepLabV3+網(wǎng)絡(luò)在語義分割任務(wù)中取得了很好的效果[8]。DeepLabV3+為了解決DeepLabV3存在的邊界細(xì)節(jié)缺失問題,在原有的DeepLabV3的基礎(chǔ)上引入了簡單的解碼模塊,形成了一種新的Encoder-Decoder結(jié)構(gòu),增強(qiáng)了邊緣分割的效果。在Encoder部分,使用DeepLabV3的結(jié)構(gòu)進(jìn)行特征提取,將主干特征提取網(wǎng)絡(luò)得到的初步特征,通過空洞空間卷積池化金字塔模塊(ASPP)對輸入進(jìn)行不同采樣率的空洞卷積并行采樣,提取多尺度的語義信息,擴(kuò)大了模型的感受野。在Decoder部分,將低層次特征圖與上采樣后高層次的特征圖進(jìn)行特征融合,使得網(wǎng)絡(luò)同時具備細(xì)節(jié)特征和語義特征。本文所采用的DeepLabV3+是將原本的主干特征提取網(wǎng)絡(luò)替換成輕量級網(wǎng)絡(luò)MobileNetV2,有效地減少了模型的參數(shù),具體流程如圖3所示。
本文選用的主干特征提取網(wǎng)絡(luò)是MobileNetV2[9],其主要采用深度可分離卷積,線性瓶頸(Linear Bottlenecks)以及倒殘差(Inverted Residuals)結(jié)構(gòu)。深度可分離卷積將標(biāo)準(zhǔn)的卷積操作分成了深度卷積和逐點(diǎn)卷積,減少了模型參數(shù),降低了運(yùn)算量。倒殘差結(jié)構(gòu)與Resnet的殘差結(jié)構(gòu)正好相反,倒殘差先使用1×1的卷積進(jìn)行升維,然后進(jìn)行特征提取,再使用1×1的卷積進(jìn)行降維,使得網(wǎng)絡(luò)能在高維度空間中提取更多的信息。瓶頸結(jié)構(gòu)是指將高維空間映射到低維空間,縮減通道數(shù)。而線性瓶頸就是將倒殘差結(jié)構(gòu)中的降維操作采用線性激活的方式,而不使用ReLU激活,避免了ReLU函數(shù)對低維空間的信息進(jìn)行破壞。
1.3? 八叉樹地圖
根據(jù)語義圖像相對應(yīng)的深度圖,結(jié)合相應(yīng)的位姿,求解出圖片中每個像素對應(yīng)的世界坐標(biāo),構(gòu)建出三維語義點(diǎn)云,其中三維點(diǎn)云數(shù)據(jù)中的每個點(diǎn)都包含了坐標(biāo)信息(x、y、z)以及顏色信息,其中的顏色信息來自于語義圖的投影。但語義點(diǎn)云占據(jù)的存儲空間較大,并且不適合后期進(jìn)行導(dǎo)航或避障等操作,所以一般會將點(diǎn)云轉(zhuǎn)化成八叉樹地圖Octomap[10],易于地圖的更新和后續(xù)的處理。
在八叉樹中用概率形式表達(dá)某個節(jié)點(diǎn)是否被占據(jù)。我們假設(shè)節(jié)點(diǎn)為n,觀測數(shù)據(jù)為z,用概率對數(shù)的形式去表達(dá)t時刻某個節(jié)點(diǎn)的概率,如式(1)所示:
其中, 代表從開始到t時刻某節(jié)點(diǎn)的概率對數(shù)值, 代表從開始到t-1時刻某節(jié)點(diǎn)的概率對數(shù)值, 代表t時刻節(jié)點(diǎn)n的概率對數(shù)值。采用概率的對數(shù)值進(jìn)行計(jì)算的原因在于,假如x代表某個節(jié)點(diǎn)是否被占據(jù)的概率,如果讓x不斷地增加或者減少,x就會超過[0,1]區(qū)間,就不再滿足概率的要求,所以對x采用logit變換,將其轉(zhuǎn)化成概率對數(shù)值,當(dāng)概率對數(shù)值在-∞到+∞變化時,其概率值x仍在[0,1]之間。
2? 實(shí)驗(yàn)與分析
本次實(shí)驗(yàn)使用標(biāo)定過的RGBD相機(jī)IntelRealsenseD435i進(jìn)行實(shí)驗(yàn),圖像分辨率為640×480,實(shí)驗(yàn)的硬件配置采用IntelCore i7-11700K CPU、內(nèi)存為32 GB、RTX 3060 Ti顯卡,同時結(jié)合ROS開發(fā)環(huán)境,在真實(shí)環(huán)境下進(jìn)行測試。
2.1? 語義分割網(wǎng)絡(luò)測試
使用開源數(shù)據(jù)集VOC2012對基于MobileNetV2的DeepLabV3+進(jìn)行訓(xùn)練和測試,其中的類別包括人,顯示屏,椅子等總計(jì)20個類別。第一個評估標(biāo)準(zhǔn)采用語義分割普遍通用的區(qū)域交并比IoU[11]。IoU的計(jì)算主要是利用真實(shí)值的區(qū)域和預(yù)測值區(qū)域的交集比上真實(shí)值的區(qū)域和預(yù)測值區(qū)域的并集。在語義分割中,為了得到全局評價,一般將所有類的IoU相加取平均得到平均交并比MIoU,計(jì)算如式(2)所示:
其中k代表分割類別,i代表真實(shí)值,j代表預(yù)測值,pij代表將i預(yù)測為j,pji將j預(yù)測為i,pii代表將i預(yù)測為i。第二個評估標(biāo)準(zhǔn)采用模型參數(shù)量,模型參數(shù)量可以代表模型的空間復(fù)雜度。第三個評估標(biāo)準(zhǔn)采用每秒傳輸幀數(shù)(fps)用于衡量實(shí)時性。
由表1可見,使用MobileNetV2輕量化的DeepLabV3+模型在效果上相較于原版DeepLabV3+略微下降,但參數(shù)量只相當(dāng)于原版的10%,二者的分割效果如圖4所示。
左圖是對室內(nèi)環(huán)境視頻中一幀的截取,中間圖是使用MobileNetV2輕量化后的DeepLabV3+語義分割結(jié)果,右圖是原版DeepLabV3+的語義分割結(jié)果。綜合實(shí)驗(yàn)可以看出,輕量化后的DeepLabV3+的語義分割速度較快,同時在分割效果上兩者并沒有太大區(qū)別,原圖像中椅子所占大小與語義分割后的大小相近,可見MobileNetV2輕量化后的DeepLabV3+在分割效果相似的情況下,實(shí)時性更好。
2.2? 語義點(diǎn)云測試
本實(shí)驗(yàn)將語義分割后的語義圖結(jié)合對應(yīng)的深度圖,根據(jù)點(diǎn)的空間位置和像素坐標(biāo)之間的關(guān)系,如式(3)所示:
其中s代表深度數(shù)據(jù)與實(shí)際距離的比例,u,v代表像素坐標(biāo)系下的像素坐標(biāo),x,y,z代表世界坐標(biāo)系下的空間坐標(biāo),C代表相機(jī)的內(nèi)參矩陣,R代表旋轉(zhuǎn)矩陣,t代表位移矢量。根據(jù)上述公式,進(jìn)行三維投影生成語義點(diǎn)云,如圖5所示。
其中,左邊的三幅圖從上到下分別為相機(jī)輸入的原始圖像,語義分割圖像,深度相機(jī)采集的深度圖像。右邊的圖像是根據(jù)語義圖像和對應(yīng)的深度圖像進(jìn)行三維投影生成的點(diǎn)云圖。
2.3? Octomap建圖
在ROS環(huán)境下,使用Octomap模塊將語義點(diǎn)云圖和位姿信息結(jié)合,將點(diǎn)云動態(tài)轉(zhuǎn)化為語義八叉樹地圖,在Rviz中進(jìn)行顯示,結(jié)果如圖6所示。
3? 結(jié)? 論
針對傳統(tǒng)SLAM算法構(gòu)建地圖時缺乏語義信息的問題,本文在VIO算法VINS-Mono的基礎(chǔ)上,結(jié)合了效果較好的語義分割網(wǎng)絡(luò)DeepLabV3+構(gòu)建語義地圖,但由于模型對SLAM算法的實(shí)時性產(chǎn)生了較大影響,所以采用MobileNetV2作為DeepLabV3+的主干特征提取網(wǎng)絡(luò),完成模型輕量化,減少參數(shù)量,加快語義分割速度,實(shí)現(xiàn)在移動環(huán)境下,構(gòu)建語義八叉樹地圖。實(shí)驗(yàn)表明,輕量化后的DeepLabV3+結(jié)合VINS-Mono算法,可以進(jìn)行實(shí)時三維語義地圖的構(gòu)建。
參考文獻(xiàn):
[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,F(xiàn)ISCHER 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] 李小倩,何偉,朱世強(qiáng),等.基于環(huán)境語義信息的同步定位與地圖構(gòu)建方法綜述 [J].工程科學(xué)學(xué)報(bào),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的室內(nèi)機(jī)器人定位系統(tǒng) [J].傳感器與微系統(tǒng),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優(yōu)化的DeeplabV3+目像分割方法研究 [J].中醫(yī)藥信息,2022,39(1):1-5.
[10] 席志紅,韓雙全,王洪旭.基于語義分割的室內(nèi)動態(tài)場景同步定位與語義建圖 [J].計(jì)算機(jī)應(yīng)用,2019,39(10):2847-2851.
[11] 宋鑫,張榮芬,劉宇紅.集成RGB-D語義分割網(wǎng)絡(luò)的室內(nèi)語義地圖構(gòu)建 [J].計(jì)算機(jī)應(yīng)用研究,2022,39(11):3481-3486.
作者簡介:劉修頎(1997—),男,漢族,黑龍江大慶人,碩士研究生在讀,研究方向:信息獲取與處理;徐宏宇(1965—),男,漢族,遼寧沈陽人,副教授,本科,研究方向:信息獲取與處理。