文露婷,李智
(四川大學 電子信息學院,四川成都,610065)
SLAM 技術是指在運動過程中通過機載傳感器實時采集的數據來構建環境地圖并實現自身定位的技術,是智能移動機器人可以在未知環境中自主作業的關鍵技術。常用傳感器有相機、激光雷達、慣性傳感器、編碼器等,相機即為視覺 SLAM 使用的傳感器。由于相機價格低廉、適用性高并且獲得的圖像信息豐富等特點,視覺 SLAM 成為當前研究的熱點[1]。
現有的視覺 SLAM 根據前端獲取圖像信息的方式不同,可分為兩大類:特征點法和直接法。特征點法的主要思路是在圖像中提取出一些關鍵點,然后通過特征點描述子計算它們之間的相似性并完成匹配,最后利用三角或對極幾何的方法估算相機運動,優秀算法代表有 PTAM[2]、ORB-SLAM3[3]。直接法則是直接利用像素灰度值進行匹配,基于光度不變性,通過最小化圖像中兩個對應位置的光度誤差來估計相機運動[4],優秀算法代表有 LSDSLAM[5]、DSO[6]。兩種方法在靜態場景中均可實現高精度定位和高魯棒性運行,但現實場景中的動態物體如行人、車輛,會使系統出現錯誤的匹配,導致其定位精度和魯棒性大幅度下降。
為了減小上述動態物體對視覺 SLAM 系統的影響,國內外學者分別提出了三種方法:基于多視幾何的方法,該方法首先建立靜態場景中的標準約束,然后通過判斷提取的特征點是否違背這些約束來檢測物體的靜止或運動狀態;基于光流的方法,該方法通過比較兩幅圖像中對應像素的亮度值的變化,來推斷像素在圖像中的運動方向和大小;基于深度學習的方法,該方法通過運用目標檢測網絡和語義分割網絡識別并剔除場景中的動態特征點。上述方法在一定程度上能夠解決動態目標對系統的影響問題,但普遍存在精度較低或實時性較差的問題。鑒于以上,本文以動態環境為研究背景,以 ORB-SLAM3 為框架,開展相關研究,主要有以下改進和創新:改進 YOLOv5s,將其主干網絡替換為 MobileNetV3[7]輕量級網絡,并引入SE[8]注意力機制,構成 MN-YOLOv5 模型。在 ORB-SLAM3 的框架中添加 MNYOLOv5s 模型組成的動態特征點剔除模塊,用于檢測并剔除動態特征點,減小動態物體對視覺 SLAM 系統的影響。
2015 年,Raul Mur-Artal 等人提出了只針對單目相機的 ORB_SLAM[9],主要有跟蹤、建圖、回環檢測三個線程,由此開始了 ORB-SLAM 系列算法。經過幾年的迭代,2020 年該團隊開源了 ORB-SLAM3,是第一個支持視覺、視覺+慣導、混合地圖的 SLAM 系統,被認為是目前最優秀的 SLAM 算法之一。如圖1 所示,ORB-SLAM3 系統具有跟蹤、局部建圖、閉環檢測 3 個并行線程。從編程實現上來看,三大線程是父子關系,跟蹤線程持有其他兩個子線程的指針;但是從邏輯實現上,三大線程是并發的,系統的隨機性使得各個線程的運行順序是不固定的。跟蹤線程主要負責處理傳感器信息,通過最小化匹配地圖點的重投影誤差實時計算幀間相對位置,還會初始化地圖并根據地圖集來進行重定位,同時會篩選新的關鍵幀,之后的局部建圖和回環檢測線程均只處理關鍵幀以減少內存消耗。局部建圖線程負責對得到的關鍵幀進行管理,增加關鍵幀和特征點到地圖中,剔除掉冗余的關鍵幀和點,并使用視覺或視覺慣性光束平差法(BundleAdjustment,BA)優化地圖,在慣性情況下,IMU 參數通過線程使用最大后驗估計技術來進行初始化和優化。回環檢測線程本質上是通過計算圖像數據間的相似性,從而解決位置估計隨時間漂移的問題,首先根據查詢數據庫和計算 Sim3/SE3 來檢測回環,而后通過循環融合和優化本質圖來進行回環矯正,最后利用全局 BA 優化所有地圖點和關鍵幀組成的位姿圖[10]。

