林中文,曾 碧,劉建圻,溫俊斌,江 明
(廣東工業大學 計算機學院,廣州 510006)
國內外諸多學者對視覺同步定位、建圖(SLAM)[1]、視覺里程設計 (VO)[2]進行了大量研究,已經產生了許多優秀的方法[3-6],其中較好的RGB-D SLAM算法有ORB-SLAM2[7]、InfiniTAM v3[8]、BAD-SLAM[9]等。ORB-SLAM2和BAD-SLAM采用基于二進制特征的詞袋模型[10]完成回環檢測和重定位工作,InfiniTAM v3則采用隨機蕨類算法(FERNS)[11]。這些基于局部場景外觀的特征對于視點變化的不變性比較有限。在發生相機劇烈運動或長期遮擋的時候,往往歷史觀察到的場景表面此時不再可見,這些低級特征很難與丟失幀之間構建聯系。而在AR或無人機等應用場景中,經常發生劇烈運動和長期遮擋的情況。
為了解決上述問題,學者們開始引入可觀性更強、在場景中較為固定的物體對象作為新的特征。Qian等[12]在回環檢測中引入目標檢測獲得的物體語義,但僅用3D 語義共視子圖來檢查以避免誤報,閉環候選幀仍是用基于場景外觀的方法獲取的。Weinzaepfel等[13]提出了一種使用查詢圖像中存在的對象與參考圖像中的對象之間的密集 2D-3D 對應關系計算相機姿態的方法,但這種方法僅限于平面物體。Qin 等[14]將檢測到的物體的語義信息與幾何信息相結合,為每一幀建立子圖,尋找最佳語義子圖匹配來完成回環檢測。然而,這種方法使用的是二維圖像上的拓撲關系,易受視點影響,在大視差環境下表現不佳。
在過去幾年中,物體檢測領域取得了令人矚目的進展[15-18],物體的位置、旋轉、尺寸成了可估算的信息,這為視覺重定位任務帶來了更多的約束信息。Gaudilliere 等[19-20]根據目標檢測的結果以及場景中物體信息,利用從光心出發的射線與橢球相切,在投影平面上形成橢圓,在給定橢圓的長短軸向量、中心位置和橢球的方向、長短軸的情況下,計算橢球和相機位置。但這種方法僅使用了少數橢球進行運算,并假設一個預先構建的橢球地圖,此外,前者僅能計算相機位置,并且假定方向是已知的。Zins等[21]在傳統統目標檢測的基礎上,通過重建場景額外訓練網絡,在方框檢測框的基礎上生成橢圓檢測框,進而估計橢球,通過橢圓中心點的P3P算法恢復相機位姿。Li等[22]則使用立方體對物體進行建模,通過對立方體在圖像上投影與檢測框一致性約束求解相機位姿。Ming等[23]借助神經網絡直接對3d對象進行立方體估計,使用NOCS提取對象的6-Dof位姿等信息,基于絕對定向估計的方法求解相機位姿,但NOCS需要耗費較大的計算資源。
針對上述問題,本文提出了一種運用于RGB-D相機的大視差變化環境下,基于橢球語義對象的相機重定位方法。主要貢獻如下:
1)提出了一種基于對象共視圖和語義特征相似度的語義觀測與橢球語義對象之間的數據關聯方法。
2)提出了一種基于橢球語義對象的重定位方法。結合了橢球語義對象和深度點云信息,能從大視角變化的相機丟失幀中準確估計相機位姿。
3)設計了詳細實驗方案,結果表明,該方法在公開數據集上的表現優于傳統的基于場景外觀的重定位方法:在視角變化較大的環境下仍有較高的重定位成功率;在真實室內環境中更具魯棒性;算力需求相比基于深度學習的方法更低,足以滿足低算力設備運行的實時性需求。
本文提出的基于橢球語義對象的相機重定位方法,旨在運用RGB-D相機完成桌面環境下,大視差跟蹤丟失時的相機重定位。本方法的核心SLAM框架是基于一個帶有稠密建圖能力的ORB-SLAM2。假設相機已完成內參標定,且對每一個RGB圖像幀,通過YOLOv3目標檢測算法,獲取到了一組語義檢測{bi}。圖1展示了本方法的計算流程。

