BOW模型在ANN框架下的解釋

         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之類的,不過我在這裏也不做解釋了,大家應該從其他文獻中能找到答案。


--------

作者:jiang1st2010

轉載請註明出處:http://blog.csdn.net/jwh_bupt/article/details/17540561

http://jiangwh.weebly.com/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章