翻譯:ORB-SLAM: a Versatile and Accurate Monocular SLAM System
本文為ORB-SLAM的翻譯,轉載自:http://qiqitek.com/blog/?p=102
ORB-SLAM: a Versatile and Accurate Monocular SLAM System(文章已發表,有版權)
Taylor Guo, 2016年3月18日-9:00
原文發表於
摘要:
本文主要講了ORB-SLAM,一個基於特徵識別的單目slam系統,可以實時執行,適用於各種場合,室內的或者室外的,大場景或小場景。系統具有很強的魯棒性,可以很好地處理劇烈運動影象、可以有比較大的餘地自由處理閉環控制、重定位、甚至全自動位置初始化。基於近年來的優秀演算法,我們對系統做了精簡,採用了所有SLAM相同功能:追蹤,地圖構建,重定位和閉環控制。選用了比較適合的策略,地圖重構的方法採用雲點和關鍵幀技術,具有很好的魯棒性,生成了精簡的、可追蹤的地圖,當場景的內容改變時,地圖構建可持續工作。我們用最流行的影象資料集測試了27個影象序列。相比最新的單目SLAM,ORB SLAM效能優勢明顯。我們在網站上公佈了原始碼。
一 簡介
由於比較強的匹配網路和初始化位置估計,BA廣泛應用於相機位置的準確估計和離散幾何重構。在一段比較長的時間裡,這種方法被認為不適合實時影象系統,比如vSLAM。vSLAM系統在構建環境的同時需要估計相機的軌跡。基於現有的硬體裝置,現在可以獲得比較好的計算結果,將BA應用於實時SLAM系統中:
- 在候選影象幀子集中(關鍵幀)匹配觀測的場景特徵(地圖雲點)。
- 由於關鍵幀數量的增長,需要做篩選避免冗餘。
- 關鍵幀和雲點的網路配置可以產生精確的結果,也就是,分佈良好的關鍵幀集合和有明顯視差、大量閉環匹配的觀測雲點。
- 關鍵幀和雲點位置的初始估計,採用非線性優化的方法。
- 在構建區域性地圖的過程中,優化的關鍵是獲得良好的穩定性。
- 本系統可以實時執行快速全域性優化(比如位置地圖)閉環迴路。
B A出現於PTAM中,第一次實時應用是視覺里程。儘管受制於小場景的應用,這個演算法對關鍵幀的選擇,特徵匹配,雲點三角化,每幀相機位置估計,追蹤失敗後的重定位非常有效。不幸的是幾個關鍵因素限制了它的應用:缺少閉環控制和足夠的阻塞處理,較差的檢視不變特性和在形成地圖過程中需要人工干預。
為了完成這些工作,我們採用的技術來源於,PTAM、place recognization、scale-aware loop closing和大場景的檢視關聯資訊。
單目ORB SLAM系統包含:
- 對所有的任務採用相同的特徵,追蹤、地圖構建、重定位和閉環控制。這使得我們的系統更有效率、簡單可靠。ORB特徵,在沒有GPU的情況下可以應用於實時影象系統中,具有很好的旋轉不變特性。
- 可應用於實時戶外環境操作。由於其檢視內容關聯的特性,追蹤和地圖構建可在區域性檢視關聯中處理,這可以獨立於全域性檢視進行工作。
- 基於位置優化的實時閉環控制,我們稱作Essential Graph。它通過生成樹構建,生成樹由系統、閉環控制連結和檢視內容關聯強邊緣進行維護。
- 實時相機重定位具有明顯的旋轉不變特性。這就使得跟蹤丟失可以重做,地圖也可以重複使用。
- 選擇不同的模型可以建立不同的平面或者非平面的初始化地圖;自動的、具有良好魯棒性的初始化過程也是基於模型而選擇。
- 大量地圖雲點和關鍵幀,需要經過嚴格的挑選,必須找到一個最合適的辦法。好的挑選方法可以增強追蹤的魯棒性,同時去除冗餘的關鍵幀 以增強程式的可操作性。
我們在公共資料集上對程式在室內和室外環境進行了評估,包括手持裝置、汽車和機器人。相機的位置比現在最新的方法更精確,它通過畫素擴充套件集進行優化、而不是特徵的重對映。我們還討論了提高基於特徵的方法的準確性的原因。
閉環控制和重定位的方法是基於我們之前的工作論文11。系統最初的版本是論文12。本文中我們添加了初始化的方法,Essential graph 和其他方法。我們詳細了描述了系統的各個板塊,並且做了實驗進行驗證。就我們所知,這是目前最完整最可靠的單目SLAM系統。視訊演示和原始碼放在我們的專案網站上。
二 相關工作
A. 位置識別
論文13比較幾種基於影象處理技術的位置識別的方法,其中有影象到影象的匹配,在大環境下比地圖到地圖或影象到地圖方法尺度特性更好。影象方法中,詞袋模型的效率更高,比如基於概率論的FAB-MAP。由BRIEF特徵描述子和FAST特徵檢測產生的二進位制詞袋可以用DBoW2獲得。與SURF和SIFT相比,它的特徵提取運算時間減小一個數量級。儘管系統執行效率高、魯棒性好,採用BRIEF不具有旋轉不變性和尺度不變性,系統只能執行在平面軌跡中,閉環檢測也只能從相似的視角中獲得。在我們之前的工作中,我們用DBoW2生成了基於ORB的詞袋模型位置識別器。ORB是具有旋轉不變和尺度不變特性的二進位制特徵,它是一種高效的具有良好針對檢視不變的識別器。我們在4組不同的資料集上演示了位置識別功能,複用性好,魯棒性強,從10K影象資料庫中提取一個候選閉合迴路的運算時間少於39毫秒。在我們的工作中,我們提出了一種改進版本的位置識別方法,採用內容相關的檢視,檢索資料庫時返回幾個前提而不是最好的匹配。
B. 地圖初始化
單目SLAM通過影象序列生成初始化地圖,單一影象並不能重建深度圖。解決這個問題的一種方法是一開始跟蹤一個已知的影象結構。在濾波方法中,用概率論方法從逆深度引數方法得到深度圖中,初始化地圖雲點,與真實的位置資訊融合。論文10中,採用類似的方法初始化畫素的深度資訊得到隨機數值。
通過兩個區域性平面場景檢視進行初始化的方法,從兩個相關相機(檢視)位姿進行3D重構,相機的位姿關係用單對映表示,或者計算一個基本矩陣,通過5點演算法構建平面模型或者一般場景模型。兩種方法都不會受到低視差的約束,平面上的所有的點也不需要靠近相機中心。另外,非平面場景可以通過線性8點演算法來計算基本矩陣,相機的位姿也可以重構。
第四章詳細講述了一個全新的自動方法,它基於平面單對映或非平面的基本矩陣。模型選擇的統計方法如論文28詳細描述。基於相似變換理論,我們開發了初始化演算法,選擇退化二次曲線例子中基本矩陣,或單對映矩陣。在平面例子中,為了程式穩定性,如果選擇情況模糊不清,我們儘量避免做初始化,否則方案可能崩潰。我們會延遲初始化過程,直到所選的方案產生明顯的視差。
C. Monocular SLAM (單目SLAM)
Mono-SLAM可以通過濾波方案初始化。在這種方案,每一幀都通過濾波器估計地圖特徵位置和相機位姿,將其關聯。處理連續的影象幀需要進行大量運算,線性誤差會累積。由於地圖構建並不依賴於幀率,基於關鍵幀的方法,用篩選的關鍵幀估計地圖,採用精確的BA優化。論文31演示了基於關鍵幀的地圖方法比濾波器方法在相同的運算代價上更精確。
基於關鍵幀技術最具代表性的SLAM系統可能是PTAM。它第一次將相機追蹤和地圖構建分開,平行計算,在小型場合,如增強現實領域非常成功。PTAM中的地圖雲點通過影象區塊與FAST角點匹配。雲點適合追蹤但不適合位置識別。實際上,PTAM並不適合檢測大的閉合迴路,重定位基於低解析度的關鍵幀小影象塊,對檢視不變性較差。
論文6展示了大場景的單目SLAM系統,前端用GPU光流,用FAST特徵匹配和運動BA;後端用滑動視窗BA。閉環檢測通過7自由度約束的相似變換位姿圖優化,能夠校正單目系統中的尺度偏移。我們採用這種7自由度的位姿圖優化方法,應用到我們的Essential Graph方法中,如第三章D節裡面詳細描述。
論文7用,PTAM的前端,通過內容相關的檢視提取區域性地圖執行追蹤。他們使用兩個視窗優化後端,在內部視窗中採用BA,在外部一個限制大小的視窗做位姿圖。只有在外部視窗尺寸足夠大可以包含整個閉環迴路的情況下,閉環控制才能起作用。我們採用了基於內容相關的檢視構建區域性地圖的方法,並且通過內容相關的檢視構建位姿圖,同時用它們設計前端和後端。另一個區別是,我們並沒有用特別的特徵提取方法做閉合迴路檢測(比如SURF方法),而是在相同的追蹤和建圖的特徵上進行位置識別,獲得具有魯棒性的重定位和閉環檢測。
論文33 提出了CD-SLAM方法,一個非常複雜的系統,包括閉環控制,重定位,動態環境、大場景下執行。但它的地圖初始化並沒有講。所以沒法做精確性、魯棒性和大場景下的測試對比。
論文34的視覺里程計方法使用了ORB特徵做追蹤,處理BA後端滑動視窗。相比之下,我們的方法更具一般性,他們沒有全域性重定位,閉環迴路控制,地圖也不能重用。他們使用了相機到地面的真實距離限制單目尺度漂移。
論文25與我們之前的工作論文12一樣,也採用的相同的特徵做追蹤,地圖構建和閉環檢測。由於選擇BRIEF,系統受限於平面軌跡。從上一幀追蹤雲點,訪問過的地圖不能重用,與視覺里程計很像,因此係統不能擴充套件。我們在第三章E小節裡面定性地做了比較。
論文10裡的LSD-SLAM,可以構建大場景的半稠密地圖,特徵提取並沒有採用BA方法,而是直接方法(優化也是直接通過影象畫素)。沒有用GPU加速,構建了半稠密地圖,可以執行在實時應用中,非常適合機器人應用,比其他基於特徵的稀疏地圖SLAM效果好。但它們仍然需要特徵做閉環檢測,相機定位的精度也明顯比PTAM和我們的系統慢,我們將在第8章B小節演示實驗結果。在IX章B小節進行討論。
論文22提出了介於直接方式和基於特徵的方法之間的半直接視覺里程SVO方法。不需要每幀都提取特徵點,可以執行在較高的幀率下,在四軸飛行器上效果很好。然而,沒有閉環檢測,而且只使用了視角向下的攝像頭。
最後,我們想討論關鍵幀的選擇。所有的的視覺SLAM用所有的雲點和影象幀執行BA是不可行的。論文31在保留了儘可能多地非冗餘關鍵幀和雲點,價效比較高。PTAM方法非常謹慎插入關鍵幀避免運算量增長過大。這種嚴格限制關鍵幀插入策略可能在未知地圖追蹤使失敗。比較好的策略是在不同的場景下快速插入關鍵幀,然後再移除那些冗餘的影象幀,避免額外的運算成本。
三 系統架構
A. 特徵選擇
我們系統設計的中心思想是對這些功能採用相同的特徵,構建地圖、追蹤、位置識別、基於影象幀率的重定位和閉環迴路檢測。這使得我們的系統更有效率,沒有必要極化特徵識別的深度圖,如論文6,7裡討論的。我們每張影象的特徵提取遠少於33毫秒,SIFT(~300ms),SURF(~300ms),A-KAZE(~100ms)。為了獲得一般性的位置識別方法,我們需要特徵提取的旋轉不變性,而BRIEF和LDB不具備這樣的特性。
我們選擇了我們選擇了ORB,它是旋轉多尺度FAST角點檢測具有256位特徵描述子。他們計算和匹配的速度非常快,同時對視角具有旋轉不變的特性。這樣可以在更寬的基準線上匹配他們,增強了BA的精度。我們已經在論文11中演示了ORB位置識別的效能。本文的方案中也採用ORB。
B. 三個執行緒:追蹤、區域性地圖構建和閉環控制
我們的系統如圖一所示,整合了三個並行的執行緒:追蹤、區域性地圖構建和閉環迴路控制。追蹤通過每幀影象定位相機位置,決定什麼時候插入一個新的關鍵幀。我們先通過前一幀影象幀初始化特徵匹配,採用運動B A優化位姿。如果追蹤丟失,位置識別模組執行全域性重定位。一旦獲得最初的相機位姿估計和特徵匹配,通過內容相似檢視的關鍵幀提取一個區域性視覺化地圖,如圖2a,b所示。然後進行對映搜尋區域性地圖雲點的匹配,根據匹配優化相機位姿。最後,追蹤執行緒覺得是否插入新的關鍵幀。所有的追蹤步驟將在第5章詳細解釋。建立初始化地圖將在第4章進行說明。
區域性地圖構建處理新的關鍵幀,在相機位姿的環境中執行區域性BA優化重構。根據互動檢視中已經連線的關鍵幀,搜尋新關鍵幀中未匹配的ORB特徵的對應關係,來三角化新的雲點。有時儘管已經建立了新的雲點,基於追蹤執行緒過程中新收集的資訊,為了獲得高質量的雲點,根據雲點篩選策略可能會臨時刪除一些點。區域性地圖構建也負責刪除冗餘關鍵幀。我們將在第6章詳細說明區域性地圖構建的步驟。
對每個新的關鍵幀都要進行閉環搜尋,以確認是否形成閉環。如果閉環被偵測到,我們就計算相似變換來檢視閉環的累積誤差。這樣閉環的兩端就可以對齊,重複的雲點就可以被融合。最後,相似約束的位姿圖優化確保全域性地圖一致性。本文主要通過關鍵影象(Essential Graph)進行優化,它是一個互動檢視中離散的子影象,第三章D小節詳細描述。閉環檢測和校驗步驟將在第7章詳細描述。
我們使用g2o庫中的Levenverg-Marquardt演算法執行全域性優化。我們在附錄中描述了每個優化的誤差,計算成本和變數。
C. 地圖雲點、關鍵幀和選擇標準
每個地圖雲點pi儲存:
- 它在世界座標系中的3D位置Xw,i
- 檢視方向ni,也就是所有檢視方向的平均單位向量(這個方向是以觀察關鍵幀的光學中心到雲點的方向)
- ORB特徵描述子Di,已經觀測到雲點的關鍵幀與它關聯的所有其他特徵描述子相比,它漢明距離最小
- 根據ORB特徵尺度不變性約束,可觀測的雲點的最大距離dmax和最小距離dmin
每個關鍵幀Ki儲存:
- 相機位姿Tiw,從世界座標轉換成相機座標
- 相機內參,包括主點和焦點距離
- 所有從影象幀提取的ORB特徵,不管是否已經關聯了地圖雲點,雲點的座標經過校準模型矯正過
地圖雲點和關鍵幀通過多重策略建立,在稍後挑選機制上將檢測冗餘的關鍵幀和錯誤匹配的雲點或不可追蹤的地圖雲點。系統在執行的過程中,地圖擴充套件的彈性就比較好,在比較惡劣的環境下(比如檢視旋轉,快速移動)還是需要增強魯棒性,在同一環境的重複訪問情況下地圖的大小是有限的,可以控制的。另外,與PTAM相比,由於包含的雲點比較少,我們的地圖包含的無效資料也更少一些。地圖雲點和關鍵幀的篩選過程將在第6章B節和E節分別解釋。
D. 內容關聯檢視和重要檢視
關鍵幀之間的檢視內容相關資訊在系統的幾個功能上都非常有用,如論文7所述,它表示了一個間接的權重影象。每個節點都是一個關鍵幀,關鍵幀之間存在一個邊緣,幀上面可以觀察到相同的地圖雲點(至少有15個),對於邊緣上相同的雲點的數量我們賦予權重θ。
為了矯正閉環迴路,我們像論文6那樣做位姿圖優化,優化方法將閉環迴路的誤差分散到影象裡。為了排除內容相關檢視的邊緣,可能非常密集,我們構建了關鍵影象(Essential Graph)保留所有的節點(關鍵幀),但是邊緣更少,這可以保持一個比較強的網路以獲得精確的結果。系統增量式地構建一個生成樹,從第一個關鍵幀開始,它連線了邊緣數量最少的內容相關檢視的子影象。當新的關鍵幀插入時,它加入樹中連線到老的關鍵幀上,新舊關鍵幀具有最多的相同的雲點,但一個關鍵幀通過篩選策略刪除時,系統會根據關鍵幀所在的位置更新連結。關鍵影象(Essential Graph)包含了一個生成樹,具有高檢視相關性(θmin=100)的相關檢視的邊緣子集,閉環迴路邊緣產生一個相機的強網路。圖2是一個相關檢視的例子,生成樹和關聯的關鍵影象。第8章E節的實驗裡,執行位姿圖優化時,方案效果精確BA優化幾乎沒有增強系統效果。關鍵影象的效果和θmin的效果如第8章E節所示。
E. 基於影象詞袋模型的位置識別
採用DBoW2,系統嵌入了影象詞袋位置識別模組,執行閉環檢測和重定位。視覺單詞離散分佈於特徵描述子空間,視覺單片語成視覺字典。視覺字典是離線建立的,用ORB特徵描述子從大量影象中提取。如果影象都比較多,相同的視覺字典在不同的環境下也能獲得很好的效能,如論文11那樣。系統增量式地構建一個數據庫,包括一個逆序指標,儲存每個視覺字典裡的視覺單詞,關鍵幀可以通過視覺字典檢視,所以檢索資料庫效率比較高。當關鍵幀通過篩選程式刪除時,資料庫也會更新。
關鍵幀在檢視上可能會存在重疊,檢索資料庫時,可能不止一個高分值的關鍵幀。DBoW2認為是影象重疊的問題,就將時間上接近的所有影象的分值相加。但這並沒有包括同一地點不同時間的關鍵幀。我們將這些與內容相關檢視的關鍵幀進行分類。另外,我們的資料庫返回的是分值高於最好分值75%的所有關鍵幀。
詞袋模型表示的特徵匹配的另外一個優勢在論文5裡詳細介紹。如果我們想計算兩個ORB特徵的對應關係,我們可以通過暴力匹配視覺字典樹上某一層(6層裡面選第2層)的相同節點(關鍵幀)裡的特徵,這可以加快搜索。在閉環迴路檢測和重定位中,我們通過這個方法搜尋匹配用作三角化新的雲點。我們還通過方向一致性測試改進對應關係,具體如論文11,這可以去掉無效資料,保證所有對應關係的內在方向性。
四 全自動地圖初始化
地圖初始化的目的是計算兩幀之間的相關位姿來三角化一組初始地圖雲點。這個方法與場景影象不相關(平面的或一般的)而且不需要人工干預去選擇一個好的兩個檢視對應關係,比如具有明顯視差。我們建議平行計算兩個幾何模型,平面檢視的單對映和非平面檢視的基本矩陣。我們用啟發式的方法選擇模型,並從相關位姿中進行重構。當個檢視之間的關係比較確定時,我們才發揮作用,檢測低視差的情況或已知兩部分平面模糊的情況(如論文27所示),避免生成一個有缺陷的地圖。這個演算法的步驟是:
1.查詢最初的對應關係:
從當前幀Fc提取ORB特徵(只在最好的尺度上),與參考幀Fr搜尋匹配Xc <-->Xr。如果找不到足夠的匹配,就重置參考幀。
2.平行計算兩個模型:
在兩個執行緒上平行計算單對映Hcr和基本矩陣Fcr:
Xc=HcrXr XcTFcrXr=0 (1)
在《多檢視幾何》裡詳細解釋了分別使用歸一化直接線性變換DLT和8點演算法計算原理,通過RANSAC計算。為了使兩個模型的計算流程儘量一樣,將兩個模型的迭代迴圈次數預先設定成一樣,每次迭代的雲點也一樣,8個基本矩陣,4個單對映。每次迭代我們都給每一個模型M(H表示單對映,F表示基本矩陣)計算一個分值SM:
其中,dcr2和drc2是幀和幀之間對稱的傳遞誤差。TM是無效資料的排除閾值,它的依據是X2的95%(TH=5.99, TF=3.84,假設在測量誤差上有1個畫素的標準偏差)。τ等於TH,兩個模型在有效資料上對於同一誤差d的分值相同,同樣使得運算流程保持一致。
單對映和基本矩陣的分值最高。如果沒有足夠的有效資料,模型沒有找到,演算法流程重啟,從第一步開始重新尋找。
3 . 模型的選擇:
如果場景是平面的,靠近平面有一個低視差,可以通過單對映來描述。同樣地,我們也可以找到一個基本矩陣,但問題不能很好地約束表示,從基本矩陣重構運動場景可能會導致錯誤的結果。我們應該選擇單對映作為重構的方法,它可以從二維影象正確初始化或者檢測到的低視差的情況而不進行初始化工作。另外一方面,非平面場景有足夠的視差可以通過基本矩陣來表示,但單對映可以用來表示二維平面或者低視差的匹配子集。在這種情況下我們應該選擇基本矩陣。我們用如下公式進行計算:
如果RH>0.45 , 這表示二維平面和低視差的情況。其他的情況,我們選擇基本矩陣。
4. 運動和運動結構重構
一旦選擇好模型,我們就可以獲得運動狀態。在單對映的例子中,我們通過論文23的方法,提取8種運動假設。這個方法通過測試選擇有效的方案。如果在低視差的情況下,雲點跑到相機的前面或後面,測試就會出現錯誤從而選擇一個錯的方案。我們建議直接三角化8種方案,檢查兩個相機前面具有較少的重投影誤差情況下,在檢視低視差情況下是否大部分雲點都可以看到。如果沒有一個明確的方案勝出,我們就不執行初始化,重新從第一步開始。這種方法就提供了一個清晰的方案,在低視差和兩個交叉的檢視情況下,初始化程式更具魯棒性,這是我們方案魯棒性的關鍵所在。在基本矩陣的情況下,我們用校準矩陣和本證矩陣進行轉換:
我們通過論文2中的單值分解方法提取四種運動假設。針對單對映,我們三角化四種方案進行重構。
5. 捆集調整
最後我們執行一個全域性捆集調整,如附錄所示,用來優化初始化重構。
圖3所示的論文39,室外環境下初始化工作具有很大挑戰。PTAM和LSD-SLAM初始化二維平面所有云點,我們的方法是有足夠視差才進行初始化,從基本矩陣正確地初始化。
五 追蹤
這章我們詳細介紹追蹤執行緒通過相機影象每一幀執行的具體步驟。相機的位置優化,如前幾步提到的,由區域性捆集調整構成,如附錄中詳細描述。
A. ORB特徵提取
我們在8層影象金字塔,提取FAST角點,尺度因子為1.2。如果影象解析度從512*384到752*480,我們發現提取1000個角點比較合適,如果解析度提高,如KITTI資料集,論文40,我們提取2000個角點。為了確保單對映分佈,我們將每層分成網格,每格提取至少5個角點。檢測每格角點的時候,如果角點數量不夠,就提高閾值。角點的數量根據單元格變化,即使單元格檢測不出角點(沒有紋理或對比度低的情況)。再根據保留FAST的角點計算方向和ORB特徵描述子。ORB特徵描述子用於所有的特徵匹配,而不是像P T A M那樣根據影象區塊關聯性進行搜尋。
B. 前一影象幀作初始位姿估計
如果上一幀的追蹤成功,我們就用同樣的速率運動模型計算相機位置,搜尋上一幀觀測到的地圖雲點。如果沒有找到足夠的匹配(比如,運動模型失效),我們就加大搜索範圍搜尋上一幀地圖雲點附近的點。通過尋找到的對應關係優化相機位姿。
C. 全域性重定位優化初始化位姿估計
如果跟蹤丟失,我們把當前幀轉換成影象詞袋,檢索影象資料庫,為全域性重定位查詢關鍵幀。我們計算ORB特徵和每個關鍵幀的地圖雲點的對應關係,如第三章E節描述。接著,我們對每個關鍵幀執行RANSAC迭代計算,用PnP演算法找出相機位置。如果通過足夠的有效資料找到相機位姿,我們優化它的位姿,搜尋候選關鍵幀的地圖雲點的更多的匹配。最後,相機位置被進一步優化,如果有足夠的有效資料,跟蹤程式將持續執行。
D. 區域性地圖追蹤
一旦我們獲得了相機位姿和一組初始特徵匹配的估計,我們可以將地圖和影象幀對應起來,搜尋更多地圖雲點的對應關係。為了減少大地圖的複雜性,我們只對映區域性地圖。區域性地圖包含一組關鍵幀K1,它們和當前關鍵幀有相同的地圖雲點,與相鄰的關鍵幀組K2影象內容相關。區域性地圖有一個參考關鍵幀Kref∈K1,它與當前幀具有最多相同的地圖雲點。針對K1, K2可見的每個地圖雲點,我們通過如下步驟,在當前幀中進行搜尋:
- 計算當前幀中的地圖雲點對映集x。如果位於影象邊緣外面的點,就丟掉。
- 計算當前檢視射線v和地圖雲點平均檢視方向n的夾角。如果n< cos(60o),就丟掉。
- 計算地圖雲點到相機中心的距離d。如果它不在地圖雲點的尺度不變區間,即d∉【dmin,dmax】,就丟掉。
- 計算每幀影象的尺度因子,比值為d/dmin。
- 對比地圖雲點的特徵描述子D和當前幀中還未匹配的ORB特徵,在尺度因子,和靠近x的雲點作最優匹配。
相機位姿最後通過當前幀中獲得所有的地圖雲點進行優化。
E. 新關鍵幀的判斷標準
最後一步是決定當前幀是否可以作為關鍵幀。區域性地圖構建的過程中有一個機制去篩選冗餘的關鍵幀,我們儘可能快地插入關鍵幀,這可以使跟蹤執行緒對相機的運動更具魯棒性,尤其是旋轉。我們根據以下要求插入新的關鍵幀:
- 每次全域性重定位過程需要超過20個影象幀。
- 區域性地圖構建處於空閒狀態,或者上一個關鍵幀插入時,已經有超過20個關鍵幀。
- 當前幀跟蹤至少50個地圖雲點。
- 當前幀跟蹤少於參考關鍵幀雲點的90%。
與PTAM中用關鍵幀的距離作為判斷標準不同,我們加入一個最小的檢視變換,如條件4要求。條件1 確保一個好的重定位,條件3保證好的跟蹤。當局部地圖構建處於忙狀態(條件2的後半部分)的同時插入關鍵幀的時候,就會發訊號去暫停區域性捆集調整,這樣就可以儘可能快地去處理新的關鍵幀。
六 區域性地圖構建
這章我們將描述根據每個新的關鍵幀Ki構建區域性地圖的步驟。
A. 關鍵幀插入
我們先更新內容相關的檢視,新增節點Ki,更新關鍵幀間具有相同地圖雲點產生的邊緣。我們還要更新生成樹上Ki和其他關鍵幀的連結。然後,計算表示關鍵幀的詞袋,用於資料關聯來三角化新的雲點。
B. 地圖雲點篩選
保留在地圖裡的地圖雲點,在最初建立的3個關鍵幀上,需要經過嚴格的檢測,保證它們可以被跟蹤,不會由於錯誤的資料被錯誤地被三角化。一個雲點必須滿足如下條件:
- 跟蹤執行緒必須要找到超過25%的關鍵幀。
- 如果超過一個關鍵幀完成地圖雲點建立過程,它必須至少是能夠被其他3個關鍵幀可被觀測到。
一旦一個地圖雲點通過測試,它只能在被少於3個關鍵幀觀測到的情況下移除。在區域性捆集調整刪除無效觀測資料的情況下,關鍵幀才能被篩除掉。這個策略使得我們的地圖包含很少的無效資料。
C. 新地圖雲點標準
在內容相關的檢視Kc之間三角化ORB特徵向量,可以建立新的地圖雲點。對Ki中每個未匹配的ORB特徵,和其他關鍵幀中沒有匹配的雲點,我們查詢一個匹配。這個匹配過程在第三章E節詳細解釋,丟掉那些不滿足極對約束的匹配。ORB特徵對三角化後,將要獲得新的雲點,這時要檢查兩個相機檢視的景深,視差,重對映誤差,和尺度一致性。起初,一個地圖雲點通過2個關鍵幀進行觀測,但它卻是和其他關鍵幀匹配,所以它可以對映到其他相連的關鍵幀,按照第5章D節的方法搜尋對應關係。
D. 區域性捆集調整
區域性捆集調整優化當前處理的關鍵幀Ki, 在互動檢視集Kc中所有連線到它的關鍵幀,和所有被這些關鍵幀觀測到的地圖雲點。所有其他能夠觀測到這些雲點的關鍵幀但沒有連線到當前處理的關鍵幀的這些關鍵幀會被保留在優化執行緒中,但會被修復。被標記為無效資料的觀測將在優化中間階段和最後階段被丟棄。附錄有詳細的優化細節。
E. 區域性關鍵幀篩選
為了使重構保持簡潔,區域性地圖構建儘量檢測冗餘的關鍵幀,刪除它們。這會大有幫助,隨著關鍵幀數量的增加,捆集調整的複雜度增加,但關鍵幀的數量也不會無限制地增加,因為它要在同一環境下在整個執行執行操作,除非場景內容發生變化。我們會刪除Kc中所有90%的地圖雲點可以至少被其他3個關鍵幀在同一或更好的尺度上觀測到的關鍵幀。
七 閉環控制
閉環控制執行緒獲取Ki,上一個區域性地圖構建的關鍵幀,用於檢測和閉合迴環。具體步驟如下所示:
A. 候選迴環檢測
我們先計算Ki的詞袋向量和它在檢視內容相關的所有鄰近影象(θmin=30)中計算相似度,保留最低分值Smin。然後,我們檢索影象識別資料庫,丟掉那些分值低於Smin的關鍵幀。這和DBoW2中均值化分值的操作類似,可以獲得好的魯棒性,它計算的是前一幀影象,而我們是使用的內容相關資訊。另外,所有連線到Ki的關鍵幀都會從結果中刪除。為了獲得候選迴環,我們必須聯絡檢測3個一致的候選迴環(內容相關影象中的關鍵幀)。如果對Ki來說環境樣子都差不多,就可能有幾個候選迴環。
B. 計算相似變換
單目SLAM系統有7個自由度,3個平移,3個旋轉,1個尺度因子,如論文6。因此,閉合迴環,我們需要計算從當前關鍵幀Ki到迴環關鍵幀Kl的相似變換,以獲得迴環的累積誤差。計算相似變換也可以作為迴環的幾何驗證。
我們先計算ORB特徵關聯的當前關鍵幀的地圖雲點和迴環候選關鍵幀的對應關係,具體步驟如第3章E節所示。此時,對每個候選迴環,我們有了一個3D到3D的對應關係。我們對每個候選迴環執行RANSAC迭代,通過Horn方法(如論文42)找到相似變換。如果我們用足夠的有效資料找到相似變換Sil,我們就可以優化它,並搜尋更多的對應關係。如果Sil有足夠的有效資料,我們再優化它,直到Kl迴環被接受。
C. 迴環融合
迴環矯正的第一步是融合重複的地圖雲點,插入與迴環閉合相關的相似檢視的新邊緣。先通過相似變換Sil矯正當前關鍵幀位姿Tiw,這種矯正方法應用於所有Ki相鄰的關鍵幀,執行相似變換,這樣迴環兩端就可以對齊。
迴環關鍵幀所有的地圖雲點和它的近鄰對映到Ki,通過對映在較小的區域內搜尋它的近鄰和匹配,如第5章D節所述。所有匹配的地圖雲點和計算Sil過程中的有效資料進行融合。融合過程中所有的關鍵幀將會更新它們的邊緣,這些檢視內容相關的影象建立的邊緣用於迴環控制。
D. 本徵影象優化
為了有效地閉合迴環,我們通過本徵矩陣優化位姿圖,如第三章D節所示,這樣可以將回環閉合的誤差分散到影象中去。優化程式通過相似變換校正尺度偏移,如論文6。誤差和成本計算如附錄所示。優化過後,每一個地圖雲點都根據關鍵幀的校正進行變換。
八 實驗
我們對實驗進行了評估,用Newcollege室外大場景機器影象序列,評估整個系統性能;用TUM RGB-D 的16個手持式室內影象序列,評估定位精度,重定位和程式執行能力;用KITTI的10個汽車戶外影象資料集,評估實時大場景操作,定位精度和位姿圖優化效率。
我們的電腦配置為Intel Core i7-4700MQ (4核@2.40GHz)和8GB RAM,用於實時處理影象。ORB-SLAM有3個主執行緒,它和其他ROS執行緒並行處理。
A. Newcollege
Newcollege是一個2.2公里的校園和相鄰的公園的機器人影象序列。它是雙目相機,幀率20fps,解析度512x38。它包含幾個迴環和快速的旋轉,這對單目視覺非常具有挑戰性。據我們所知,沒有單目系統可以處理整個影象序列。例如論文7,可以形成迴環,也可以應用於大場景環境,但對單目結果只能顯示序列的一小部分。
圖4顯示的迴環閉合執行緒通過有效資料支援相似變換。圖5對比了迴環閉合前後的重構狀況。紅色是區域性地圖,迴環閉合延伸回環的兩端後的狀況。圖6是實時幀率狀態下處理影象序列的整個地圖。後邊的大回環並沒有完全閉合,它從另外一個方向穿過,位置識別程式沒能發現閉合迴環。
我們統計了每個執行緒所用時間。表1顯示了追蹤和區域性地圖構建所用的時間。跟蹤的幀率大概在25-30Hz,在做區域性地圖跟蹤時的要求最高。如有必要,這個時間可以減少,需要限制區域性地圖關鍵幀的數量。區域性地圖構建執行緒中要求最高的是區域性捆集調整。區域性捆集調整的時間根據機器人的狀態變動,向未知環境運動或在一個已經建好地圖的區域運動是不同的,因為在未知環境中如果跟蹤執行緒插入一個新的關鍵幀,捆集調整會被中斷,如第5章E節所示。如果不需要插入新的關鍵幀,區域性捆集調整會執行大量已經設定的迭代程式。
表2顯示了6個閉合迴路的結果。可以看到迴環檢測是如何亞線性地增加關鍵幀的數量。主要是由於檢索資料庫的效率高,它值比較了具有相同影象單詞的影象子集,由此可見用於位置識別的詞袋模型的作用。我們的本徵影象包含的邊緣是關鍵幀數量的5倍,它是一個稀疏圖。
B. TUM RGB-D定位精度對比
論文38裡,評測的TUM RGB-D資料集,用於評估相機定位精度,它通過外部運動捕捉系統提供了具有精確基準的幾個影象序列。我們去掉那些不適合純單目SLAM系統的影象序列,這些序列包含強烈的旋轉,沒有紋理或沒有運動。
為了方便比較,我們還運行了直接的半稠密LSD-SLAM(論文10)和PTAM(論文4)作為對比。我們還比較了RGBD-SLAM(論文43)軌跡作為對比。為了在相同的基準下比較ORB-SLAM,LSD-SLAM和PTAM,我們用相似變換對齊關鍵幀軌跡,在尺度未知的情況下,檢測軌跡的絕對誤差(論文38)。對RGBD-SLAM我們通過相機座標變換對齊軌跡,同樣的方法檢測尺度是否覆蓋良好。LSD-SLAM從隨機深度值進行初始化,執行聚類,因此與基準對比的時候,我們會丟掉前10個關鍵幀。對於PTAM,我們從一個好的初始化中,手動選擇兩個關鍵幀。表3 是對16個影象序列執行5次的中等結果。
ORB-SLAM可以執行所有的影象序列,除了 fr3 nostructure texture far (fr3 nstr tex far) 以外。這是一個平面的場景,相機的軌跡可能有兩種解釋,比如論文20中的描述。我們的初始化方法檢測到模糊的檢視,為了安全而不進行初始化。PTAM初始化有時會選擇對的方案,有些可能會選擇錯的方案,但導致的錯誤可能不能接受。我們沒有注意到LSD-SLAM的2種不同的重構方案,但在這個影象序列出現的錯誤非常多。其他的影象序列,PTAM和LSD-SLAM的魯棒性比我們的方法差,容易跟蹤丟失。
關於精度問題,ORB-SLAM和PTAM非常相似,ORB-SLAM在影象序列fr3 nostructure texture near withloop (fr3 nstr tex near)中檢測大的閉環時,可以獲得更高精度。非常意外的一個結果是PTAM和ORB-SLAM都非常明顯地表現出精度高於LSD-SLAM和RGBD-SLAM。一個可能的原因是它們沒有用感測器的測量優化位姿圖從而減少了對地圖的優化,但我們採用捆集調整,同時通過感測器測量優化相機和地圖,通過運動結構的經典演算法來解決感測器測量,如論文2所示。我們在第9章B節進一步討論了這個結果。另一個有趣的結果是在影象序列fr2 desk with person 和 fr3 walking xyz中,LSD-SLAM對動態物體的魯棒性相比ORB-SLAM差一些。
我們注意到RGBD-SLAM在影象序列fr2上尺度上有偏差,可以用7個自由度對齊軌跡明顯減少誤差。最後我們注意到論文10提到在f2_xyz上PTAM的精度比LSD-SLAM低,RMSE是24.28cm。然而,論文沒有給出足夠的細節說明如何獲得這些結果的,我們沒有辦法復現它。
C. TUM RGB-D重定位效能比較
我們在TUM RGB-D資料集上進行了重定位效能的對比實驗。在第一個實驗中,我們通過fr2_xyz的前30秒構建了一個地圖,執行了全域性重定位,評估了位姿精度。對PTAM進行了相同的實驗。圖7是建立初始地圖的關鍵幀,重定位的影象幀位姿和這些幀的基準。可以看出PTAM由於重定位方法較少的不變性而只重定位關鍵幀附件的影象幀。表4顯示了相對基準的呼叫和誤差。ORB-SLAM比PTAM可以更精準地多定位2倍的影象幀。在第2個實驗中,我們採用fr3_sitting_xyz初始化地圖,從fr3_walking_xyz重定位所有的影象幀。這是一個頗具挑戰性的實驗,由於影象中有人移動造成了阻塞。這裡,PTAM並沒有重定位,而ORB-SLAM重定位78%的影象幀,如表4所示。圖8顯示了ORB-SLAM重定位的一些挑戰。
D. TUM RGB-D系統執行實驗對比
之前的重定位實驗表明我們的系統可以從不同的視角定位地圖,在中等動態環境中的魯棒性也較好。這個特性和關鍵幀篩選程式可以在不同的視角和區域性動態環境中一直執行到程式結束。
在全靜態場景情況下,即使相機從不同視角觀測場景,ORB-SLAM也可以使關鍵幀數量保持在一個有限的水平內。我們演示了一個影象序列,相機93秒以內都在拍攝同一張桌子,但視角一直變換,形成一個軌跡。我們對比了我們地圖的關鍵幀數量和PTAM生成的關鍵幀,如圖9所示。可以看到PTAM一直插入關鍵幀,ORB-SLAM會刪除冗餘的關鍵幀。
當然,在整個程式執行過程中,靜態環境下的正常操作是任何SLAM系統的一個基本要求,更引人注意的是動態環境下的狀況。我們在幾個fr3的影象序列中分析了ORB-SLAM系統的狀況,影象序列有:sitting xyz, sitting halfsphere, sitting rpy, walking xyz, walking halfspehere 和 walking rpy。所有的視訊中,相機都對著桌子,但運動軌跡不同,有人在移動,椅子也被移動了。圖10(a)是地圖中所有關鍵幀的總數量,圖10(b)顯示從影象幀中建立或刪除關鍵幀,從關鍵幀到地圖構建需要多久時間。可以看到前2個影象序列中新看到(增加)場景時地圖的大小一直在增加。圖10(b)是前2個視訊中建立的關鍵幀。在視訊sitting_rpy和walking_xyz中,地圖沒有增加,地圖是通過已有場景建立。相反,在最後兩個視訊中,有更多的關鍵幀插入但沒有在場景中表示出來,可能由於場景的動態變化。圖10(C)關鍵幀的柱狀圖,它們是從視訊中挑選出來的。大部分的關鍵幀被篩選程式刪除了,只有一小部分留下來了。ORB-SLAM有大量關鍵幀的生成策略,在未知環境下非常有用;後面系統會生成一個小的子集來代表這些關鍵幀。
在整個實驗中,我們系統的地圖根據場景上內容來增加,而不是根據時間,它可以儲存場景的動態變化,對場景的理解非常有用。
E. KITTI大場景大回環行效能對比
里程計通過KITTI資料集的11個視訊對比,它是在住宅區駕駛汽車,基準精度非常高,有一個GPS和一個Velodyne Laser Scanner。對單目系統非常有調整性,它裡面有快速旋轉,區域內有大量樹葉,這使資料關聯變得更困難,車速比較快,視訊的幀率只有10fps。除了視訊01外,ORB-SLAM可以處理其他所有的視訊,01是高速路上的視訊,可追蹤的物體非常少。視訊00,02,05,06,07,09,有閉環迴路,系統可以檢測到,並使它閉合。視訊09的閉環只能在視訊的最後幾個影象幀裡檢測到,並不是每次都能成功檢測到。
對於軌跡和基準的定性比較如圖11和12所示。在TUM RGB-D對比中,我們可以通過相似變換對齊軌跡的關鍵幀和基準。圖11是定性比較的結果,圖12是論文25中的最新單目SLAM在視訊00,05,06,07和08上執行的結果。除了08有一些偏移以外,ORB-SLAM在這些視訊上的軌跡都很精準。
表5顯示了每個視訊的關鍵幀軌跡的中等RMSE誤差。我們基於地圖尺寸提供了軌跡的誤差。結果表明我們的軌跡誤差吃地圖尺寸的1%左右。大致範圍低的是視訊03的0.3%高的是視訊08的5%。視訊08中沒有閉環,漂移也沒辦法糾正,因為閉環控制需要獲得更精確的重構。
我們還確認了全域性捆集調整的20層迭代如何增強地圖重構,在每個視訊的最後,細節如附錄所示。我們還注意到全域性捆集調整可以稍微增加閉環軌跡的精度,但這對開環軌跡有負面影響,這意味著我們的系統已經非常精確了。在有些應用中,如果需要非常精確的結果我們的演算法會提供一組匹配,需要定義一個比較強的相機網路,一個初始估計,這樣全域性捆集調整迭代次數就會變少。
最後講一下閉環控制和用於本徵影象的邊緣的θmin的效率。視訊09是個閉環,時間長。我們評估的不同的閉環策略。表6是關鍵幀軌跡RMSE和不同情況下沒有閉環控制優化所用的時間,如果直接採用全域性捆集調整(20層或100層迭代),如果只用位姿圖優化(10層迭代不同數量的邊緣),如果先用位姿圖優化再執行全域性捆集調整。結果表明,在閉環控制之前,方案就比較糟糕,以至於捆集調整會有融合問題。100層迭代後誤差就非常大。本徵影象優化融合速度更快,結果也更精確。θmin對精度影響並不大,減少邊緣的數量會明顯降低精度。位姿圖優化後再執行一個捆集調整可以增加精度,但時間也增加了。
九 結論和討論
A. 結論
通過實驗,我們的系統可以應用於室內和室外場景,用在汽車、機器人和手持裝置上。室內小場景的精度在1釐米,室外大場景的應用是幾個釐米。
PTAM被認為是目前最精準的單目SLAM。根據離線運動結構問題,PTAM後端捆集調整不能同時載入。PTAM的主要貢獻是給機器人SLAM的研究帶來了新的技術,具有良好的實時性。我們的主要貢獻是擴張了PTAM對於應用環境的多樣性和對系統的互動性。因此,我們挑選了新的方法和演算法,整合了前人優秀的地方,如論文5的閉環檢測,論文6,7的閉環控制程式和內容關聯檢視,論文37的g2o優化框架,論文9的ORB特徵。目前所知,我們的精度最高,是最可靠最完整的單目SLAM系統。我們的生成和挑選關鍵幀策略可以建立較少的關鍵幀。彈性的地圖探測在條件較差的軌跡上非常有用,比如旋轉和快速移動。在相同場景的情況下,地圖在只有新內容的情況下才會增長,儲存了不同的檢視外觀。
最後,ORB特徵可識別劇烈的視角變換的位置。也可以快速提取特徵和匹配特徵,使得實時追蹤和地圖構建更精確。
B. 基於離散/特徵方法與稠密/直接方法對比
論文44的DTAM和論文10的LSD-SLAM可以進行環境的稠密或半稠密重構,相機位姿可以通過影象畫素的亮度直接優化。直接方法不需要特徵提取,可以避免人工匹配。他們對影象模糊,低紋理環境和論文45的高頻紋理的魯棒性更好。稠密的重構,對比稀疏的地圖雲點,比如ORB-SLAM或PTAM,對相機定位更有效。
然而,直接方法有他們自己的侷限。首先,這些方法採用一個表面反饋模型。光電描記法的一致性要求限制了匹配的基準,這要比其他特徵窄得多。這對重構的精度影響很大,需要更寬的觀測減少深度的不確定。直接方法,如果準確的建模,可能會受到快門,自動增益和自動曝光的影響(如TUM RGB-D 的對比測試)。最後,由於直接方法計算要求較高,像DTAM中地圖增量式地擴張,或像LSD-SLAM丟掉感測器測量,根據位姿圖優化地圖。
相反,基於特徵的方法可以在更寬的基準上匹配特徵,主要得益於其較好地檢視不變特性。捆集調整和相機位姿優化,地圖雲點通過感測器測量進行融合。在運動結構估計中,論文46已經指出了基於特徵的方法相比直接方法的優勢。在我們的實驗中,直接提供了證據,第8章B節,表明精度更高。未來單目SLAM應該會整合兩種最好的方法。
C. 後續工作
系統精度可以進一步增強。這些雲點,如果沒有足夠的視差是不放入地圖中的,但對相機的旋轉非常有用。
另外一種方法是將稀疏地圖更新到稠密地圖,重構更有作用。由於我們關鍵幀的選擇機制,關鍵幀有高精度位姿和更多的內容相關檢視資訊。所以,ORB-SLAM稀疏地圖是一個非常優秀的初始估計框架,比稠密地圖更好。論文47有詳細描述。
附錄: 非線性優化
捆集調整
地圖雲點3D位置 Xw,j ∈R3,關鍵幀位姿Tiw∈SE(3)
W表示世界座標,通過匹配的關鍵點Xi,j∈R2減少重投影誤差。
地圖雲點j在關鍵幀i中的誤差是:
其中πi是影射函式:
其中,Riw∈SO(3),tiw∈R3,分別表示Tiw的旋轉和平移部分
(fi,u , fi,v),(ci,u , ci,v)分別是相機i的焦點距離和主點。
代價函式:
ρh是Huber魯棒代價函式,Ωi,j=δi,j2I2x2是協方差矩陣,與檢測關鍵點的尺度有關。在全域性捆集調整中(在初始化地圖中),我們優化了所有云點和關鍵幀。
參考文獻
[1] B. Triggs, P. F. McLauchlan, R. I. Hartley, and A. W. Fitzgibbon, “Bundle adjustment a modern synthesis,” in Vision algorithms: theory and practice, 2000, pp. 298–372.
[2] R. Hartley and A. Zisserman, Multiple View Geometry in Computer Vision, 2nd ed. Cambridge University Press, 2004.
[3] E. Mouragnon, M. Lhuillier, M. Dhome, F. Dekeyser, and P. Sayd, “Real time localization and 3d reconstruction,” in Computer Vision and Pattern Recognition, 2006 IEEE Computer Society Conference on, vol. 1, 2006, pp. 363–370.
[4] G. Klein and D. Murray, “Parallel tracking and mapping for small AR workspaces,” in IEEE and ACM International Symposium on Mixed and Augmented Reality (ISMAR), Nara, Japan, November 2007, pp. 225–234.
[5] D. G´alvez-L´opez and J. D. Tard´os, “Bags of binary words for fast place recognition in image sequences,” IEEE Transactions on Robotics, vol. 28, no. 5, pp. 1188–1197, 2012.
[6] H. Strasdat, J. M. M. Montiel, and A. J. Davison, “Scale drift-aware large scale monocular SLAM.” in Robotics: Science and Systems (RSS), Zaragoza, Spain, June 2010.
[7] H. Strasdat, A. J. Davison, J. M. M. Montiel, and K. Konolige, “Double window optimisation for constant time visual SLAM,” in IEEE International Conference on Computer Vision (ICCV), Barcelona, Spain, November 2011, pp. 2352–2359.
[8] C. Mei, G. Sibley, and P. Newman, “Closing loops without places,” in IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Taipei, Taiwan, October 2010, pp. 3738–3744.
[9] E. Rublee, V. Rabaud, K. Konolige, and G. Bradski, “ORB: an efficient alternative to SIFT or SURF,” in IEEE International Conference on Computer Vision (ICCV), Barcelona, Spain, November 2011, pp. 2564– 2571.
[10] J. Engel, T. Sch¨ops, and D. Cremers, “LSD-SLAM: Large-scale direct monocular SLAM,” in European Conference on Computer Vision (ECCV), Zurich, Switzerland, September 2014, pp. 834–849.
[11] R. Mur-Artal and J. D. Tard´os, “Fast relocalisation and loop closing in keyframe-based SLAM,” in IEEE International Conference on Robotics and Automation (ICRA), Hong Kong, China, June 2014, pp. 846–853.
[12] ——, “ORB-SLAM: Tracking and mapping recognizable features,” in MVIGRO Workshop at Robotics Science and Systems (RSS), Berkeley, USA, July 2014.
[13] B. Williams, M. Cummins, J. Neira, P. Newman, I. Reid, and J. D. Tard´os, “A comparison of loop closing techniques in monocular SLAM,”Robotics and Autonomous Systems, vol. 57, no. 12, pp. 1188–1197, 2009.
[14] D. Nister and H. Stewenius, “Scalable recognition with a vocabulary tree,” in IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR), vol. 2, New York City, USA, June 2006, pp. 2161–2168.
[15] M. Cummins and P. Newman, “Appearance-only SLAM at large scale with FAB-MAP 2.0,” The International Journal of Robotics Research, vol. 30, no. 9, pp. 1100–1123, 2011.
[16] M. Calonder, V. Lepetit, C. Strecha, and P. Fua, “BRIEF: Binary Robust Independent Elementary Features,” in European Conference on Computer Vision (ECCV), Hersonissos, Greece, September 2010, pp. 778–792.
[17] E. Rosten and T. Drummond, “Machine learning for high-speed corner detection,” in European Conference on Computer Vision (ECCV), Graz, Austria, May 2006, pp. 430–443.
[18] H. Bay, T. Tuytelaars, and L. Van Gool, “SURF: Speeded Up Robust Features,” in European Conference on Computer Vision (ECCV), Graz, Austria, May 2006, pp. 404–417.
[19] D. G. Lowe, “Distinctive image features from scale-invariant keypoints,”International Journal of Computer Vision, vol. 60, no. 2, pp. 91–110, 2004.
[20] A. J. Davison, I. D. Reid, N. D. Molton, and O. Stasse, “MonoSLAM: Real-time single camera SLAM,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 29, no. 6, pp. 1052–1067, 2007.
[21] J. Civera, A. J. Davison, and J. M. M. Montiel, “Inverse depth parametrization for monocular SLAM,” IEEE Transactions on Robotics, vol. 24, no. 5, pp. 932–945, 2008.
[22] C. Forster, M. Pizzoli, and D. Scaramuzza, “SVO: Fast semi-direct monocular visual odometry,” in Proc. IEEE Intl. Conf. on Robotics and Automation, Hong Kong, China, June 2014, pp. 15–22.
[23] O. D. Faugeras and F. Lustman, “Motion and structure from motion in a piecewise planar environment,” International Journal of Pattern Recognition and Artificial Intelligence, vol. 2, no. 03, pp. 485–508, 1988.
[24] W. Tan, H. Liu, Z. Dong, G. Zhang, and H. Bao, “Robust monocular SLAM in dynamic environments,” in IEEE International Symposium on Mixed and Augmented Reality (ISMAR), Adelaide, Australia, October 2013, pp. 209–218.
[25] H. Lim, J. Lim, and H. J. Kim, “Real-time 6-DOF monocular visual SLAM in a large-scale environment,” in IEEE International Conference on Robotics and Automation (ICRA), Hong Kong, China, June 2014, pp. 1532–1539.
[26] D. Nist´er, “An efficient solution to the five-point relative pose problem,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 26, no. 6, pp. 756–770, 2004.
[27] H. Longuet-Higgins, “The reconstruction of a plane surface from two perspective projections,” Proceedings of the Royal Society of London. Series B. Biological Sciences, vol. 227, no. 1249, pp. 399–410, 1986.
[28] P. H. Torr, A. W. Fitzgibbon, and A. Zisserman, “The problem of degeneracy in structure and motion recovery from uncalibrated image sequences,” International Journal of Computer Vision, vol. 32, no. 1, pp. 27–44, 1999.
[29] A. Chiuso, P. Favaro, H. Jin, and S. Soatto, “Structure from motion causally integrated over time,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 24, no. 4, pp. 523–535, 2002.
[30] E. Eade and T. Drummond, “Scalable monocular SLAM,” in IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR), vol. 1, New York City, USA, June 2006, pp. 469–476.
[31] H. Strasdat, J. M. M. Montiel, and A. J. Davison, “Visual SLAM: Why filter?” Image and Vision Computing, vol. 30, no. 2, pp. 65–77, 2012.
[32] G. Klein and D. Murray, “Improving the agility of keyframe-based slam,” in European Conference on Computer Vision (ECCV), Marseille, France, October 2008, pp. 802–815.
[33] K. Pirker, M. Ruther, and H. Bischof, “
本文為ORB-SLAM的翻譯,轉載自:http://qiqitek.com/blog/?p=102
ORB-SLAM: a Versatile and Accurate Monocular SLAM System(文章已發表,有版權)
Taylor Guo, 2016年3月18日-9:00 另一個 假設 tex struct 姿態估計 adjust tin 操作 程序 4. 自動地圖初始化
地圖初始化的目標是兩個幀之間相對位姿來三角化一系列的點雲(riangulate an initial set of map points),這個操作是獨立與場景且不需要人為 軌跡 關鍵幀 lam lns auto 排除 校正 超出 mathjax 前言
一、介紹
PTAM(parallel tracking and Mapping)系統局限於小尺度場景中,提供簡單但是有效的關鍵幀選擇、特征匹配、三角化、重定位技術,但是具有以下缺點:(1)缺
相關部落格詳解一:https://blog.csdn.net/cdknight_happy/article/details/79731981 DeepSort論文學習 cdknight_happy 相關部落格詳解二:https://www.cnblogs.com/YiXiao 技術分享 線性 如果 pla 筆記 das ima 問題 調查 概要:本文使用神經網絡完成了一個快速準確的依存語法分析程序,也就是句子的結構。
introduction:
以前的depenency parser效果很好,但是有幾個問題:
所用的特
出現錯誤的原因是:
gradle的版本過低導致的
解決
回到目錄
寫在前面
港科大的VINS-Mono作為目前state of the art的開源VIO專案,是研究視覺與IMU緊耦合的必讀演算法,網上的論文解讀與程式碼實現也非常豐富(感謝!)。為更好地進行學習,本人在幾篇VINS論文解讀與翻譯的參考與改進下,完成了自己對全文的閱讀與翻譯 Abstract
We present the internals of QEMU, a fast machine emulator using an original portable dynamic translator. It emulates several CPUs (x86, 觸發 nchar name 詳細 重建 server into evel 單位 原文鏈接:file:///E:/%E2%80%9C%E6%B2%BB%E6%9C%AA%E7%97%85%E2%80%9D%E5%81%A5%E5%BA%B7%E7%AE%A1%E7%90%86 red 這不 得到 放大 條件 mage 上界 出了 color Web上數據的增長使得在完整的數據集上使用許多機器學習算法變得更加困難。特別是對於個性化推薦問題,數據采樣通常不是一種選擇,需要對分布式算法設計進行創新,以便我們能夠擴展到這些不斷增長的數據集。
協同過濾(C 原文出自:《Pro SQL Server Internals, 2nd edition》CHAPTER 1 Data Storage Internals中的Data Pages and Data Rows一節(即P8~P14),Dmitri Korotkevitch,侵刪
資料庫中的空間分為邏輯8KB頁面。 原文連結:http://www.allitebooks.com/pro-sql-server-internals-2nd-edition/
原文作者:Dmitri Korotkevitch
聚集索引
聚集索引指示表中資料的物理順序,該表根據聚集索引鍵進行排序。 該表只能定義一個聚集索引。
假設您要在堆 文章選自:《Pro SQL Server Internals, 2nd edition》CHAPTER 7 Designing and Tuning the Indexes中的Clustered Index Design Considerations一節
作者:Dmitri Korotkevitch
Cl
《Pro SQL Server Internals, 2nd edition》的CHAPTER 3 Statistics中的Introduction to SQLSever Statistics SQL Server(P55~58)、Statistics and Execution Plans(P62~6
粉色:重點演算法 紫色:生癖詞彙 綠色:引文&未補充公式
概述:
多目標跟蹤中SORT演算法的理解
在跟蹤之前,對所有目標已經完成檢測,
前言
2018年CVPR出現了一篇論文,該篇論文較新,引起了博主的注意。博主譯文水平不好,為了學習,所以進行論文翻譯和研究,博文以譯文為主。如果有翻譯不對之處,還請各位指出,便於我修改。
文獻資訊
引用格式:Haomin Liu, Mingyu Chen,
光流引導特徵:視訊動作識別的快速魯棒運動表示
Introducing Texar: A Modularized, Versatile, and Extensible Toolkit for Text Generation and BeyondCrossposted on the Petuum blog.We are excited to introduc
文章題目:Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recognition(CVPR2018)
摘要部分:開頭一句話指出motion rep
文章地址LeCun經典論文
Abstract
基於能量的模型(EBM)通過將標量能量與變數的每個配置相關聯來捕獲變數之間的依賴關係。推論包括鉗制觀測變數的值,並找出使能量最小的其餘變數的配置。學習包括找到一個能量函式,其中變數的觀察結構的能量比不可觀測的能量要低 相關推薦
翻譯:ORB-SLAM: a Versatile and Accurate Monocular SLAM System
ORB-SLAM: A Versatile and Accurate Monocular SLAM System 筆記(二)
論文:ORB-SLAM:a Versatile and accurate Monocular SLAM System
論文翻譯:Deep SORT: Simple Online and Realtime Tracking with a Deep Association Metric
nlp 筆記:A Fast and Accurate Dependency Parser using Neural Networks
Ensure that you have installed a JDK (not just a JRE) and configured your JAVA_HOME system variable
VINS論文翻譯 VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
QEMU, a Fast and Portable Dynamic Translator-Fabrice Bellard-翻譯
翻譯:《Pro SQL Server Internals, 2nd edition》CHAPTER 1 Data Storage Internals中的Data Pages and Data Rows一節
文章翻譯:Recommending items to more than a billion people(面向十億級用戶的推薦系統)
翻譯:Data Pages and Data Rows
翻譯:《Pro SQL Server Internals,2nd edition》的CHAPTER 2 Table and Indexes中的Clustered Indexes
翻譯:《Pro SQL Server Internals, 2nd edition》CHAPTER 7 Designing and Tuning the Indexes
翻譯:Introduction to SQLSever Statistics SQL Server統計資訊簡介 Statistics and Execution Plans統計和執行計劃 Statistics Maintenance統計維護
論文翻譯:sort : SIMPLE ONLINE AND REALTIME TRACKING
【文獻翻譯】ICE-BA: Incremental, Consistent and Efficient Bundle Adjustment for Visual-Inertial SLAM
Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recognition 翻譯
Introducing Texar: A Modularized, Versatile, and Extensible Toolkit for Text Generation and Beyond
讀書筆記22:Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recogni
論文翻譯:A Tutorial on Energy-Based Learning