圖1 ORB-SLAM3 系統框架
1.2.1 YOLOv5s 目標檢測網絡
相比于之前版本,YOLOv5 改進方向有些許不同,它優化了網絡結構、訓練策略并進行了數據增強,使得其在速度和精度上都有所提升。YOLOv5 目前仍在迭代更新,不同版本之間的主要區別在于深度及特征圖的寬度不同,YOLOv5s 網絡是YOLOv5 系列中深度、特征圖寬度最小的網絡,也是模型最小、運行速度最快的網絡,對硬件設備要求較低,因此更適合在移動端部署。本文采用的是 YOLOv5-6.1 版本,其主要網絡結構如圖2 所示,主要有四個組件:輸入層 Input 部分負責數據處理及增強,采用Mosaic 數據增強算法增加訓練樣本的多樣性和復雜性;骨干網絡 Backbone 部分負責對經過處理后的圖像進行特征提取并輸出三個特征層;頸部網絡 Neck 部分負責將來自不同層次的特征圖進行融合,生成大、中、小三種類型的特征信息;頭部網絡 Head 部分負責生成最終的檢測結果。

圖2 YOLOv5s-6.1 網絡結構
1.2.2 MobileNet-V3 輕量級網絡
由 Google 在2019 年提出的網絡架構 MobileNetV3是專注于移動端設備的輕量級 CNN 網絡,在保證準精確率的同時大幅度減少了模型參數。MobileNetV3 經過 V1和 V2 的迭代,它有以下創新:首先使用神經網絡架構搜索技術,用于發現和優化網絡結構;其次引入 SE 注意力模塊并將 Sigmoid 換成 hard-sigmoid,提升了模型的精確率和計算速度;同時更新激活函數,ReLU 替換成 hardswish,提升了模型計算速度;最后優化 V2 網絡的最后幾層,改進和刪除了許多所需計算時間較長的層,減少了運算量。MobileNetV3 有 Large 和 Small 兩個版本,本文采用Small,整體結構如圖3 所示。

圖3 MobileNetV3 網絡結構
1.2.3 SE 注意力機制
SE 在通道維度增加注意力機制,主要思想是通過一個權重矩陣,從通道域的角度賦予圖像不同位置不同的權重,對當前任務有益的特征圖的通道進行提高,反之抑制,從而讓神經網絡重點關注某些特征通道。SE 的實現步驟如圖4所示: Squeeze 使用全局平均池化將每個通道的特征圖壓縮為向量;Excitation 使用兩個全連接層處理上述向量,構建通道間的特征相關性,生成通道權重值,輸出的權重值數目和輸入特征圖的通道數相同;Scale 用第二步得到的歸一化權重對特征圖進行賦值。圖中輸入前特征圖的每個通道都是一樣重要,輸出后每個通道的重要性不再一樣,不同顏色代表不同的權重。

圖4 SE 注意力機制實現步驟
1.2.4 MN-YOLOv5 目標檢測網絡
考慮到移動設備內存及算力的限制,本文以 YOLOv5s網絡為基礎,提出 MN-YOLOv5 輕量化目標檢測算法,有以下改進:首先將骨干網絡 Backbone 替換為更加輕量化的MobileNet-V3 輕量級網絡,大幅度減少網絡參數,有效地提高了運行速度;其次在 Backbone 中添加 SE 注意力機制,增強網絡對于重要信息的捕捉能力。MN-YOLOv5 網絡結構如圖5 所示。

