標(biāo)題: 淺談SLAM的回環(huán)檢測(cè)技術(shù) [打印本頁(yè)]

作者: 機(jī)器人領(lǐng)域    時(shí)間: 2018-10-23 17:13
標(biāo)題: 淺談SLAM的回環(huán)檢測(cè)技術(shù)
什么是回環(huán)檢測(cè)?
在講解回環(huán)檢測(cè)前,我們先來(lái)了解下回環(huán)的概念。在視覺SLAM問(wèn)題中,位姿的估計(jì)往往是一個(gè)遞推的過(guò)程,即由上一幀位姿解算當(dāng)前幀位姿,因此其中的誤差便這樣一幀一幀的傳遞下去,也就是我們所說(shuō)的累計(jì)誤差。
我們的位姿約束都是與上一幀建立的,第五幀的位姿誤差中便已經(jīng)積累了前面四個(gè)約束中的誤差。但如果我們發(fā)現(xiàn)第五幀位姿不一定要由第四幀推出來(lái),還可以由第二幀推算出來(lái),顯然這樣計(jì)算誤差會(huì)小很多,因?yàn)橹淮嬖趦蓚(gè)約束的誤差了。像這樣與之前的某一幀建立位姿約束關(guān)系就叫做回環(huán);丨h(huán)通過(guò)減少約束數(shù),起到了減小累計(jì)誤差的作用。
那么我們?cè)趺粗揽梢杂傻诙䦷扑愕谖鍘蛔四?也許第一幀、第三幀也可以呢。確實(shí),我們之所以用前一幀遞推下一幀位姿,因?yàn)檫@兩幀足夠近,肯定可以建立兩幀的約束,但是距離較遠(yuǎn)的兩幀就不一定可以建立這樣的約束關(guān)系了。找出可以建立這種位姿約束的歷史幀,就是回環(huán)檢測(cè)。

回環(huán)檢測(cè)的意義
有了前端的視覺里程計(jì)及后端優(yōu)化的SLAM系統(tǒng),似乎已經(jīng)比較好用了。但其在提高實(shí)時(shí)性的同時(shí)精度卻降低了,一旦精度降低,又會(huì)面臨長(zhǎng)時(shí)間累計(jì)誤差的問(wèn)題,特別是像ORB-SLAM那樣只做局部地圖優(yōu)化的方案。我們?cè)撊绾纹胶膺@個(gè)矛盾呢?
我們不妨先思考下,在一個(gè)陌生的環(huán)境中,我們?nèi)祟愂侨绾芜M(jìn)行環(huán)境地圖的建立?在局部區(qū)域,人不斷的移動(dòng)從而在腦海中建造增量式地圖,時(shí)間長(zhǎng)了大部分人也分不清東南西北了,與起始點(diǎn)的關(guān)系又如何。假如人正巧回到了之前路過(guò)的位置,在對(duì)環(huán)境足夠敏感的情況下,他就能發(fā)現(xiàn)這個(gè)事實(shí),從而修正自己之前對(duì)方位的判斷。我們說(shuō),此時(shí)檢測(cè)到了一個(gè)回環(huán),顯然,人可以通過(guò)面前看到的景象與腦海中殘缺的印象來(lái)對(duì)比從而檢測(cè)到回環(huán)的,對(duì)于SLAM來(lái)說(shuō)也可以通過(guò)對(duì)比當(dāng)前幀與過(guò)去關(guān)鍵幀的相似度,如相似度超過(guò)某一閥值時(shí)就可以被認(rèn)為是檢測(cè)到回環(huán)。
現(xiàn)在,問(wèn)題的關(guān)鍵就在于如何判斷兩幀圖片的相似度。最直觀的做法是特征匹配,比較匹配的數(shù)量是否足夠多。但由于特征匹配非常耗時(shí),回環(huán)檢測(cè)需要與過(guò)去所有關(guān)鍵幀匹配,這個(gè)運(yùn)算量是絕對(duì)無(wú)法承受的。因此,有人提出了詞袋模型,用來(lái)加速特征匹配。

什么是詞袋模型?
詞袋模型就是把特征看成是一個(gè)個(gè)單詞,通過(guò)比較兩張圖片中單詞的一致性,來(lái)判斷兩張圖片是否屬于同一場(chǎng)景。
為了能夠把特征歸類為單詞,我們需要訓(xùn)練一個(gè)字典。所謂的字典就是包含了所有可能的單詞的集合,為了提高通用性,需要使用海量的數(shù)據(jù)訓(xùn)練。
字典的訓(xùn)練其實(shí)是一個(gè)聚類的過(guò)程。假設(shè)所有圖片中共提取了10,000,000個(gè)特征,可以使用K-means方法把它們聚成100,000個(gè)單詞。但是,如果只是用這100,000個(gè)單詞來(lái)匹配的話效率還是太低,因?yàn)槊總(gè)特征需要比較100,000次才能找到自己對(duì)應(yīng)的單詞。為了提高效率,字典在訓(xùn)練的過(guò)程中構(gòu)建了一個(gè)k個(gè)分支,深度為d的樹,如下圖所示。直觀上看,上層結(jié)點(diǎn)提供了粗分類,下層結(jié)點(diǎn)提供了細(xì)分類,直到葉子結(jié)點(diǎn)。利用這個(gè)樹,就可以將時(shí)間復(fù)雜度降低到對(duì)數(shù)級(jí)別,大大加速了特征匹配。


DBoW3庫(kù)
DBoW3庫(kù)為我們提供了非常方便的訓(xùn)練詞典和使用詞典的方法。
訓(xùn)練詞典時(shí),只需要把所有訓(xùn)練用的圖片的描述符傳給DBoW3::Vocabulary的create方法就可以了。訓(xùn)練好的詞袋模型保存在vocabulary.yml.gz文件中。



接下來(lái),使用訓(xùn)練好的詞袋模型對(duì)圖片計(jì)算相似性評(píng)分。DBoW3為我們提供了兩種計(jì)算相似性的方式,第一種是直接對(duì)兩張圖片比較;第二種是把圖片集構(gòu)造成一個(gè)數(shù)據(jù)庫(kù),再與另一張圖片比較。





可以看出,圖片越相似,評(píng)分越接近1。我們可以根據(jù)這個(gè)評(píng)分來(lái)判斷兩張圖片是否是同一場(chǎng)景。但是直接給定一個(gè)絕對(duì)的閾值并不合適。通常,如果當(dāng)前幀與之前某幀的相似度超過(guò)當(dāng)前幀與上一個(gè)關(guān)鍵幀相似度的3倍,就認(rèn)為可能存在回環(huán)。不過(guò),這種做法要求關(guān)鍵幀之間的相似性不能太高,否則無(wú)法檢測(cè)出回環(huán)。






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1