目標識別:Bag-of-words表示圖像

轉載至:https://www.cnblogs.com/shihuajie/p/5782515.html

BOW (bag of words) 模型簡介

Bag of words模型最初被用在文本分類中,將文檔表示成特徵矢量。它的基本思想是假定對於一個文本,忽略其詞序和語法、句法,僅僅將其看做是一些詞彙的集合,而文本中的每個詞彙都是獨立的。簡單說就是講每篇文檔都看成一個袋子(因爲裏面裝的都是詞彙,所以稱爲詞袋,Bag of words即因此而來),然後看這個袋子裏裝的都是些什麼詞彙,將其分類。如果文檔中豬、馬、牛、羊、山谷、土地、拖拉機這樣的詞彙多些,而銀行、大廈、汽車、公園這樣的詞彙少些,我們就傾向於判斷它是一篇描繪鄉村的文檔,而不是描述城鎮的。舉個例子,有如下兩個文檔:

文檔一:Bob likes to play basketball, Jim likes too.

文檔二:Bob also likes to play football games.


基於這兩個文本文檔,構造一個詞典:

Dictionary = {1:”Bob”, 2. “like”, 3. “to”, 4. “play”, 5. “basketball”, 6. “also”, 7. “football”,8. “games”, 9. “Jim”, 10. “too”}。

 
這個詞典一共包含10個不同的單詞,利用詞典的索引號,上面兩個文檔每一個都可以用一個10維向量表示(用整數數字0~n(n爲正整數)表示某個單詞在文檔中出現的次數):

1:[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]

2:[1, 1, 1, 1 ,0, 1, 1, 1, 0, 0]


向量中每個元素表示詞典中相關元素在文檔中出現的次數(下文中,將用單詞的直方圖表示)。不過,在構造文檔向量的過程中可以看到,我們並沒有表達單詞在原來句子中出現的次序(這是本Bag-of-words模型的缺點之一,不過瑕不掩瑜甚至在此處無關緊要)。

爲什麼要用BOW模型描述圖像

SIFT特徵雖然也能描述一幅圖像,但是每個SIFT矢量都是128維的,而且一幅圖像通常都包含成百上千個SIFT矢量,在進行相似度計算時,這個計算量是非常大的,通行的做法是用聚類算法對這些矢量數據進行聚類,然後用聚類中的一個簇代表BOW中的一個視覺詞,將同一幅圖像的SIFT矢量映射到視覺詞序列生成碼本,這樣每一幅圖像只用一個碼本矢量來描述,這樣計算相似度時效率就大大提高了。

 


構建BOW碼本步驟:
1. 假設訓練集有M幅圖像,對訓練圖象集進行預處理。包括圖像增強,分割,圖像統一格式,統一規格等等。

2、提取SIFT特徵。對每一幅圖像提取SIFT特徵(每一幅圖像提取多少個SIFT特徵不定)。每一個SIFT特徵用一個128維的描述子矢量表示,假設M幅圖像共提取出N個SIFT特徵。

3. 用K-means對2中提取的N個SIFT特徵進行聚類,K-Means算法是一種基於樣本間相似性度量的間接聚類方法,此算法以K爲參數,把N個對象分爲K個簇,以使簇內具有較高的相似度,而簇間相似度較低。聚類中心有k個(在BOW模型中聚類中心我們稱它們爲視覺詞),碼本的長度也就爲k,計算每一幅圖像的每一個SIFT特徵到這k個視覺詞的距離,並將其映射到距離最近的視覺詞中(即將該視覺詞的對應詞頻+1)。

完成這一步後,每一幅圖像就變成了一個與視覺詞序列相對應的詞頻矢量。


設視覺詞序列爲{眼睛 鼻子 嘴}(k=3),則訓練集中的圖像變爲:

第一幅圖像:[1 0 0]

第二幅圖像:[5 3 4]......

 
2. 構造碼本。碼本矢量歸一化因爲每一幅圖像的SIFT特徵個數不定,所以需要歸一化。如上述例子,歸一化後爲[1 0 0],1/12*[5 3 4].測試圖像也需經過預處理,提取SIFT特徵,將這些特徵映射到爲碼本矢量,碼本矢量歸一化,最後計算其與訓練碼本的距離,對應最近距離的訓練圖像認爲與測試圖像匹配。

 
當然,在提取sift特徵的時候,可以將圖像打成很多小的patch,然後對每個patch提取SIFT特徵。

 
總結一下,整個過程其實就做了三件事,首先提取對 n 幅圖像分別提取SIFT特徵,然後對提取的整個SIFT特徵進行k-means聚類得到 k 個聚類中心作爲視覺單詞表,最後對每幅圖像以單詞表爲規範對該幅圖像的每一個SIFT特徵點計算它與單詞表中每個單詞的距離,最近的+1,便可得到該幅圖像的碼本。實際上第三步是一個統計的過程,所以BOW中向量元素都是非負的。Yunchao Gong 2012年NIPS上有一篇用二進制編碼用於圖像快速檢索的文章就是針對這類元素是非負的特徵而設計的編碼方案。

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