BOW模型在ANN框架下的解释
BOW模型在ANN框架下的解釋
作者:孤風一劍 ? 發布:2013-12-25 09:50 ? 欄目:其它語言 ? 點擊:720次 ? 搶沙發 ?Bag of words模型(簡稱BOW)是最常用的特征描述的方法了。在圖像分類和檢索的相關問題中,能夠將一系列數目不定的局部特征聚合為一個固定長度的特征矢量,從而使不同圖像之間能夠進行直接比較。BOW的改進方法包括一些稀疏的編碼方式(如llc),kernel codebooks等,使得BOW一般作為benchmark被比較。然而,BOW往往作為一種編碼方式被解釋著(SIFT作為coding,BOW作為average pooling),在這里,我會從一個近似最近鄰(approximate nearest neighbor)的角度解釋一下BOW。
假設有兩幅圖像A和B,A有一系列描述子(例如SIFT){x1,x2…xn}組成,而B由{y1,y2…ym}組成。為了計算這兩幅圖之間的相似度,最直接的方法是采用一下的voting system:
(1)
其中f是一個匹配函數,反映了xi與yj之間是否匹配。對于一個ε-search和k-NN的匹配方式下,f分別定義為:
?
按(1)式將所有的i和j累加起來,再對{x}和{y}做歸一化(這對應于BOW的L1歸一化),就能夠得到A和B的一個相似度度量(此時s的值越大,表示A和B之間匹配的特征對的數目越多)。
我們令f反映的匹配方式為最近鄰匹配,此時yj是xi的最近鄰時(一般還需要這個最近鄰的距離與次近鄰的距離的比值小于一定閾值),認為yj和xi是匹配的。但是潛在的一個問題就是如果兩幅圖包含的SIFT特征十分多(一般是1000以上的數量級),exhaustively?search將是十分耗時的,時間復雜度是O(nm),需要大量的搜索時間。因此常常用approximate nearest neighbor代替exact nearest neighbor,如下圖所示。
?
近似的最近鄰有可能與真實的最近鄰有所偏差,但是計算上時間復雜度大大降低。
常見的ANN的方法有k-d tree(通過生成一棵樹對D維特征空間進行劃分,待匹配的特征點會從與之屬于同一子空間的點開始查找),BBF(改進的k-d tree方法,在k-d tree回溯的時候引入優先級的隊列),Locality-sensitive Hashing(通過一系列隨機的哈希函數,使得經過哈希投影后兩特征點哈希值相等的概率與原特征的相似度之間形成一對應關系)。
LSH是最需要一說的,但是限于篇幅我又不想在這里說,我在后面的文章中肯定會再提到,如果大家不太了解的話可以先看這里。在這里到提到的結論是,對于歐式距離作為相似度的情況下,LSH選擇的哈希函數是一個隨機的投影函數:
? ?(2)
?
這個投影函數相當于將原始特征向量投影到一條隨機的直線上,然后將這條直線劃分為長度為bi的多條線段,會落入同一線段上的兩特征點被認為是相似的。我們選擇多個投影函數共同作用,要求在這多個投影函數上的取值都相等的兩個點,才被認為是近鄰的。這些投影函數的作用,相當于對整個描述子的特征空間做隨機的劃分,如下圖所示:
?
落入同一子空間的點,都被認為是近鄰的。至于為什么是隨機投影函數,這里有比較詳細的解釋,我以后有空再到文章中做介紹。
從LSH的效果上來看,很明顯就是我們只要能夠選擇一種合理的劃分特征空間的方式,就能認為落入同一子空間的所有點是近鄰的。隨機投影盡管能夠滿足LSH的基本假設,但是這個“隨機”,其實是很蛋疼的,因為隨著投影的直線越來越多,很多直線存在的意義是值得思考的,也就是說如果我們已經選了1000中隨機投影的方法,那么第1001中投影的方法應該盡可能在效果上不同于前1000中(這樣才能體現它最大的價值嘛),而隨機顯然不能保證這一效果。所以,我們完全可以通過所有樣本的分布情況,學習出一種劃分方式。沒錯,k-means,無疑是一種實現手段,如下圖:
?
好,終于繞了半天以后繞到BOW上來了,BOW不就是用k-means訓練了一個碼數,然后所有SIFT描述子都往這本碼數上做硬投影(其實就是投影到一個子空間中)了么。投影后,在同一個碼字上的所有點都認為是相匹配的。回到(1)式的f(xi,yj)函數中來,如果xi和yj落入同一個碼字上,那么它們就被認為是相匹配的(注意這里一個xi可能與B圖像的多個特征相匹配了,我最后還會接著解釋)。這種設計,會是f的一種取法。
再看看BOW的矢量本身,如果我們采用內積來計算兩個圖像之間的相似度(在此不考慮對BOW矢量做歸一化)。BOW特征的第i維表示圖像所有SIFT在第i個碼字上的投影的數目(對A和B兩幅圖分別用Ai和Bi表示),那么這一維上內積的結果就是Ai*Bi。這不正是在第i個子空間,A圖的所有SIFT點與B圖所有SIFT點的兩兩匹配的所有種可能嗎?正好對應著前面所說的f()。
原來內積對應著兩兩匹配的所有可能,但是這很不合理啊,一個特征點按理應該在另一幅圖中最多找到1個對應的匹配才對,如果用內積來描述相似度,一個點不就被匹配了n多次了么?不合理啊不合理。而如果用直方圖相交的話,取min(Ai,Bi),這樣一個點不就最多找到1個對應的匹配了嗎?正是因為這樣,直方圖相交是一種更好的度量BOW這類直方圖的方式(而不應該用余弦夾角或者內積)。而從數學上來說,適合L1歸一化的特征(直方圖一類的特征)不適合用歐氏距離來度量距離,而更適合用Hellinger kernel,Mercer kernel之類的,不過我在這里也不做解釋了,大家應該從其他文獻中能找到答案。
本文固定鏈接: http://www.devba.com/index.php/archives/4013.html | 開發吧
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的BOW模型在ANN框架下的解释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SDCC 2015算法专场札记:知名互联
- 下一篇: 微软研究员在ImageNet计算机视觉识