ICCV 2023 oral|一文看懂SLAM/ SfM遇到相似非回環(huán)場景應(yīng)如何處理
作者:泡椒味的口香糖 ?| 來源:3D視覺工坊
在公眾號(hào)「3D視覺工坊」后臺(tái),回復(fù)「原論文」即可獲取論文pdf和代碼鏈接。
添加微信:dddvisiona,備注:SLAM,拉你入群。文末附行業(yè)細(xì)分群。
0. 筆者個(gè)人體會(huì)
相似結(jié)構(gòu)一直是SLAM和SfM中很難處理卻又不得不處理的問題,如果機(jī)器人遇到了非常相似但實(shí)際不同的結(jié)構(gòu),很容易因?yàn)槠ヅ鋽?shù)量足夠多而引發(fā)假陽性回環(huán)和重建失敗。傳統(tǒng)方法更多的還是利用匹配數(shù)量的閾值或者和其他幾何關(guān)系的比值閾值來判斷,這種方法在遇到高對(duì)稱結(jié)構(gòu)時(shí)很容易失敗。
今天筆者將為大家?guī)磉@個(gè)問題新的解決思路,也就是ICCV 2023 Oral提出的Doppelgangers,能夠自動(dòng)判斷兩個(gè)視圖是相同的,還是僅僅是相似的。這個(gè)方案實(shí)際上是將視覺消歧問題建模為圖像對(duì)上的二分類任務(wù),并開發(fā)了基于學(xué)習(xí)的解決方案和數(shù)據(jù)集。這里也推薦「3D視覺工坊」新課程《(第二期)ORB-SLAM3理論講解與代碼精析》。
以下是一些典型的相似結(jié)構(gòu),即便是使用人眼觀看,也很容易認(rèn)為是相同場景。而在SLAM和SfM遇到這類場景時(shí),很容易觸發(fā)假陽性回環(huán)而導(dǎo)致跟蹤丟失或重建失敗。
Doppelgangers這篇文章主要解決的就是這類場景下的匹配和重建問題,即便用來重建的場景具有高度對(duì)稱和相似的結(jié)構(gòu),仍然可以進(jìn)行完整的三維重建,不會(huì)憑空多或者少一些結(jié)構(gòu)。
我們考慮視覺消歧任務(wù),即判斷一對(duì)視覺相似的圖像是否描繪了相同或不同的三維表面(例如,對(duì)稱建筑物的同側(cè)或?qū)?cè))。虛假圖像匹配,即兩幅圖像觀察到不同但視覺上相似的3D表面,對(duì)人類區(qū)分具有挑戰(zhàn)性,也會(huì)導(dǎo)致3D重建算法產(chǎn)生錯(cuò)誤的結(jié)果。我們提出了一種基于學(xué)習(xí)的視覺消歧方法,將其建模為圖像對(duì)上的二分類任務(wù)。為此,我們?yōu)樵搯栴}引入了一個(gè)新的數(shù)據(jù)集Doppelgangers,該數(shù)據(jù)集包含了具有真實(shí)標(biāo)簽的相似結(jié)構(gòu)的圖像對(duì)。我們還設(shè)計(jì)了一種網(wǎng)絡(luò)架構(gòu),將局部關(guān)鍵點(diǎn)和匹配的空間分布作為輸入,從而可以更好地對(duì)局部和全局線索進(jìn)行推理。我們的評(píng)估表明,我們的方法可以在困難的情況下區(qū)分誤匹配,并且可以集成到SfM流水線中,以產(chǎn)生正確的、無二義性的三維重建。
現(xiàn)在一步步來拆解任務(wù):我們希望在做SLAM和SfM時(shí),即便遇到了結(jié)構(gòu)非常相似的場景,也能夠正確進(jìn)行三維重建和跟蹤,不能出現(xiàn)誤匹配導(dǎo)致重建結(jié)果突然多了一塊或少了一塊,更不能出現(xiàn)假陽性回環(huán)。
具體任務(wù)描述:
給定兩幅非常相似的圖像,判斷它們是同一個(gè)結(jié)構(gòu)的同一個(gè)表面,還是兩個(gè)不同的3D結(jié)構(gòu)(作者將其稱為doppelgangers)。主要發(fā)生在對(duì)稱建筑物、重復(fù)視覺元素、以及多個(gè)相同地標(biāo)場景中。
分析發(fā)現(xiàn),雖然從高度對(duì)稱建筑拍攝的兩幅圖像整體很相似,很難直接通過圖像對(duì)來進(jìn)行正負(fù)判別,但是它內(nèi)部還是有一些細(xì)節(jié)是不同的。這些細(xì)節(jié)所在的區(qū)域在進(jìn)行圖像匹配時(shí)的匹配關(guān)系很少,利用這種細(xì)微差異就可以區(qū)分圖像。其實(shí)這樣很符合人類"找不同"的思路。
基于這個(gè)發(fā)現(xiàn),作者就提出了一種基于學(xué)習(xí)的方法來消除視覺歧義,并且還公開了一個(gè)具有相似結(jié)構(gòu)的數(shù)據(jù)集,數(shù)據(jù)集還有GT標(biāo)簽。
這個(gè)相似場景識(shí)別算法的原理是,首先使用RANSAC估計(jì)基礎(chǔ)矩陣并過濾異常匹配(具體實(shí)驗(yàn)是直接使用LoFTR+RANSAC計(jì)算匹配),將原圖、提取的特征點(diǎn)、匹配到的特征點(diǎn)輸入到網(wǎng)絡(luò)中,輸出為相似圖像的概率,將相似性識(shí)別轉(zhuǎn)換為一個(gè)二分類問題。
這個(gè)算法的思想是使用關(guān)鍵點(diǎn)和匹配位置為網(wǎng)絡(luò)提供信息,這樣網(wǎng)絡(luò)不僅知道哪些關(guān)鍵點(diǎn)被匹配了,也可以知道哪些關(guān)鍵點(diǎn)沒有匹配,這樣對(duì)應(yīng)的區(qū)域可能就代表信息缺失或者不同目標(biāo),相當(dāng)于利用了關(guān)鍵點(diǎn)和匹配的空間分布信息。很明顯,視覺上具有相似結(jié)構(gòu)區(qū)域的匹配會(huì)更稠密,但不同結(jié)構(gòu)的區(qū)域匹配更稀疏。
而且為了更好得比較不同結(jié)構(gòu)區(qū)域,作者還對(duì)輸入圖像對(duì)進(jìn)行了幾何對(duì)齊,也就是估計(jì)仿射變換,然后warp圖像和二值mask。當(dāng)然,這個(gè)對(duì)齊不一定特別準(zhǔn),只不過希望能夠更好得聯(lián)系將兩個(gè)重疊區(qū)域。
到具體訓(xùn)練這一塊,作者還使用了Focal loss。這個(gè)也很容易理解,相似結(jié)構(gòu)的特征點(diǎn)匹配肯定是正負(fù)樣本不平衡的,使用Focal loss可以提高難分樣本的貢獻(xiàn)。
用來做二分類的網(wǎng)絡(luò)結(jié)構(gòu)很簡單,就是3個(gè)殘差模塊,一個(gè)平均池化,再加上一個(gè)全連接層。也僅僅訓(xùn)練了10個(gè)epoch,batch size設(shè)置為16,學(xué)習(xí)率從0.0005降低到0.000005。
實(shí)驗(yàn)主要是在他們提出的Doppelgangers數(shù)據(jù)集上評(píng)估消除視覺歧義的性能,然后將訓(xùn)練的圖像二分類器集成到SfM中,通過重建效果來評(píng)估消歧性能,最后搞了一個(gè)消融實(shí)驗(yàn)來證明每個(gè)模塊都是有用的。
首先是僅使用局部特征匹配來預(yù)測圖像對(duì)是否為正(真)的匹配,對(duì)比的baseline包括SIFT+RANSAC、LoFTR、以及DINO-ViT(自監(jiān)督SOTA分類/分割器)。作者使用的匹配方式包括兩種:( 1 )對(duì)幾何驗(yàn)證后的匹配數(shù)量進(jìn)行閾值化處理;( 2 )對(duì)匹配數(shù)量與關(guān)鍵點(diǎn)數(shù)量的比值進(jìn)行閾值化處理。( 2 )背后的思想是,如果相對(duì)于關(guān)鍵點(diǎn)的數(shù)量,有很少的匹配,則很可能是誤匹配。作者訓(xùn)練的模型AP為95.2 %,ROC AUC為93.8 %。DINO結(jié)果不太好,主要是因?yàn)樗傻奶卣骱苓m合語義分類任務(wù),但不適合視覺消歧。
下面是測試的圖像對(duì)和對(duì)應(yīng)的正匹配概率,這個(gè)定性對(duì)比還是很詳細(xì)的,實(shí)驗(yàn)的場景很多。左欄表示負(fù)對(duì)匹配關(guān)系(錯(cuò)誤),右欄表示正對(duì)(正確)。比較亮眼的是,在不同光照、視角變化、天氣變化等挑戰(zhàn)性情況下,也可正確分類正負(fù)匹配關(guān)系。
后面就開始搞三維重建了,作者將他們訓(xùn)練的二分類器集成到COLMAP中,以此來評(píng)估在重復(fù)/對(duì)稱場景中的三維重建效果。使用的landmark有兩類,包含13個(gè)由于對(duì)稱和重復(fù)結(jié)構(gòu)而難以重建的landmark,還有與訓(xùn)練數(shù)據(jù)有顯著差異的3個(gè)具有重復(fù)結(jié)構(gòu)的場景,主要是為了測試泛化性。
下面這個(gè)表就是SfM的重建結(jié)果,第二列代表數(shù)據(jù)集中的場景數(shù)量,其他的√和?代表是否重建成功,是否成功是與谷歌地球中相應(yīng)結(jié)構(gòu)對(duì)比得到的(評(píng)估三維重建效果的新點(diǎn)?)。
下面是直接使用COLMAP重建的模型和作者提出方法重建效果的對(duì)比。顯然,直接使用COLMAP會(huì)憑空產(chǎn)生很多多余的塔樓、穹頂?shù)冉Y(jié)構(gòu)。但是作者提出的方法可以很好得消除這種對(duì)稱相似結(jié)構(gòu)的"語義歧義",從而重建完整的三維模型。這里也推薦「3D視覺工坊」新課程《(第二期)ORB-SLAM3理論講解與代碼精析》。
最后是一個(gè)消融實(shí)驗(yàn),就沒啥可說的了,主要對(duì)比了使用不同的網(wǎng)絡(luò)結(jié)構(gòu)做二分類器、書否有數(shù)據(jù)增強(qiáng),以及不同網(wǎng)絡(luò)輸入帶來的性能對(duì)比。
Doppelgangers是解決特定任務(wù)的一篇文章,實(shí)現(xiàn)了相似結(jié)構(gòu)的二分類,解決的問題很重要。雖然Doppelgangers的實(shí)驗(yàn)更多的面向圖像匹配和SfM,但筆者個(gè)人覺得也很容易應(yīng)用到SLAM場景中,感興趣的小伙伴可以做進(jìn)一步的嘗試。