圖1 系統計算流程框圖
算法實現步驟如下所示:
步驟1對RGB圖像進行特征提取并跟蹤,如跟蹤失敗則跳轉至步驟5進行相機重定位,成功則進入下一步。
步驟2對語義檢測{bi}和完成橢球估計的對象{qj}進行數據關聯,對無法數據關聯的語義檢測進行對象的初始化,即單幀橢球估計。

步驟4使用前面檢測到的語義信息、SLAM跟蹤獲得的視覺里程計和地圖對象,對相機位姿和對象地圖進行優化。
步驟5通過橢球語義對象位置信息進行相機的重定位,獲得一個相機的初始位姿,接著結合稠密地圖和地圖對象通過迭代最近點(iterative closest point,ICP)算法對相機位姿進行優化。
由于本文的側重點在于視覺重定位,所以,相機跟蹤、稠密建圖、回環檢測等部分均使用ORB-SLAM2的內容。下面將對對象建圖和基于物體的重定位部分詳細闡述。
一般而言,在室內環境中的物體都垂直放置在一個平面上,這個平面一般是一個與重力垂直的平面(如地面、桌面等)。
首先,使用基于RANSAC的方法[24],在深度圖像中進行平面提取,通過2個閾值過濾掉無效的平面:① 平面法向量和重力之間的夾角必須小于閾值T1,重力方向可由慣性測量單元(inertial measurement unit,IMU)獲得;② 構成平面的點的個數必須大于T2。將所有滿足條件的平面保存在一個集合S中。




(1)

(2)

城市地鐵修筑時,不可避免的存在新建地鐵工程與其他結構(既有線、橋樁、建筑基礎以及地下管線等)相互影響[1],近距離甚至“極小間距”穿越工程問題凸顯,一般作為工程重點風險源特殊對待,其設計和施工難度極大。
閾值T1、T2、T3、T4需根據相機參數進行調整。

這2個對稱平面滿足如下條件:
1) 由于假定所有物體垂直放置在支持平面上,所以,物體的2個對稱平面應當分別與支持平面平行和垂直;
定義Qi為橢球的點參數形式,對于一個待估計的橢球Qi,應該盡可能包含點云Ci中的所有點,則橢球體的估計問題可以建模為以下式(3)的最小二乘問題。
(3)

對于連續多幀的觀測,通過檢驗上一幀檢測框中心是否落在新一幀的檢測框內和檢測標簽的一致性來跟蹤對象。在相機運動相對緩慢且對象短期內能持續被觀測到時,這種關聯方式是可行的。但在相機運動幅度較大或離開相機視野的對象被重新觀測到時,將無法確定對象與檢測框之間關聯的數據。
本文算法類似于ORB-SLAM,對檢測框中的圖像進行ORB特征點的提取,然后將每個檢測框中提取到的ORB特征點轉換為BoW向量。特別地,為了保證每個詞匯都是唯一適合區分特定對象類別的圖像內容,本方法為每一個可能出現的對象類別單獨創建一個詞匯表。
在獲得了當前幀語義觀測bi的BoW向量與候選對象qj后,開始計算語義檢測和每個候選對象之間的數據關聯分數。首先,計算當前幀語義觀測bi的BoW向量與候選對象qj中保存的歷史BoW向量的相似度。其中相似度的計算如式(4)所示。
(4)
式中:v1、v2表示2個BOW向量。
對于每一個候選對象qj,本方法遍歷所有具有觀測的關鍵幀,計算當前幀語義觀測bi的BoW向量和候選對象qj所有歷史觀測的BoW向量的相似度,將其中的最大分數定義為語義觀測bi和候選對象qj之間的數據關聯分數cij。對于每一對語義觀測bi和候選對象qj,定義變量xij,用于描述兩者之間是否存在數據關聯:

(5)
于是數據關聯問題可以建模為一個整數優化問題,如式(6)所示。
(6)
由于每個語義觀測bi最多與一個對象相互關聯,且每個候選對象qj也最多只能與一個語義觀測相互關聯,所以式(6)還應同時滿足以下約束:
(7)
類似于ORB-SLAM2,本方法結合RGB-D圖像中的物體對象提供的語義觀測,將SLAM問題建模為以下的非線性優化問題:
(8)
式中:Ζ={ζi}是一組語義關鍵幀的位姿集合;Q={Qi}是地圖對象的集合;H為Huber核函數;fv為視覺里程計約束,如同ORB-SLAM2一樣,將其定義為:
(9)

