BoW算法及DBoW2庫簡介


  由於在ORB-SLAM2中擴展圖像識別模塊,因此總結一下BoW算法,並對DBoW2庫做簡單介紹。

1. BoW算法

  BoW算法即Bag of Words模型,是圖像檢索領域最常用的方法,也是基於內容的圖像檢索中最基礎的算法。網絡上有各種各樣的原理分析,所以這里只是簡單提一下。

  Bag of Words本是用於文本檢索,后被引用與圖像檢索,和SIFT等出色的局部特征描述符共同使用(所以有時也叫Bag of Feature,BOF),表現出比暴力匹配效率更高的圖像檢索效果,它是直接使用K-means對局部描述符進行聚類,獲得一定數量的視覺單詞,然后量化再統計詞頻或TF-IDF加權之后的權重系數。

 

但是隨着圖像數據庫的擴大,圖像數據增加,所使用的碼書規模也越來越大,K-means的效率就比較低了。為了改善大規模圖像檢索場景下的圖像檢索效果,有人提出了Vocabulary Tree(VT)算法,它是對BoW算法的一種改進算法,也就是我們現在常看見的分層量化的BoW算法。按照VT論文表述,這種算法不用進行圖像表達向量的相似性計算,而是根據倒排文件系統進行打分,按照打分的高低進行排序,獲得最相似的圖像,至於怎么打分,這里就不多說了,從圖上可以看出來。倒排文件存儲就是每個葉子結點下有哪些對應的圖像。

 2. DBoW

  了解了上述兩種算法之后再看DBoW算法就小菜一疊了,但是仍然有幾個概念需要注意。DBoW2中計算圖像之間相似度時仍然計算的是BoW向量之間的距離(根據描述子的不同可能選擇Hamming距離或者余弦距離),而視覺單詞分層的作用則引出了正向索引和反向索引的概念。

  反向索引即倒排文件系統,即每個葉子結點都有一個關聯的文本文檔,里面存儲着當前節點的索引值和落在該節點下的圖像索引值。反向索引的作用和倒排文檔是一致的,加速圖像的匹配過程,當query圖像來時,只要和對應節點下圖像計算相似性即可,這就大大縮小了待匹配圖像的規模。

  正向索引,即中間層中每一節點下存儲着該節點的索引值和對應的某一張圖像的特征。正向索引可以加速特征之間的匹配,因為在圖像檢索的過程中,通常也是先經過BoW或者其他檢索算法檢索出最相似的N張圖像,然后再通過特征匹配(暴力匹配)的方式確定最相似的一張或幾張圖像。使用正向索引時需要指定一個層數,即在與該層下的某個節點所包含的特征進行特征匹配,這同樣也大大降低了特征匹配的規模,這種方法在ORB-SLAM中也用於特征匹配的加速,如跟蹤時的關鍵幀模型等。

  BoW算法或DBoW庫的一個缺點就是需要離線訓練一個規模較大的碼書(ORB-SLAM2中這個碼書達到了一百三十多兆),感覺就像一個瘤子一樣(...)。

3 總結

  下面會使用DBoW庫訓練自己的碼書,並且在ORB-SLAM的基礎上進行圖像檢索的任務,把AR部分融合進來。還有就是希望可以想想辦法把這個“瘤子”去掉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM