什么是回環檢測?
回環檢測(Loop Closure Detection),視覺SLAM問題中,位姿的估計往往是一個遞推的過程,即由上一幀位姿解算當前幀位姿,因此其中的誤差便這樣一幀一幀的傳遞下去,也就是我們所說的累計誤差。我們之所以用前一幀遞推下一幀位姿,因為這兩幀足夠近,肯定可以建立兩幀的約束,但是距離較遠的兩幀就不一定可以建立這樣的約束關系了。找出可以建立這種位姿約束的歷史幀,就是回環檢測。
回環檢測的意義?
有了前端的視覺里程計及后端優化的SLAM系統,似乎已經比較好用了。但其在提高實時性的同時精度卻降低了,一旦精度降低,又會面臨長時間累計誤差的問題,特別是像ORB-SLAM那樣只做局部地圖優化的方案。我們該如何平衡這個矛盾呢?人可以通過面前看到的景象與腦海中殘缺的印象來對比從而檢測到回環的,對於SLAM來說也可以通過對比當前幀與過去關鍵幀的相似度,如相似度超過某一閥值時就可以被認為是檢測到回環。
1.詞袋模型
詞袋模型就是把特征看成是一個個單詞,通過比較兩張圖片中單詞的一致性,來判斷兩張圖片是否屬於同一場景。
為了能夠把特征歸類為單詞,我們需要訓練一個字典。所謂的字典就是包含了所有可能的單詞的集合,為了提高通用性,需要使用海量的數據訓練。
字典的訓練其實是一個聚類的過程。假設所有圖片中共提取了10,000,000個特征,可以使用K-means方法把它們聚成100,000個單詞。但是,如果只是用這100,000個單詞來匹配的話效率還是太低,因為每個特征需要比較100,000次才能找到自己對應的單詞。為了提高效率,字典在訓練的過程中構建了一個k個分支,深度為d的樹,上層結點提供了粗分類,下層結點提供了細分類,直到葉子結點。利用這個樹,就可以將時間復雜度降低到對數級別,大大加速了特征匹配。
2.基於CNN的回環檢測
利用卷積神經網絡可以檢測出關鍵幀深層特征,通過比較這些圖像深層特征的相似度可以判別出是否產生了回環,有更高的魯棒性,這一技術還在發展。
3.自編碼網絡的回環檢測
還在摸索。。。。