陳青梅,秦 進,黃仁婧,崔 虎,黃初華
(貴州大學 計算機科學與技術學院,貴州 貴陽 550025)
視覺SLAM以攝影機作為傳感器,以圖像作為主要環境感知信息源的SLAM系統,作為當今前沿技術之一,在AR/VR、移動機器人等新興領域都具有廣泛的應用。但目前大多數視覺SLAM參數都是通過多次實驗得到的經驗值,在實際應用中采用固定的參數配置,當改變傳感器或場景時需重新調整參數,這對于非專業的用戶來說是一件相對耗時的工作。針對該問題,研究者們提出了多種自適應調整參數的方法來提高視覺SLAM的定位精度和魯棒性。如Khalufa等[1]提出一種視覺SLAM輕量級動態控制策略,該策略依賴攝影機運動來自適應調整算法和計算設備的控制參數,可以實現動態控制參數的效果,但算法沒有考慮場景信息,在算法運行時位姿跟蹤精度和魯棒性有所降低。Kuo等[2]提出一個自適應SLAM算法,該算法可適用于多個攝影機位的設置并根據攝影機之間的幾何關系來在線選擇最合適的初始化方法,在魯棒性方面有所提高,但跟蹤精度提升不明顯且增加視覺前端的設計復雜度。以上方法是從傳感器的角度來考慮問題,對算法自身參數的自適應調整沒有過多研究,此外,這些算法在精度、魯棒性方面還有一定的提升空間。
為解決上述問題,需研究一種既考慮環境信息又不丟失精度和魯棒性的視覺SLAM參數自適應調整方法,保證視覺SLAM算法在變化環境下的位姿軌跡精度和泛化能力。
主流的視覺SLAM通常分為3類:基于特征點、基于光流法和基于直接跟蹤的SLAM。基于直接法[3]和光流法[4]的SLAM通過比較像素的亮度信息來估計相機運動,不用計算關鍵點和描述子,節省了特征提取和匹配的大量時間,在特征點缺失或光照變化不明顯的場景下能取得不錯的估計效果。基于特征點的SLAM算法主要通過對圖像進行特征點檢測,并借助2D或3D的特征點匹配,利用多視圖幾何原理來計算攝影機位姿以及構建環境地圖。其中,具有代表性工作的是Raul Mur-Artal等提出的ORB_SLAM[5],它是一種基于ORB(oriented FAST and rotated,BRIEF)特征的三維定位與地圖構建算法,也是目前性能最好的單目視覺SLAM系統之一,其改進版本ORB_SLAM2[6]加入了雙目和RGB-D模式,進一步提高系統對不同傳感器配置的適應能力。當前,最佳的是2020年Campos等[7]提出的ORB_SLAM3,該系統除了包含ORB_SLAM和ORB_SLAM2的共有模塊位姿跟蹤、建圖、重定位、閉環檢測以外,新增了基于最大后驗估計的IMU融合算法、魚眼相機模型和多地圖模式。此外,ORB_SLAM3是一個多地圖系統,跟蹤丟失時,它會啟動一個新的地圖,當重新訪問地圖區域時,它將與以前的地圖無縫地合并,與只使用最后幾秒信息的視覺里程計系統相比,ORB_SLAM3是一個在所有算法階段能重用先前所有信息的系統。
上述視覺SLAM大多是以配置文件的形式來加載參數,參數閾值是固定的,當切換到新的場景時,位姿估計精度和魯棒性等易受固定參數閾值的影響。基于此,近幾年來部分研究者將深度強化學習方法應用在參數自適應上,試圖通過端到端的方式來解決復雜的參數控制問題。如Huang等[8]提出一種特征跟蹤自適應的方法,用強化學習的思想選擇可以判斷跟蹤結果的特征層。Bhowmik等[9]提出一種新的訓練方法,該方法將特征檢測器嵌入完整的視覺管道中,并以端到端的方式訓練可學習的參數,使用強化學習的方法克服了關鍵點選擇和描述符匹配的離散性。Wang等[10]提出一種基于深度強化學習的移動機器人路徑規劃方法,該方法采用雙深度Q網絡[11](double deep Q-network,DDQN)算法對機器人的狀態和相應動作進行回歸預測以求得最優策略和最優路徑。
本文受深度強化學習自適應特征提取和決策能力的啟發,針對ORB_SLAM3算法中參數調整問題,引入深度強化學習中的深度循環Q網絡[12](deep recurrent Q-network,DRQN),提出了一種基于DRQN的視覺SLAM參數自適應調整方法。該方法有望解決視覺SLAM中復雜的參數調整問題。
在計算機視覺領域, 常見的SLAM不確定度描述方法有兩種:第一種是基于熵的方法[13],在SLAM問題中,常常把位姿和路標看成服從某種概率分布的隨機變量,通常用熵來表示隨機變量的不確定性。第二種是基于協方差矩陣的方法[14],SLAM中通過建立地標點的空間不確定性模型來提高傳感器軌跡估計的精確度,并證明了以協方差矩陣的形式傳播不確定性可以減少位姿估計的不確定性。

(1)

DRQN結合了長短期記憶網絡(long short-term memory,LSTM)來循環記憶信息,在不完整且帶噪的觀測信息情況下能獲得較好的實驗效果。
受深度強化學習感知決策能力及LSTM記憶信息能力的啟發,針對傳統視覺SLAM手動調參及視頻幀序列帶噪問題,采用改進的DRQN作為本文算法迭代學習的主要網絡架構,以便更好處理由飛行器采集速度過快或光照變化過強導致的模糊視頻幀序列。此外,為驗證本文方法的有效性,采用了ORB_SLAM3算法作為深度強化學習下的環境。下面將從構建動作空間、獎勵函數、算法整體結構及網絡模型來講解本文方法的具體實現過程。
構建動作空間的設計思路為篩選出ORB_SLAM3算法中的參數,并賦予參數合適的取值范圍,整個動作空間中的動作由各參數值間的組合構成。在本文中,選取的參數有:金字塔尺度因子P1、 金字塔層數P2和最近鄰閾值P3, 通過對算法及前期參數實驗分析,給3個參數賦予取值范圍P1∈{1.10,…,1.40}、P2∈{2,…,8}、P3∈{0.60,…,0.90}, 且動作空間的總容量m為3個參數各取值空間大小的乘積,動作空間可表示為A
A=(a1,a2,…,am)
其中,一個ai為一個動作,每個動作包含P1、P2、P3這3個參數,記為ai=(P1,P2,P3),i=1,2,…,m。
在基于擴展卡爾曼濾波的視覺SLAM中,引入系統協方差P(x|x) 作為當前狀態下系統的不確定性[16],不確定度可量化為系統協方差矩陣主對角線上前3個值的和,如式(2)所示
P(x|x)=P(x|x)11+P(x|x)22+P(x|x)33
(2)

本文將每幀圖像地標點的平均不確定度值作為每次算法運行下環境返回給智能體的信號(記為g),設環境的獎勵值為r,由于算法的目的是使不確定值越來越小,故獎勵函數設為r=1-g。
本文算法結構主要由DRQN和ORB_SLAM3算法構成,如圖1所示,ORB_SLAM3初始化成功后,通過計算初始化后第一幀圖像的不確定度gt得到獎勵值r, 并將其傳入DRQN,DRQN讀取該獎勵值對應的視頻幀,將該幀圖像處理后構成狀態向量st作為DRQN算法評估網絡的輸入,評估網絡得到該狀態下每組參數(即每個動作)的Q(st,a) 值,算法根據ε-greedy策略來輸出動作作為下一次運行的調整參數。

圖1 DRQN參數自適應調整算法框架
強化學習的目標是盡可能獲得更大的獎勵,而在DRQN參數自適應調整算法中即為找到每幀圖像的最佳參數組合使其位姿跟蹤不確定度越來越小。在t時刻,ORB_SLAM3執行動作at之后產生的經驗為 (st,at,rt,st+1),st代表當前t時刻的狀態,at代表t時刻執行的動作,rt代表執行動作at獲得的即時獎勵,st+1表示在t時刻執行動作at之后的狀態,每循環一次將經驗保存到經驗回放池,當算法需要進行學習訓練時,從經驗回放池中隨機選擇一個序列并從序列中的隨機點開始反向選取n個時間步長進行學習(n可以為1),本文n取值為9,在每一次更新前需要將LSTM隱含層的狀態置為0。隨機選取序列和時間步破壞了樣本間的連續性,使得訓練更加有效,同時經驗池的經驗序列達到容量上限以后,新的經驗序列將覆蓋已有的經驗序列。
DRQN采用了兩個結構相同,參數不同的神經網絡達到更新網絡參數的目的,即評估網絡和目標網絡。評估網絡為訓練網絡,每隔N時間步訓練之后,將評估網絡的參數拷貝給目標網絡。整個網絡的目標函數(即損失函數)如式(3)所示,y為目標網絡計算出來的Qtarget(st+1,at+1) 目標值,如式(4)所示,Qeval(st,at;θ) 為評估網絡得到的預測值,即為需優化的值,θ為網絡模型參數。損失函數定義為預測值和目標值的均方差,同時采用均方根反向傳播(root mean square prop,RMSProp)算法對損失進行優化
loss(θ)=E[(y-Qeval(st,at;θ))2]
(3)
y=r+γmaxat+1Q(st+1,at+1;θ-)
(4)
其中,r為獎勵值,γ為折扣因子,γ∈[0,1]。 接下來對θ求偏導

(5)
DRQN模型除了繼承深度強化學習從感知到決策的優點以外,它在缺失狀態信息的情況下,具有很強的適應性和魯棒性。盡管在每個時間步中僅看到單個幀,但該模型仍能跨幀集成信息以檢測完整的狀態,故選擇該DRQN模型作為本文算法的模型結構。
DRQN網絡結構主要由3個卷積層,1個LSTM層及1個全連接層組成,且評估網絡和目標網絡結構相同如圖2所示,首先將圖像等比例采樣到大小為84×84的圖像且進行灰度化處理,然后將預處理后的圖像輸入到DRQN中卷積3次;接著將卷積層的輸出送到LSTM層中進行處理;最后,全連接層為每個可能的動作輸出Q值。

圖2 DRQN模型結構
(1)卷積層
將處理后的單張84×84大小的圖片I送入3個卷積層中,3個卷積層均并采用Relu激活函數進行激活,從表1和圖2可知,第一個卷積層在輸入圖像上用32個8×8濾波器進行卷積(步幅為4);第二個卷積層使用64個4×4濾波器進行卷積(步幅為2);第三個卷積層使用64個3×3濾波器進行卷積(步幅為1);卷積輸出被傳送到全連接的LSTM層。

表1 網絡模型參數細節
(2)LSTM層
LSTM是一種改進的RNN,相比一般網絡,它能夠更好處理序列數據及解決訓練過程中的梯度爆炸和梯度消失問題。于DRQN而言,將LSTM和卷積層結合能將視頻幀序列在時間和空間特征上進行更完整的學習,其內部結構如圖3所示。

圖3 LSTM內部結構
在輸入LSTM前需將7×7×64的特征圖進行降維處理再輸入到該層。其內部結構如式(6)所示

(6)

(3)全連接層
全連接層主要用來線性輸出每個動作的Q值,在本算法中,所有動作為3.1節中的動作空間A, 動作總數為m=10 500, 一個動作即為選取的3個參數的組合。
實驗所用的環境配置為英特爾酷睿i5-6400,最高睿頻3.3 GHz,4核4線程處理器,16 G內存,操作系統為ubuntu16.04,Tensorflow1.12版,Python3.6版。
視覺SLAM參數自適應調整方法有3個關鍵參數:金字塔尺度因子P1、金字塔層數P2和最近鄰閾值P3,在ORB_SLAM3算法中設置為固定的經驗值,分別為1.2/8/0.9。金字塔層數主要用于解決SLAM中尺度不變形問題,決定了提取關鍵點的數量,尺度因子決定了金字塔層間的縮放比例,最近鄰閾值指最佳匹配和次佳匹配的特征點評分比值閾值,用于篩選匹配點,通常值越小匹配就越苛刻。
為對比不同參數對全局位姿軌跡精度的影響,表2為6組不同參數組合下ORB_SLAM3算法在EuRoC部分序列集下的絕對軌跡誤差中均方根誤差(root mean square error,RMSE)結果。由表2前三行數據可知,在同一序列集下,固定參數P2,P3, 參數P1對算法精度的影響是不穩定的,后三行數據為固定參數P1,P3觀察P2對算法精度的影響,從實驗數據也可以得出類似的結論,因此,對于不同序列集而言,算法中采用同一組固定參數不一定是最優的。

表2 EuRoC序列集在不同參數組合下的絕對位姿誤差,RMSE/m
為觀察P1和P3兩個參數對每幀圖像位姿跟蹤精度的影響,算法訓練過程中隨機提取連續的200幀圖像來觀測地標點平均不確定度g變化情況,如圖4所示,從散點的分布情況可知,當每幀圖像根據自身狀態選取合適的參數組合時可以減小該幀的位姿跟蹤不確定度。

圖4 地標點平均不確定度g的散點
4.2.1 EuRoC數據集
EuRoC數據集[17]包含Machine Hall(MH)、Vicon Room1(VR1)和Vicon Room2(VR2)等11個序列集。訓練數據采用等級為difficult VR103。測試數據選用EuRoC數據集中除了訓練序列集以外的其它序列集。
為測試本文算法的有效性,將實驗結果與DSM[18]、ORB_SLAM3和DSO[19]算法作定位精度對比。DSM是一種基于光度束調整(photometric bundle adjustment,PBA)的單目視覺SLAM,ORB_LAM3算法為西班牙薩拉戈薩大學提出的基于特征點法的視覺SLAM,DSO為典型的基于直接法的SLAM。表3為采用EuRoC除訓練序列集之外的其它序列集測試得到的絕對軌跡誤差的RMSE結果,為保持與文獻[7]一致的評估準則,該數據集的實驗結果取為反復測試10次后的中位數。

表3 EuRoC數據集的絕對軌跡誤差,RMSE/m
從實驗結果來看,本文算法相比于其它3種算法在大部分序列集上位姿跟蹤精度有了一定的提升,而在個別序列集上效果卻一般(如MH04),此外,我們可以發現次佳結果由DSM獲得,可能原因是該算法也采用ORB_SLAM3的中期匹配方法。DSO是一種基于直接法的SLAM,與其它方法相比,該算法是基于灰度不變假設下成立的,容易受光照影響,故位姿跟蹤效果不明顯。圖5(a)、圖5(c)為在EuRoC的序列集MH01和MH03下,本文算法、ORB_SLAM3和真實軌跡(ground_truth)在xy軸上的位姿軌跡對比圖,圖5(b)、圖5(d)分別為圖5(a)、圖5(c)對應的軌跡平移細節,從軌跡對比圖和表3的數據來看,本文算法估計的軌跡相對于ORB_SLAM3算法而言離真實軌跡更近,偏差更小。
4.2.2 TUM-VI數據集
TUM-VI數據集[20]包含6種不同場景的28序列組成,本文使用該數據集中的Room和Corridor序列集進行實驗。該部分實驗的訓練數據采用Room6,測試數據選用除訓練序列集之外的其它序列集。
表4為在TUM-VI數據集的部分序列集下本文方法與ORB_SLAM3、VINS-Mono[21]和ROVIO[22]算法的絕對位姿誤差的RMSE對比結果,實驗結果為反復測試10次后的中位數,其中VINS-Mono為基于緊耦合的單目視覺慣性定位算法,ROVIO是基于迭代卡爾曼濾波的魯棒視覺慣性里程計,這兩種算法的實驗數據由文獻[20]給出。

圖5 EuRoC部分序列集的位姿軌跡對比

表4 TUM-VI數據集的絕對軌跡誤差,RMSE/m

圖6 TUM-VI部分序列集的位姿軌跡及絕對位姿誤差對比
從實驗結果可知,本文算法在Room和Corridor兩個序列集上都略優于其它算法,ROVIO算法計算量小且具有魯棒的定位,但該算法沒有閉環檢測模塊,在定位時存在誤差累積,故在大部分序列集上表現不佳。圖6(a)、圖6(c)為在TUM-VI的序列集Corridor1和Room1下,本文算法、ORB_SLAM3和真實軌跡(ground_truth)在xy軸上的位姿軌跡對比圖,圖6(b)、圖6(d)分別為圖6(a)、圖6(c)對應的絕對位姿誤差,從位姿軌跡和絕對位姿誤差的RMSE值來看,由本文算法得到的位姿軌跡精度相比ORB_SLAM3也是有一定提升的。
在同等運行環境配置下,通過記錄算法在EuRoC和TUM-VI部分序列集上的運行時間來比較ORB_SLAM3和本文算法的運行速度,取值為連續3次運行時間的平均值。如表5所示,由于本文算法在運行過程中需動態加載參數和計算地標點的平均不確定度值,故相對于ORB_SLAM3算法而言總體耗時稍微有所增加,但對于部分序列集來說平均運行時間幾乎是一致的。
針對視覺SLAM算法復雜的參數調整問題,本文提出了一種基于DRQN的視覺SLAM參數自適應調整方法。該方法將ORB_SLAM3作為環境,并以地標點的不確定性構建獎勵函數,以求在不斷迭代學習過程中獲得最大回報獎勵,從而提高ORBLAM3的位姿跟蹤精度和泛化能力。實驗結果表明,該方法相比傳統人工設定經驗值的方法有明顯優勢,雖然測試時間相比原來算法略有增加,但從跟蹤精

表5 EuRoC和TUM-VI部分序列集的運行時間對比/s
度和泛化性上來看有一定的提升,且避免了傳統視覺SLAM算法的復雜參數調整過程,故可以作為視覺SLAM領域參數自適應調整的一種有效方法。
目前本文的方法主要應用在單目上,且采用機房、辦公室等室內數據集,后期將針對不確定模型及獎勵函數的設計進行優化,并將傳感器擴展到雙目、RGB-D,且針對室外環境對ORB_SLAM3和DRQN算法進行改進。