鄭思誠,孔令華,游通飛,易定容
(1.福建工程學(xué)院機械與汽車工程學(xué)院,福州 350118;2.數(shù)字福建工業(yè)制造物聯(lián)網(wǎng)實驗室(福建工程學(xué)院),福州 350118;3.華僑大學(xué)機電及自動化學(xué)院,福建廈門 361021)
同步定位與地圖構(gòu)建(Simultaneous Localization And Mapping,SLAM)是指在沒有環(huán)境先驗信息的情況下,載體通過自身搭載的傳感器收集環(huán)境信息,在估計自身位姿的同時構(gòu)建環(huán)境地圖,該技術(shù)被認(rèn)為是移動機器人智能化的先決條件?;谝曈X信息的SLAM(visual SLAM),因其所使用的相機性價比高、體積小、功耗較低,并且可以獲得豐富的環(huán)境信息的特點,成為機器人領(lǐng)域的研究熱點[1]。
目前,基于視覺的SLAM 算法研究取得了很大的進(jìn)展,例如ORB-SLAM2(Orient FAST and Rotated BRIEF SLAM2)[2]、LSD-SLAM(Large Scale Direct monocular SLAM)[3]等。但這些算法通常都基于一個強烈的假設(shè),即工作環(huán)境是靜態(tài)或低動態(tài)的,對應(yīng)用環(huán)境有嚴(yán)格的限制。這種假設(shè)影響了視覺SLAM 系統(tǒng)在實際場景中的適用性,當(dāng)環(huán)境中存在動態(tài)物體時,例如走動的人、反復(fù)開關(guān)的門窗等,都會給系統(tǒng)帶來錯誤的觀測數(shù)據(jù),降低系統(tǒng)的精度和魯棒性。
在移動機器人使用相機進(jìn)行定位與建圖的過程中相機通常處于運動狀態(tài)。這就使得經(jīng)典的運動分割方法,例如背景去除(Background Subtraction)[4]無法使用在視覺SLAM 中。早期的SLAM 系統(tǒng)大多采用數(shù)據(jù)優(yōu)化的方法降低動態(tài)物體的影響。文獻(xiàn)[5]使用隨機抽樣一致性檢測(RANdom SAmple Consensus,RANSAC)算法粗略地估計出兩幀之間的基礎(chǔ)矩陣,再通過迭代最近點(Iterative Closest Point,ICP)算法將兩幀圖像的點云數(shù)據(jù)進(jìn)行擬合,動態(tài)物體的點云數(shù)據(jù)將作為噪聲或離散點被刪除,這與三維重建中的點云拼接類似。文獻(xiàn)[2]將動態(tài)物體上的幀間特征點匹配對使用RANSAC 算法剔除,一定程度上降低動態(tài)物體對SLAM 系統(tǒng)的影響。這些方法都隱性地假設(shè)圖像中的物體大部分是靜態(tài)的,當(dāng)動態(tài)物體產(chǎn)生的數(shù)據(jù)超過一定閾值時,這些方法將失效。
隨著深度學(xué)習(xí)技術(shù)的發(fā)展和硬件計算能力的提升,獲取圖像中語義信息的成本逐漸降低。將深度學(xué)習(xí)和視覺SLAM結(jié)合,使SLAM 系統(tǒng)從幾何和語義兩個層次上理解環(huán)境信息,生成的語義地圖使得機器人更好地認(rèn)知周圍環(huán)境和進(jìn)行任務(wù)規(guī)劃,提升機器人的人機交互能力[6]。Salas-Moreno等[7]提出的SLAM++將采集到的點云信息與使用KinectFusion[8]提前構(gòu)建的高質(zhì)量的3D模型數(shù)據(jù)庫對比,將匹配的物體模型插入地圖中,但語義地圖只能構(gòu)建數(shù)據(jù)庫中存在的物體。Bescos等[9]提出的DynaSLAM 中,使用RGB-D 相機作為傳感器將MASKRCNN(MASK Region-based Convolutional Neural Network)[10]與多視圖幾何結(jié)合,實現(xiàn)對沒有先驗知識的動態(tài)目標(biāo)檢測和剔除,同時對剔除動態(tài)物體的圖像進(jìn)行修復(fù)獲得靜態(tài)場景用于三維重建。Yu 等[11]利用幀間圖像的光流跟蹤,進(jìn)行一致性檢驗的同時結(jié)合SegNet[12]剔除動態(tài)物體上的特征點,提高位姿估計精度并使用八叉樹建立帶有語義信息的地圖。
針對現(xiàn)有視覺SLAM 系統(tǒng)在動態(tài)環(huán)境中普遍存在精度較低或?qū)崟r性較差的問題。本文在ORB-SLAM2 的基礎(chǔ)上進(jìn)行改進(jìn),提出基于特征點和語義信息的SLAM 算法,消除動態(tài)目標(biāo)對SLAM系統(tǒng)的影響并在室內(nèi)動態(tài)環(huán)境中進(jìn)行測試。
Mur-Artal 等[2]在2015 年提出的ORB-SLAM2(Orient FAST and Rotated BRIEF SLAM2)是前端視覺里程計基于特征點法的代表工作之一,開創(chuàng)了3個實時運行的平行線程框架:特征點提取和匹配的跟蹤線程、局部光束法平差優(yōu)化線程以及全局回環(huán)檢測和優(yōu)化的回環(huán)線程。這個框架被后來的很多視覺SLAM系統(tǒng)沿用或在其基礎(chǔ)上進(jìn)行改進(jìn),其算法流程如圖1所示。
圖1 ORB-SLAM2算法流程Fig.1 Flowchart of ORB-SLAM2 algorithm
跟蹤線程對每一幀圖像提取ORB(Oriented FAST and Rotated BRIEF)特征進(jìn)行幀間特征點匹配,并通過最小化重投影誤差計算相機位姿。局部建圖線程負(fù)責(zé)對得到的關(guān)鍵幀進(jìn)行管理,根據(jù)關(guān)鍵幀中所包含的地圖點信息確定與其他關(guān)鍵幀之間的共視關(guān)系,剔除冗余關(guān)鍵幀以及不合格的地圖點,隨后對一個滑動時間窗口內(nèi)的一系列存在共視關(guān)系的關(guān)鍵幀組及其所觀測到的地圖點進(jìn)行局部BA(Bundle Adjustment)優(yōu)化。當(dāng)回環(huán)線程檢測到回環(huán)發(fā)生時,利用回環(huán)約束對關(guān)鍵幀進(jìn)行融合和圖優(yōu)化,消除系統(tǒng)運行過程中累計的誤差。本文算法在該系統(tǒng)的基礎(chǔ)上進(jìn)行后續(xù)開發(fā)。
YOLO(You Only Look Once)是一種基于深度神經(jīng)網(wǎng)絡(luò)的單階段目標(biāo)檢測算法,它將目標(biāo)檢測作為回歸問題求解,直接從一張輸入圖片獲得預(yù)測物體的邊界框(bounding box)位置及其分類,在保證準(zhǔn)確率的同時兼顧了實時性。
YOLOv4[13]算法是在YOLOv3[14]算法的基礎(chǔ)上對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),將深度學(xué)習(xí)的優(yōu)化方法分為免費包(Bag of freebies)和特色包(Bag of specials),對其中不增加目標(biāo)檢測器計算成本而只改變模型訓(xùn)練技巧和訓(xùn)練成本的方法成為“免費包”,而對于那些只增加少量計算成本但能顯著提高對象檢測精度的模塊和處理方法稱之為“特色包”。文獻(xiàn)[13]對近年來提出的深度學(xué)習(xí)優(yōu)化方法進(jìn)行測試,最終選取其中適合YOLO 的部分相結(jié)合,相比YOLOv3 在訓(xùn)練數(shù)據(jù)處理、骨干網(wǎng)絡(luò)結(jié)構(gòu)、激活函數(shù)、邊界框損失函數(shù)等各方面均有所改進(jìn)。
文獻(xiàn)[13]中認(rèn)為一個標(biāo)準(zhǔn)的目標(biāo)檢測器由輸入、骨干網(wǎng)絡(luò)(Backbone)、頸部(Neck)和頭部(Head)四個部分組成。YOLOv4 的主干網(wǎng)絡(luò)在YOLOv3 的DarkNet53 的基礎(chǔ)上,將其與CSPNet[15]相結(jié)合,在DarkNet 的每個殘差塊加上CSPNet 將基礎(chǔ)層的特征映射劃分為兩部分,再通過一個跨階段層級將這2 個部分融合起來,在降低內(nèi)存占用和計算量的同時提升精度。在骨干網(wǎng)絡(luò)中使用中,使用Mish 激活函數(shù)代替了原來的Leaky ReLU。引入空間金字塔池化(Spatial Pyramid Pooling,SPP)[16]利用四個不同尺度的最大池化對上層輸出進(jìn)行處理,顯著增加了感受野。PANet(Path Aggregation Network)[17]作為頸部代替YOLOv3 中的FPN 作為參數(shù)聚合的方法,并對其進(jìn)行了修改,使用張量連接(Concat)代替了原來的捷徑連接(shortcut connection)。頭部部分繼承了YOLOv3的網(wǎng)絡(luò)設(shè)計進(jìn)行多尺度檢測,采用3 個不同層級的特征圖進(jìn)行融合,提高對不同尺寸目標(biāo)的檢測能力。YOLOv4 的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Network structure of YOLOv4
在實際工程應(yīng)用中,需要根據(jù)使用需求以及搭載平臺的硬件性選擇合適的網(wǎng)絡(luò)結(jié)構(gòu)或并對其進(jìn)行調(diào)整??紤]到視覺SLAM 系統(tǒng)通常安裝在移動終端上,這類載體如移動機器人、手機等受到體積、能耗、價格等因素的限制,需要在有限的算力和內(nèi)存下保證系統(tǒng)的穩(wěn)定運行。Wang 等[18]對YOLOv4 網(wǎng)絡(luò)模型進(jìn)行調(diào)整縮放,使其滿足部署在不同平臺的需求。
YOLOv4-tiny便是針對嵌入式平臺,考慮到其內(nèi)存訪問速度、內(nèi)存帶寬、運算能力等因素改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)。在其骨干網(wǎng)絡(luò)中,為了更快的運算速度將激活函數(shù)改為了Leaky ReLU。在頸部與原版相比其只提取兩個特征層,使用特征金字塔對最后一個有效特征層卷積后進(jìn)行上采樣,和另一個特征層進(jìn)行張量(Concat)融合。原版YOLOv4 共有162 層,縮放后則只剩38 層。在使用GTX1070 圖像處理器的條件下,YOLOv4 檢測視頻的平均速度為20 FPS(Frames Per Second),而YOLOv4-tiny 能夠達(dá)到180 FPS 的處理速度,檢測速度顯著提升。改進(jìn)后的YOLOv4-tiny網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 YOLOv4-tiny網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Network structure of YOLOv4-tiny
為解決傳統(tǒng)視覺SLAM 算法在動態(tài)場景下相機位姿估計和建圖不準(zhǔn)確的問題,本文在ORB-SLAM2 的基礎(chǔ)上進(jìn)行改進(jìn)。在原先三線程并行的框架下增加一個目標(biāo)檢測線程。當(dāng)圖像幀傳入系統(tǒng)后,跟蹤線程和語義分割線程并行對圖像進(jìn)行處理。本文設(shè)計的動態(tài)特征剔除算法框架如圖4所示。
圖4 動態(tài)物體剔除算法框架Fig.4 Framework of dynamic object elimination algorithm
本文將傳感器獲取的RGB 圖像輸入到追蹤線程中對每一幀圖像提取ORB 特征點并與相鄰幀進(jìn)行幀間匹配,利用匹配的特征點對求解相機運動是一個PNP(Perspective-N-Point)問題。本文使用BA 非線性優(yōu)化算法求解相機位姿。根據(jù)投影的像素坐標(biāo)ui=[ui,vi]T,RGB-D 相機可以直接獲取對應(yīng)特征點在3D空間點坐標(biāo)Pi=[Xi,Yi,Zi]T。兩者之間關(guān)系如下:
式中:K為相機的內(nèi)參數(shù)矩陣,T為變換矩陣。
由于特征點誤匹配以及觀測的噪聲的存在,式(1)存在一個誤差項。構(gòu)建最小二乘問題,誤差項如下:
該問題的誤差項是將觀測到的特征點像素坐標(biāo)與其對應(yīng)的3D 空間點根據(jù)計算得出的位姿投影到像素平面的坐標(biāo)計算差值,故稱為重投影誤差。重投影誤差模型如圖5所示。
圖5 重投影誤差模型Fig.5 Reprojection error model
在語義分割模塊中,首先對接收到的圖像數(shù)據(jù)進(jìn)行預(yù)處理,在不失真的前提下使其達(dá)到尺寸要求。隨后將圖像輸入到CSPDarkNet53 骨干網(wǎng)絡(luò)中,在一系列卷積和殘差網(wǎng)絡(luò)中提取特征信息,最終獲得3 個大小為(52×52×256)、(26×26×512)、(13×13×1 024)的有效特征層。這3個輸出結(jié)果將圖片劃分成不同大小的網(wǎng)格,以適應(yīng)不同尺寸的物體。每個網(wǎng)格上預(yù)設(shè)有3個先驗框,卷積神經(jīng)網(wǎng)絡(luò)會判斷先驗框中是否存在物體并對先驗框尺寸進(jìn)行調(diào)整。對先驗框進(jìn)行調(diào)整的過程被稱為解碼,調(diào)整后的先驗框被稱為預(yù)測框由x、y、w、h以及置信度和分類結(jié)果6個參數(shù)組成:x、y為預(yù)測框的中心與網(wǎng)格原點的相對值;w和h表示預(yù)測框的長和寬;置信度代表該預(yù)測框內(nèi)包含某物體的可信度以及預(yù)測框位置的準(zhǔn)確度;分類結(jié)果則根據(jù)訓(xùn)練時使用的數(shù)據(jù)集所包含的物體類別的數(shù)量決定。
由于每個網(wǎng)格都進(jìn)行獨立的預(yù)測,因此會出現(xiàn)某個區(qū)域多個預(yù)測框指向同一個物體的情況,需要根據(jù)各個預(yù)測框的得分使用非極大值抑制的方法篩選出得分最高的預(yù)測框。隨后根據(jù)預(yù)設(shè)好的動態(tài)物體類別篩選預(yù)測結(jié)果,對其中被標(biāo)記為動態(tài)物體的區(qū)域添加掩碼,并根據(jù)掩碼區(qū)域剔除ORB 特征檢測模塊中圖像對應(yīng)區(qū)域上的特征點。
在動態(tài)環(huán)境中,位于動態(tài)目標(biāo)上的特征點匹配對會使重投影的誤差顯著增大,相機位姿無法收斂從而導(dǎo)致位姿估計精度下降。為此,在跟蹤線程提取特征點后需等待語義分割線程傳來的目標(biāo)檢測信息,根據(jù)預(yù)設(shè)的動態(tài)目標(biāo)類型剔除動態(tài)目標(biāo)上的特征點。在后續(xù)的局部地圖跟蹤、相機位姿估計和局部全局BA優(yōu)化中只使用處理后的特征點,增強系統(tǒng)在動態(tài)環(huán)境下的精度和魯棒性。
圖6(a)是為原版ORB-SLAM2,可以看出大部分特征點分布在人身上,由于總的特征點數(shù)目是固定的,因此靜態(tài)物體只有少量的特征點被提取。圖6(b)是添加了動態(tài)目標(biāo)檢測線程的特征點提取圖,人身上的特征點被剔除,取而代之在靜態(tài)的背景上提取特征點,增強了系統(tǒng)的精度和魯棒性。
圖6 動態(tài)特征點剔除效果Fig.6 Effect of dynamic feature point elimination
本章使用TUM RGB-D 數(shù)據(jù)集評估系統(tǒng)在動態(tài)環(huán)境中的定位精度和實時性,并與其他先進(jìn)的視覺SLAM 進(jìn)行對比。主要將本文系統(tǒng)與ORB-SLAM2 進(jìn)行比較以評估其在動態(tài)場景中的改進(jìn)效果,開源算法中ORB-SLAM2在靜態(tài)場景中實現(xiàn)了精度和實時性的平衡,同時其作為本文算法的改進(jìn)基礎(chǔ)適合作為比較對象。
實驗所使用的TUM 數(shù)據(jù)集是由德國慕尼黑大學(xué)制作,使用Kinect 傳感器以30 Hz 的速率采集信息,圖像分辨率為640×480,在采集圖像數(shù)據(jù)的同時,使用高精度運動捕捉系統(tǒng)VICON 與慣性測量系統(tǒng)實時獲取相機位置與姿態(tài)的數(shù)據(jù),可近似作為RGB-D 相機的真實位姿數(shù)據(jù)。因此該數(shù)據(jù)集被大多數(shù)視覺SLAM研究者所采用,作為基準(zhǔn)評估視覺SLAM算法的標(biāo)準(zhǔn)數(shù)據(jù)集之一。
文獻(xiàn)[19]提出了兩種用以評估視覺SLAM 算法精度的評價指標(biāo),分別是相對位姿誤差(Relative Pose Error,RPE)和絕對軌跡誤差(Absolute Trajectory Error,ATE)。作者認(rèn)為直接評估建圖精度是較為困難的,因此通過計算SLAM 系統(tǒng)估計位姿的誤差,間接評價建圖的精度。文中使用均方根誤差(Root Mean Squared Error,RMSE)作為評估這兩個指標(biāo)的參數(shù),計算所有時刻估計位姿的誤差,計算公式如下。
其中:trans(Ei)表示i時刻的絕對或相對位姿估計誤差,E1:n表示從1到n的一系列相機位姿,Δ表示相隔固定時間差。
相對位姿誤差是描述在一個固定時間段Δ內(nèi)估計位姿和真實位姿的差值,其中包含平移誤差和旋轉(zhuǎn)誤差兩個部分。絕對軌跡誤差是直接計算估計位姿和真實位姿的差值,能直觀地反映算法估計軌跡的精度。
在TUM數(shù)據(jù)集中的walking序列中,兩個人從椅子上站起并圍繞辦公桌行走最后坐下,同時相機也根據(jù)預(yù)先設(shè)定的運動模式移動,在某些時間節(jié)點移動的人占據(jù)了圖像一半以上的區(qū)域,對于評估視覺SLAM 算法在動態(tài)環(huán)境下的性能極具挑戰(zhàn)性,將該數(shù)據(jù)集作為高動態(tài)實驗環(huán)境。本文還測試了ORB-SLAM2以及改進(jìn)后的系統(tǒng)在靜態(tài)及低動態(tài)場景的表現(xiàn),對照說明本系統(tǒng)的精度。在sitting 序列中兩個人坐在辦公桌前的椅子上小幅度運動,在desk 數(shù)據(jù)集中相機圍繞靜止的辦公桌運動。不同動態(tài)環(huán)境下的數(shù)據(jù)集場景如圖7所示。
圖7 不同動態(tài)環(huán)境下的TUM數(shù)據(jù)集場景Fig.7 TUM dataset scenes in different dynamic environments
本文分別選用walking_xyz、walking_halfsphere、walking_static 作為高動態(tài)場景序列;sitting_static 作為低動態(tài)場景序列分別對ORB-SLAM2 和本文算法進(jìn)行測試。為了驗證本文算法在動態(tài)環(huán)境下實現(xiàn)的精度,使用fr2_desk 靜態(tài)場景數(shù)據(jù)集對兩種算法進(jìn)行測試。同時實驗中還將本文算法與其他針對動態(tài)環(huán)境設(shè)計的視覺SLAM 算法進(jìn)行對比,分析其在精度和實時性上的優(yōu)劣。
4個序列的定量比較結(jié)果如表1~3所示。在實驗中,使用RPE 和ATE 評估位姿真實值與估計值的差異,計算其RMSE和標(biāo)準(zhǔn)偏差(Standard Deviation,SD),其中均方根誤差描述觀測值與真實值的偏差,易受到較大或偶發(fā)錯誤的影響,因此能更好地反映系統(tǒng)的魯棒性[20]。標(biāo)準(zhǔn)差評價估計軌跡相較于真實軌跡的離散程度,能夠反映系統(tǒng)的穩(wěn)定性。
表1 絕對軌跡誤差對比結(jié)果(ATE)Tab.1 Absolute trajectory error comparison results(ATE)
數(shù)據(jù)集的xyz、halfsphere、static 分別代表三種不同的相機運動方式:相機沿X、Y、Z軸移動,相機在直徑為1 m 的半球面移動以及相機基本保持靜止。
表格中計算本文算法相比ORB-SLAM2 的改進(jìn)值(Improvement),評估其優(yōu)化效果,公式如下:
式中:η表示算法的改進(jìn)程度,α表示ORB-SLAM2算法軌跡誤差,β表示本文算法軌跡誤差。
由表1 可知,在高動態(tài)場景下絕對軌跡誤差RMSE 和SD兩者平均下降了96.7%,說明本文算法相比ORB-SLAM2在高動態(tài)場景下大幅度提升了定位精度和穩(wěn)定性,且達(dá)到了與ORB-SLAM2 在靜態(tài)環(huán)境下相同量級的精度。在低動態(tài)場景下本文算法相比ORB-SLAM2 沒有明顯的改進(jìn),分析原因是ORB-SLAM2 所使用的RANSAC(RANdom SAmple Consensus)算法能將部分小幅度移動的動態(tài)特征點作為噪聲剔除,一定程度上降低了運動物體對算法精度的影響。表2 和表3 分別列出了兩種算法在不同場景序列下的相對位姿和相對旋轉(zhuǎn)誤差并計算改進(jìn)值,在高動態(tài)場景下,相對位姿和相對旋轉(zhuǎn)的均方根誤差分別平均降低96.82%和96.21%,標(biāo)準(zhǔn)差分別降低97.57%和96.63%。兩者顯示出與絕對軌跡誤差相同的趨勢,本文算法在高動態(tài)場景性能提升較大。
表2 相對位姿誤差對比結(jié)果(RPE)Tab.2 Relative pose error comparison results(RPE)
表3 相對旋轉(zhuǎn)誤差對比結(jié)果Tab.3 Relative rotation error comparison results
如圖8~10所示,分別繪制了ORB-SLAM2和本文算法在3個高動態(tài)數(shù)據(jù)集上的估計相機軌跡和真實軌跡對比圖以及相對位姿誤差曲線,在軌跡對比圖中以不同線段分別代表由高精度運動傳感器、本文SLAM 算法計算得到的相機運動軌跡以及兩者之間的誤差。
圖8 walking_xyz數(shù)據(jù)集上的絕對軌跡和相對位姿誤差Fig.8 Absolute trajectory and relative pose error on walking_xyz dataset
從圖中可以更直觀地體現(xiàn)與ORB-SLAM2 相比本文算法的絕對軌跡誤差和相對軌跡誤差均大幅度降低,位姿估計更加精確,證實了該算法的有效性。
為進(jìn)一步驗證本文算法的有效性,將本文算法與其他基于動態(tài)環(huán)境設(shè)計的視覺SLAM算法進(jìn)行比較,對比各算法在高動態(tài)場景數(shù)據(jù)集walking_xyz、walking_halfsphere、walking_static的表現(xiàn)。實驗主要對比各算法在相同數(shù)據(jù)集下的絕對軌跡誤差,實驗結(jié)果采用原始論文中提供的實驗數(shù)據(jù),結(jié)果如表4 所示。由表4 可知,本文算法在高動態(tài)環(huán)境下達(dá)到了與DynaSLAM、DS-SLAM 相近的精度并且遠(yuǎn)高于Mask-Fusion 以及ElasticFusion(EF)[20]的精度,證明了本文算法的有效性。
表4 基于動態(tài)環(huán)境的視覺SLAM算法精度比較Tab.4 Accuracy comparison of visual SLAM algorithms based on dynamic environment
圖9 walking_halfsphere數(shù)據(jù)集上的絕對軌跡和相對位姿誤差Fig.9 Absolute trajectory and relative pose error on walking_halfsphere dataset
圖10 walking_static數(shù)據(jù)集上的絕對軌跡和相對位姿誤差Fig.10 Absolute trajectory and relative pose error on walking_static data set
在實際應(yīng)用中,實時性是評估一個SLAM 系統(tǒng)的重要指標(biāo)。在本實驗中,主要測試跟蹤線程處理每一幀所需的時間,并與其他動態(tài)環(huán)境下的SLAM 系統(tǒng)進(jìn)行比較,結(jié)果如表5 所示。在使用YOLOv4-tiny 網(wǎng)絡(luò)架構(gòu)的情況下,本系統(tǒng)跟蹤線程處理一幀平均耗時63 ms,反映到系統(tǒng)整體上能達(dá)到每秒15幀的圖像處理速度。與其他基于動態(tài)環(huán)境的視覺SLAM 算法相比,本文算法實現(xiàn)了精度與速度的平衡。
表5 基于動態(tài)環(huán)境的視覺SLAM算法實時性比較Tab.5 Real-time performance comparison of visual SLAM algorithms based on dynamic environment
針對現(xiàn)有視覺SLAM 系統(tǒng)在動態(tài)環(huán)境下精度不足或?qū)崟r性較差的問題,本文基于ORB-SLAM2 進(jìn)行改進(jìn),增加一個語義分割線程。利用YOLOv4 目標(biāo)檢測算法獲取圖像的語義信息,去除動態(tài)物體上的特征點,使用處理后的特征點進(jìn)行幀間匹配和位姿估計。
在公開數(shù)據(jù)集上進(jìn)行的實驗結(jié)果表明,改進(jìn)后的算法能大幅度提高SLAM 系統(tǒng)在動態(tài)環(huán)境下的精度和魯棒性且仍能保證實時性。但本文算法仍存在局限性,當(dāng)相機移動過快或大幅度旋轉(zhuǎn),會出現(xiàn)跟蹤丟失的情況導(dǎo)致定位建圖失敗。在先驗知識中屬于靜態(tài)目標(biāo)的物體,例如椅子、書本等被人為移動時,本文算法也無法生效。為克服這些局限性,在未來的工作中將考慮與慣性測量單元(Inertial Measurement Unit,IMU)融合,增強系統(tǒng)在極端環(huán)境下的魯棒性;使用多視圖幾何等方法增強動態(tài)物體檢測的性能,使系統(tǒng)具有更強的適用性。