圖5 MN-YOLOv5 網絡結構
1.3.1 基于MN-YOLOv5 的動態特征點剔除
本文主要研究室內場景,因此選擇人和動物作為先驗動態目標。將目標檢測網絡 MN-YOLOv5 與 ORB-SLAM3 跟蹤線程結合,當圖片幀進入系統后,首先在跟蹤線程中提取圖片上的所有特征點得到集合,同時通過 MN-YOLOv5得到圖像中目標檢測框的集合,見式(1):
其中是第k幀圖像中的第m個特征點,是第k幀圖像中的第n個目標檢測框。若目標檢測框為人或動物,且,則判定為先驗動態點。由此可得到動態特征點集合和靜態特征點集合由于目標檢測框為矩形,框內的特征點除了動態目標外還存在其他靜態特征點,如果一并剔除會導致 SLAM 系統匹配的特征點大幅度減少,不利于定位精度,因此引入光流法對動態特征點進行判斷剔除。
1.3.2 基于 LK 光流法的動態特征點剔除
首先運用 LK 光流法估計先驗靜態點的平均運動矢量,其關鍵在于灰度不變假設,即像素在運動過程中的灰度值恒定,由此可建立方程式(2):
其中等號左邊為t時刻位于 (x,y) 的像素灰度值,右邊為t+dt時刻位于 (x+dx,y+dy) 的像素灰度值,泰勒展開得:
結合式(2)和式(3)可得:
利用最小二乘法,并引入運動一致性約束,可求得每個先驗靜態點的運動矢量,再求平均即可得到背景運動速度U、V:
最后構建不等式(7)判斷集合Dp內特征點是否為動態特征點:
γ為自適應閾值,若不等式不成立,則說明該特征點為靜態特征點,移入靜態特征點集合Sq。最后僅用Sq中的特征點用于特征匹配、相機的位姿估計,其余特征點被剔除。
在原 ORB-SLAM3 系統中的跟蹤線程加入動態特征點剔除模塊,將目標檢測網絡獲取的圖語義信息與提取到的ORB 特征點結合,以獲取先驗特征點,然后引入 LK 光流對先驗特征點進行二次判斷,最終僅利用靜態特征點進行位姿估計,降低動態物體對 SLAM 系統的影響。本文算法框架如圖6 所示。

圖6 本文算法框架
實驗所用設備的性能參數如表 1 所示,操作系統為 Ubuntu18.04,實驗環境為 Python3.6 +Pytorch1.2.1。

表1 實驗設備參數
實驗使用 VOC2007+VOC2012 數據集對 MNYOLOv5 及 YOLOv5 系列進行網絡訓練,訓練均不使用預訓練權重,訓練超參數如表2 所示,使用 SGD 優化器訓練 500 輪次,設置早停機制,若精度在30 個輪次內沒有上升就停止訓練。訓練過程精確率如圖7 所示,明顯 YOLOv5x 收斂最快且精確率最高,YOLOv5l 次之,YOLOv5n 最慢。

表2 訓練超參數

圖7 目標檢測網絡訓練過程的精確率
訓練后采用 VOC 測試集進行性能測試,含4952 張圖片,結果如表3 所示。由表可知,相比于 YOLOv5s,本文提出的 MN-YOLOV5 參數量減少了56.08%,算力要求減少了57.86%,權重文件減少了49.66%,幀率增加了3.03%,精度減少了0.96%,在可接受范圍內提高了系統的運行速度,更容易部署在移動端。

表3 目標檢測網絡測試結果
本文軌跡誤差實驗采用德國慕尼黑工業大學提供的TUM 數據集[11]中的五個圖像序列,使用絕對軌跡誤差和相對軌跡誤差作為評價指標,評估參數有均方根誤差(Root Mean Squared Error,RMSE)、標準誤差(Standard Deviation,STD)和平均值(Mean)。為了驗證本文算法的有效性,對原 ORB-SLAM3 與本文算法進行對比實驗,結果如表4 和表5 所示。由表可知,本文算法在高動態場景walking_xyz、walking_half 中表現優異,相較于原 ORBSLAM3 算法誤差下降 90% 以上,而在靜止場境 sitting_static 中,誤差下降不明顯甚至還有輕微上升。這表明ORB-SLAM3 在靜態環境中的確是一個定位精度高的系統,但是無法在高動態環境中實現魯棒運行,而本文算法在動態場景中仍能保持較小的定位誤差,證實適合應用于動態環境的位姿估計。

表4 ORB-SLAM3 與本文算法的絕對軌跡誤差對比

表5 ORB-SLAM3 與本文算法的相對軌跡誤差對比
本文提出了一種基于MN-YOLOv5 的動態視覺SLAM算法,使用輕量級網絡 MobileNetV3 替換目標檢測網絡YOLOv5s 的主干網絡,并加入 SE 注意力機制,構建 MNYOLOv5 輕量級目標檢測網絡,改進后模型參數減少了56.08%,能更好地在移動端運用。將 LK 光流法與MNYOLOv5 目標檢測網絡結合,加入 ORB-SLAM3 系統的跟蹤線程,用于剔除動態特征點。實驗結果表明,在動態場景中本文算法可實現低誤差定位,相較于原 ORB-SLAM3 算法,位姿估計的均方根誤差下降了90% 以上。因此,本文提出的動態視覺 SLAM 算法具有較好的實際應用前景。接下來的工作將有兩個前進方向:繼續改進目標檢測網絡,提升網絡的精確率;考慮引入基于多視圖幾何的動態目標檢測,加強系統對動態點的識別能力。