既能保證效率和精度,又無需GPU,行業(yè)第一個達到此目標的視覺動態(tài)SLAM系統(tǒng)。
01摘要
在動態(tài)環(huán)境中實現(xiàn)準確且魯棒的相機跟蹤對于視覺SLAM是一個重大挑戰(zhàn)。本文提出了一種新穎的視覺SLAM系統(tǒng),通過引入掩模預測機制,在CPU上實現(xiàn)了實時性能。該系統(tǒng)還引入了雙階段光流跟蹤方法,并采用光流和ORB特征的混合使用,顯著提高了效率和魯棒性。與當前最先進方法相比,在動態(tài)環(huán)境中保持了高精度定位,并在單臺筆記本電腦CPU上以56幀每秒的跟蹤速率運行而無需任何硬件加速。這證明即使沒有GPU支持,深度學習方法仍然可應用于動態(tài)SLAM。根據(jù)目前已有信息,這是第一個達到此目標的SLAM系統(tǒng)。
02概述
SLAM研究的一個關鍵焦點是視覺SLAM,即利用攝像頭進行定位和建圖。盡管已有許多視覺SLAM算法在各種場景中展示了高精度的跟蹤性能,但其中大多數(shù)都是在靜態(tài)環(huán)境假設下設計的。因此,在動態(tài)環(huán)境下,基于這些方法進行攝像頭跟蹤時通常會遇到漂移問題,從而導致定位精度大大降低。
隨著計算機視覺和深度學習的進步,許多SLAM算法將深度學習模型融入其中,根據(jù)語義信息在輸入圖像中識別和過濾潛在的動態(tài)物體,這在動態(tài)環(huán)境中的跟蹤精度方面帶來了顯著提升。然而,采用深度神經網絡通常會導致計算要求大幅增加和跟蹤時間延長。
這是因為相機跟蹤需要等待深度學習模型為每個輸入幀提供的動態(tài)物體掩模。因此,動態(tài)環(huán)境中的SLAM越來越注重提高效率。然而,目前實現(xiàn)實時性能的方法要么僅能有限地提高效率,要么在定位精度方面存在妥協(xié),并且仍然依賴于GPU。
為此,本文提出NGD-SLAM,這是一種無需GPU支持的實時SLAM系統(tǒng),適用于動態(tài)環(huán)境。該系統(tǒng)基于ORB-SLAM3框架,并包含一個用于動態(tài)對象檢測的語義線程(YOLO)。本文的一個核心創(chuàng)新是圖1所示的跟蹤管道。與其專注于部署更輕量級的深度學習模型或在跟蹤過程中更少地使用它們,該方法將提高效率視為利用過去的信息快速生成所需當前結果的任務。具體來說,它引入了一種簡單但非常有效且與框架無關的掩模預測機制(如圖2所示),該機制利用語義線程的先前分割結果來預測當前幀中動態(tài)物體的掩模。該機制可以集成到任何視覺SLAM框架中,從而使相機跟蹤和動態(tài)物體分割能夠并行執(zhí)行,使得兩個過程無需等待對方的輸出。為了進一步提高魯棒性和效率,該系統(tǒng)采用雙階段跟蹤,使用光學流方法在圖像之間連續(xù)跟蹤識別出的動態(tài)和靜態(tài)特征,并采用混合策略結合光學流和ORB特征的優(yōu)點來進行相機跟蹤。
通過全面的實驗,NGD-SLAM展示了與當前最先進方法相似的定位精度,并在所有基準的實時方法中成為最精確的一個。值得注意的是,它在沒有硬件加速的情況下,在單個筆記本電腦CPU上實現(xiàn)了56fps的跟蹤幀率。
03相關研究
為了應對動態(tài)環(huán)境中的挑戰(zhàn),識別來自動態(tài)物體的像素或關鍵點至關重要。例如,早期研究利用視差幾何約束和貝葉斯方法來識別移動物體。Klappstein等人利用從光學流中提取的運動度量來檢測移動物體。使用這些傳統(tǒng)方法可以保留SLAM的實時特性,但它們在不同場景下的適應性有限,導致定位精度降低。
隨著深度學習的進步,人們開發(fā)出了更多復雜的方法,利用語義信息在輸入圖像中檢測或分割動態(tài)實例。在ORB-SLAM2的基礎上,DS-SLAM通過將SegNet應用于動態(tài)實例分割來提高動態(tài)環(huán)境中的定位精度,并保持移動一致性檢查的同名幾何約束。同樣地,DynaSLAM采用MaskR-CNN和多視幾何來消除動態(tài)ORB特征。Detect-SLAM沒有使用分割模型,而是利用YOLO模型進行動態(tài)對象檢測,并通過移動概率傳播來移除動態(tài)對象。最近,CFP-SLAM提出了一種粗到精的靜態(tài)概率方法,通過計算和更新靜態(tài)概率作為姿態(tài)優(yōu)化的權重來提高定位精度。
雖然基于深度學習的方法在準確性方面取得了顯著的進步,但由于深度神經網絡具有計算密集的特點,它們通常需要強大的GPU才能實現(xiàn)(接近)實時性能。而提高效率的一種策略是為深度學習模型添加一個獨立的語義線程?;谶@一想法,常見的方法是并行執(zhí)行特征提取和動態(tài)目標識別,但這只能在一定程度上提高效率,因為后續(xù)的跟蹤過程必須等待深度神經網絡的輸出。另一方面,一些算法僅將深度學習方法應用于關鍵幀,這確實大大縮短了平均跟蹤時間,但卻導致準確性降低。
雖然NGD-SLAM也包括一個獨立的深度神經網絡語義線程,但它還有一個掩碼預測機制,使跟蹤線程能夠完全獨立地運行,無需等待語義線程的結果。此外,與那些使用光學流或場景流來區(qū)分動態(tài)點和靜態(tài)點的方法不同,NGD-SLAM僅使用光學流方法跟蹤稀疏特征,并將其應用于兩個不同的任務,以提高系統(tǒng)的準確性和效率。
04所提方案
4.1跟蹤管道
圖1展示了NGD-SLAM的跟蹤管道。首先,將第一幀的圖像數(shù)據(jù)發(fā)送到語義線程,并設置為關鍵幀。從語義線程提取ORB特征并使用掩模來過濾動態(tài)特征;只有第一幀等待獲取掩模。系統(tǒng)隨后在關鍵幀跟蹤過程中初始化地圖。對于后續(xù)幀,系統(tǒng)采用雙階段跟蹤,其中包括根據(jù)預測機制為潛在動態(tài)對象生成掩模,并跟蹤上一幀中的剩余靜態(tài)點以估計相機的姿態(tài)。然后決定是否設置新的關鍵幀。如果需要設置新的關鍵幀,系統(tǒng)從當前幀中提取靜態(tài)ORB特征,并過濾掉由動態(tài)跟蹤過程生成的掩模中的特征,然后繼續(xù)使用ORB特征進行關鍵幀跟蹤過程。
4.2語義線程
NGD-SLAM通過添加一個語義線程來提高實時性能,該線程使用YOLO-fastest模型檢測動態(tài)物體。該線程與一個輸入緩沖區(qū)和一個輸出緩沖區(qū)協(xié)同工作,每個緩沖區(qū)存儲一個幀。新的輸入或輸出幀將替換緩沖區(qū)中現(xiàn)有的幀。從跟蹤線程傳遞到輸入緩沖區(qū)的幀將由網絡進行處理,然后轉移到輸出緩沖區(qū)供跟蹤線程訪問。這種設置確保語義線程處理最新的輸入幀,而跟蹤線程無需等待語義線程的結果,而是直接從緩沖區(qū)獲取最新的輸出。雖然兩個線程以不同的頻率運行,這意味著從輸出緩沖區(qū)獲取的結果對應于前一幀的結果,NGD-SLAM通過使用此過期結果來預測當前幀中動態(tài)物體的掩模來補償這一差異。
4.3掩模預測
NGD-SLAM的一個重要模塊是與框架無關的掩模預測機制,它也是動態(tài)跟蹤的基礎組件。與深度神經網絡的前向過程相比,該預測速度要快得多,在CPU上處理只需幾毫秒。它可以直接應用于任何視覺SLAM框架,并保持其實時性能。圖2展示了掩模預測的管道,由六個組件組成。
檢測:在語義線程中使用的YOLO-最快模型用于在幀中檢測多個對象并根據(jù)語義信息識別潛在的動態(tài)對象。它通過使用OpenCVDNN與C++兼容。NGD-SLAM使用該模型以提高效率,但允許根據(jù)需要輕松更換其他模型用于對象檢測或分割。
分割:使用目標檢測模型比分割網絡更高效,但它僅提供檢測對象的邊界框。為了改進這一點,NGD-SLAM使用深度信息對這些框內的對象進行分割。在識別出動態(tài)對象(如人)之后,它會在每個框中對像素深度進行排序,并使用中位數(shù)作為該檢測對象的估計深度。然后,將框擴大,并將所有接近該深度值的像素屏蔽。這種方法因其計算效率而優(yōu)于聚類方法。接下來,使用連通組件標簽化算法排除那些與主要對象共享相似深度但不屬于主要對象的物體掩碼,然后在將掩碼傳遞到輸出緩沖區(qū)之前進行膨脹過程以進一步細化掩碼。
采樣:在識別出的動態(tài)目標的掩模上,從中提取動態(tài)點。將圖像劃分為大小為15×15的單元格。在每個單元格中,識別出滿足FAST關鍵點準則的被掩模像素,并選擇閾值最高的像素。如果該單元格中沒有合適的FAST關鍵點,則在該單元格中隨機選擇一個像素。這種網格結構可以實現(xiàn)動態(tài)關鍵點的均勻提取,并且由于關鍵點的獨特性及其與高梯度區(qū)域的關聯(lián),可以確保跟蹤的穩(wěn)定性。
跟蹤:該系統(tǒng)采用Lucas-Kanade光學流方法來跟蹤采樣的動態(tài)點,該方法假設關鍵點在不同幀中的灰度值保持不變。從數(shù)學上講,這表示為:
其中表示坐標為的像素在時間t的灰度強度值。該方程可以通過泰勒級數(shù)進一步展開:
接下來,假設在一個小窗口內像素的移動是均勻的,可以建立一個優(yōu)化問題,利用窗口內的像素梯度來通過最小化匹配像素的灰度誤差來估計像素運動。
聚類:對于當前幀中的跟蹤動態(tài)點,應用DBSCAN(基于密度的空間聚類算法,帶有噪聲)算法對彼此靠近的點進行聚類,同時區(qū)分出明顯與任何聚類無關的遠距離點作為噪聲。采用這種方法可以有效地區(qū)分來自不同動態(tài)物體的跟蹤點。此外,通過考慮每個跟蹤點的2D位置和深度,該算法可以有效地排除那些明顯偏離聚類或在2D圖像中看似接近但深度差異顯著的點。
預測:在生成聚類之后,系統(tǒng)會意識到當前幀中動態(tài)實體的位置。因此,它會為每個聚類生成一個粗略的掩模,通常是一個矩形,以覆蓋該聚類中的所有點。然后,它會利用每個聚類中點的深度信息來細化相應掩模,使其與動態(tài)物體的精確形狀相匹配。如圖2所示,當前幀預測的掩模非常精確。
4.4雙階段追蹤
動態(tài)跟蹤。雖然掩模預測機制本身就具有一定的動態(tài)跟蹤能力,但由于其依賴于YOLO進行目標檢測,有時可能會導致動態(tài)目標跟蹤失敗。例如,當相機旋轉時,YOLO可能難以檢測到物體。因此,當語義線程無法為跟蹤提供掩模時,NGD-SLAM會采用一種簡單的解決方案:它使用上一幀預測的掩模來預測當前幀的掩模。這種方法允許動態(tài)點連續(xù)跟蹤,直到動態(tài)物體不再出現(xiàn)在攝像頭視野內,即使深度神經網絡出現(xiàn)問題也能實現(xiàn)。通過不斷從上一幀跟蹤的掩模中采樣新的跟蹤點,而不是在多個幀中跟蹤相同的點,可以確保關鍵點保持最新狀態(tài),并增強跟蹤的魯棒性(如圖3所示)。雖然其他方法涉及從相機姿態(tài)旋轉部分的四元數(shù)表達式中計算滾動值,但它們通常需要額外的計算資源。
并使用該值來旋轉圖像進行檢測(圖4)。動態(tài)跟蹤的目的是提供在一般情況下的穩(wěn)健跟蹤,因為相機旋轉并不是導致檢測失敗的唯一因素。
靜態(tài)跟蹤。與依賴于ORB特征匹配的原始ORB-SLAM3不同,NGD-SLAM使用與前面描述的相同光學流方法來跟蹤上一幀的靜態(tài)關鍵點。通過將上一幀的3D地圖點與當前幀跟蹤的2D關鍵點鏈接,形成幾何約束,并根據(jù)以下運動模型計算當前幀的初始姿態(tài):
其中,表示上一幀的姿態(tài)?;谶@些信息,可以使用RANSAC(隨機抽樣一致性)算法[7]進行迭代估計實際姿態(tài)并濾除異常值。
該設計基于以下兩個考慮。首先,當動態(tài)物體在當前幀中出現(xiàn)但未在用于預測的幀時,通常會出現(xiàn)掩模預測機制的失敗。因此,通過提取每個幀的新ORB特征并根據(jù)描述符值差異進行匹配,可能會導致動態(tài)點之間的匹配或不匹配(如圖5所示)。相比之下,靜態(tài)跟蹤過程更穩(wěn)健,它通過基于圖像梯度和濾除噪聲的點跟蹤來跟蹤多個幀中的相同靜態(tài)點,并在后續(xù)跟蹤中保留這些點。雖然在關鍵幀跟蹤中也會提取新的ORB特征,但這是在靜態(tài)點跟蹤不足的情況下進行的,這意味著動態(tài)物體在多個幀中已經出現(xiàn)了一段時間。其次,靜態(tài)跟蹤過程跳過了非關鍵幀的耗時的ORB特征提取,使跟蹤過程更加高效。
4.5關鍵幀跟蹤
ORB特征被保留用于關鍵幀之間建立連接。這使得能夠維護諸如共視圖圖和局部地圖等ORB-SLAM3關鍵組件,這些組件對于穩(wěn)健的跟蹤和高效的數(shù)據(jù)檢索至關重要。當靜態(tài)跟蹤表現(xiàn)不佳時,它還可以作為一種備用跟蹤方法,因為它對光照變化和運動模糊更加魯棒。關鍵幀跟蹤是通過使用靜態(tài)跟蹤階段估計出的姿態(tài)將上一關鍵幀的地圖點投影到當前幀中以獲取匹配并進行優(yōu)化來實現(xiàn)的。與原始的ORB-SLAM3類似,會添加新的地圖點,并將幀傳遞給局部映射線程進行進一步優(yōu)化。
05實驗
5.1 實驗設置
為了進行對比,選擇了當前最先進的SLAM動態(tài)環(huán)境算法以及其他幾種基準方法,包括DynaSLAM、DS-SLAM、CFP-SLAM、RDS-SLAM和TeteSLAM。此外,還對不采用雙階段跟蹤(僅保留掩模預測)的NGD-SLAM進行了評估,以進行消融研究。
這些序列展示了各種各樣的攝像機運動,包括沿xyz軸的平移、顯著的滾轉、俯仰變化以及近似于半個球面的軌跡。為了保證準確性,選擇了ATE(絕對軌跡誤差)和RPE(相對軌跡誤差)作為評估指標,RPE測量的間隔為1秒(30幀)。為了提高效率,它以毫秒為單位測量執(zhí)行給定函數(shù)所需的時間。
所有的實驗都在一臺配備AMD銳龍74800H處理器和NVIDIAGeForce RTX 2060顯卡的筆記本電腦上進行。
5.2 實驗結果
精度。表1展示了NGD-SLAM與各種基線方法在ATERMSE方面的比較。最小誤差值用粗體顯示,同時附上相應的排名(NGD-SLAM無DST的情況除外,該情況表示與基線實現(xiàn)相比,誤差是增加還是減少)。顯然,DynaSLAM、CFP-SLAM和NGD-SLAM在所有序列中都表現(xiàn)出很高的精度。然而,DynaSLAM總會給出略高的誤差,而CFP-SLAM在序列中的表現(xiàn)不如人意,因為該方法使用的相位約束在具有旋轉的場景中效果不佳。此外,表2和表3顯示了RPERMSE的比較,NGD-SLAM仍保持著最先進的結果。
值得注意的是,雙階段跟蹤在這里也扮演著至關重要的角色,因為通常情況下,當關閉雙階段跟蹤時,系統(tǒng)的ATE和RPE都會增加。這一點在難度較高的序列,如和中尤為明顯。
效率。表4展示了這些動態(tài)序列中每幀的平均處理時間的比較。由于一些算法沒有開源并且在多種設備上進行測試,因此通過顯示算法的每幀平均處理時間與原始ORB-SLAM2/3的每幀平均處理時間的比值(如在原始文獻中所報告),可以確保公平的比較。ORB-SLAM2/3的平均跟蹤時間約為20毫秒;因此,可以將1.65以內的值視為實時性能。
雖然DynaSLAM和CFP-SLAM的精度很高,但即使在GPU支持下,它們也無法實現(xiàn)實時性能。RDS-SLAM和TeteSLAM可以在實時運行,但它們將深度學習模型僅應用于關鍵幀,因此犧牲了精度。相比之下,NGD-SLAM和它(不使用DST,僅保留掩模預測)都可以實現(xiàn)實時性能,并且只需要CPU。
實時分析。系統(tǒng)每幀的平均處理時間為17.88毫秒(56fps),這歸因于非關鍵幀中光學流跟蹤的高效性。由于NGD-SLAM的所有組件僅在關鍵幀跟蹤中涉及,因此進一步將實驗細分,以評估使用靜態(tài)、動態(tài)和關鍵幀跟蹤方法跟蹤關鍵幀所需的平均時間,如表5所示。顯然,使用光學流的靜態(tài)跟蹤非常高效,盡管動態(tài)跟蹤需要稍多的時間,但組合跟蹤過程仍能在33.3毫秒(30fps)內完成,這仍然符合實時性能要求。值得注意的是,盡管YOLO檢測每幀需要30到40毫秒的時間,但由于跟蹤和語義線程以不同的頻率并行運行,因此未將其計入該跟蹤時間。
06結論
本文介紹了一種適用于動態(tài)環(huán)境的實時視覺SLAM系統(tǒng),該系統(tǒng)在CPU上運行,并采用了一種與框架無關的掩模預測機制,以減輕使用深度學習模型帶來的低效問題,同時保留其在動態(tài)物體識別方面的高準確性。此外,還開發(fā)了一種雙階段跟蹤方法,以彌補掩模預測機制的局限性,進一步提高系統(tǒng)的效率。在動態(tài)環(huán)境數(shù)據(jù)集上的實驗評估和與基準方法的比較表明,NGD-SLAM在準確性方面與頂級算法相當,并在不使用任何硬件加速的情況下,在單臺筆記本電腦的CPU上實現(xiàn)了實時跟蹤。這一進展證明了即使沒有GPU支持,深度學習方法一樣有在增強動態(tài)環(huán)境中SLAM系統(tǒng)有效性方面的潛力。
-
cpu
+關注
關注
68文章
10810瀏覽量
210878 -
算法
+關注
關注
23文章
4592瀏覽量
92518 -
模型
+關注
關注
1文章
3121瀏覽量
48663 -
SLAM
+關注
關注
23文章
417瀏覽量
31758 -
深度學習
+關注
關注
73文章
5471瀏覽量
120903
原文標題:干貨丨無需GPU,面向動態(tài)環(huán)境的實時視覺SLAM
文章出處:【微信號:gh_c87a2bc99401,微信公眾號:INDEMIND】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論