fo是相機-對象的觀測約束,類似于CubeSLAM[18],觀測約束由2個部分組成:三維測量約束和二維測量約束,如式(10)所示。
H(fo)=H(fo1)+H(fo2)
(10)

(11)
式中:v(Q)=[x,y,z,xroll,xpitch,xyaw,a,b,c]T為橢球體平移、旋轉、尺寸的矢量表達。

(12)


圖3 二維測量約束示意圖
給定一個丟失幀,將單幀橢球體估計的對象與對象地圖中的對象對齊,估計相機在世界坐標系中的位姿。首先,通過1.3節所述的數據關聯算法獲得語義檢測和地圖對象之間的數據關聯。特別地,基于對象的重定位算法,至少需要3個匹配對象才能正常工作,在匹配對象小于3個時,重定位失敗。此時,先通過1.2節所述的單幀橢球體估計算法計算丟幀語義觀測對應物體的橢球體表示;接著,通過對齊這2個對象集合,以估計相機位姿,具體地,重定位算法包括2個步驟:① 通過對齊丟失幀和對象地圖中的橢球體中心,確定相機的初始位姿;② 通過ICP算法將對象中心、深度點與地圖中的相應值對齊,優化相機位姿。

(13)


(14)

本文所有實驗都在處理器型號為i5-1035G1 1.19 GHz,操作系統為Ubuntu 18.04的電腦上運行,算法在ORB-SLAM2的基礎上運用C++實現,使用機器人操作系統(robot operating system,ROS)進行實驗驗證。使用的數據集是由文獻[23]中提供的一個桌面環境的RGB-D數據集OR10,其中包含10個場景復雜程度不一的桌面場景。事前通過YOLOv3算法對數據集中所有的RGB圖像幀進行語義檢測,從而獲取物體檢測框。
本文在全部的10個場景上進行算法運行耗時實驗(圖4),場景中物體種類最多不超過10種,物體數目不超過15個,最大尺寸物品為筆記本電腦,部分場景如圖4所示,包括10個以上對象,且包含4組相同類別的對象組合。關鍵模塊的平均耗時如表1所示,可以滿足實時運行需求。

圖4 OR10數據集實驗場景圖

表1 關鍵模塊平均耗時 ms
如圖5所示,數據關聯的核心在于找到RGB圖像中語義觀測對應的地圖對象。本文從數據集中抽選出部分關鍵幀,作為語義關鍵準確性的實驗數據集。實驗結果顯示,數據關聯算法的準確率為93.07%。其中錯誤關聯主要分為2類:① 存在45個錯誤分配,是因為YOLOv3將不同的對象類別分配給了同一個對象,造成了對象的重復初始化;② 出現8個錯誤分配,是由地場景中存在如圖5中杯子1和5一樣的情況,相機同時觀測到了多個完全一樣的對象,兩者的數據關聯分數相同,算法對相同對象的表現不佳,造成了錯誤匹配。實驗場景中復數出現的相同對象并不罕見,對于相同對象的錯誤匹配僅占小部分。在出現相同的數據關聯分數時,如果圖像觀測中存在其他類別的物體,則可以根據候選匹配對象和其他類別對象之間的距離作為新的約束,距離誤差較小的為最佳匹配對象;如果場景中不存在其他物體,但圖像觀測的物體數量在3個以上,則以物體之間的距離作為搜索條件,在對象地圖中進行圖形匹配,尋找最優子圖匹配完成對象語義關聯;在觀測物體數小于3的情況下,觀測不足以支撐區分相同的數據關聯分數,這時應放棄對該對象的數據關聯。

圖5 數據關聯示意圖
圖6展示了算法在桌面環境中的效果。可以看到,本文的算法生成的對象模型在地圖中的全局定位良好,橢球完整地包絡住了觀測物體。算法對2個塑料瓶的建模效果不佳,這是因為物體材質導致RGB-D相機深度獲取不準確,對于陶瓷類透光性不好的材質,能準確建模。值得注意的是,該場景中包含了大量相同類別的物體,其中部分物體完全一致。這對于數據關聯算法而言是一個挑戰,但算法仍然很好地完成了這項任務。表明本文算法在相機低速運動時,環境中的相同物體并不會跟蹤丟失對象。

圖6 對象地圖
本文使用的重定位數據分為2個部分:地圖構建段和重定位段。具體來說,對于每一個場景,首先按照場景數據錄制順序截出一部分數據,一般是100幀,用于初始的地圖構建,接著在相機運動視差較大的時刻,按順序截取100幀作為重定位段,用于模擬遮擋后的相機跟蹤。一個完整的重定位數據集有2~3個重定位段,即地圖構建段-重定位段-重定位段。本文方法與2種基于場景外觀的方法進行了比較。這2種方法分別是ORB-SLAM2所使用的基于詞袋的方法和InfiniTAM v3的隨機蕨類算法。算法性能由重定位段中重定位成功的幀數決定。將估計結果與ground truth對比,若平移誤差小于5 cm,旋轉誤差小于5°,則判定重定位成功。這個重定位判別標準是參考其他論文工作標準給定的,如文獻[11,23]采用的標準。
圖7展示了本文方法與其他2種方法的性能比較,其中(a)和(b)為本文方法比基于詞袋和隨機蕨方法在每個場景下取得的重定位成功率提高程度。在場景復雜程度中等且重定位段與建圖段視差較大的01、04、05、07場景中,基于場景外觀的方法所使用的外觀特征基本不完整甚至不可見,相較之下,物體在場景中仍然是可見且觀測完整的,這為重定位提供了一個穩定可靠的路標,使本文方法在基于外觀的方法重定位失敗的情況下,仍然有著較高的重定位成功率。

圖7 重定位實驗結果示意圖
圖8展示了2個本文算法在重定位視差較大的場景定位成功的例子,其中(a)為Scene04中的場景,3個重定位段和地圖構建段的視差分別為30°、90°、180°,左側1、2、3分別為對應本文算法在重定位段的跟蹤軌跡;(b)為Scene07中的場景,3個重定位段和地圖構建段的視差分別為30°、60°、60°,左側1、2、3分別對應本文算法在重定位段的跟蹤軌跡。
在場景較為簡單,重定位視差較小的02、03、08場景中,本文方法雖然在02和03場景中,還有較高重定位成功率,但要略低于隨機蕨方法。本文方法在02場景下的性能下降的主要原因為:02場景如圖6所示,相同物體較多且分布密集,錯誤的數據關聯過多導致重定位成功率下降。而在03場景中,由于地圖構建段是在一個較高的俯視角度拍攝的,場景的RGB-D紋理被完整地觀測到,這對于隨機蕨方法相當有利,而本文方法受限于橢球體建模精度,相對重定位成功率較低。而在08場景中,本文算法表現出了異常的性能下滑,通過分析,可能是顯示屏幕反射對RGB-D相機產生了干擾,導致深度點云獲取不準確,影響了橢球體估計結果,使重定位失敗。
在場景復雜程度較高且視差較大的05、06、07、09場景中,本文方法仍然有遠高于其他算法的重定位成功率。但在09場景中,本方法性能下滑較為嚴重,其主要原因在于場景復雜程度較高,物體擺放得較為密集,如圖9(b)所示。部分物體40%以上部分不可見,橢球體構建存在較大誤差,因而重定位效果不佳。06場景也有類似的問題,但相對09場景物體擺放要更松散,因此,本文在06場景中還有較高的重定位成功率。總體來說,本文方法對于物體分布比較松散且物體受遮擋程度較低的場景,有著較好的重定位效果。

圖8 重定位效果圖

圖9 性能較差場景圖
本文提出了一種基于對象的RGB-D重定位方法,能夠在構建地圖的數據存在較大視差的場合實現單幀重定位。消除了傳統基于場景外觀的方法在大幅運動使相機跟蹤丟失后,難以重定位的缺點。與基于深度學習的方法相比,本文算法所需算力更低,能夠在AR設備上使用。下一步可以結合單幀估計的結果,進一步提高數據關聯的成功率,改善算法在相似對象較多的環境中的魯棒性。