1. 程式人生 > >Bag of words模型

Bag of words模型

視覺 ron 句法 mil soft ont words mage size

因為在使用SIFT特征作圖像分類時,一張圖像通常有很多keypoints,一個keypoints有一個128維的特征向量,而若直接將這些特征向量只做簡單的串聯就輸入分類器中,是不對的。我們需要一個能夠表示整體圖像的特征向量,所以要用到該模型。今天寫一下學習的筆記。

簡介:

Bag of words模型最初被用在文本分類中,將文檔表示成特征矢量。

對於一個文檔,忽略單詞之間的詞序、語法和句法等,僅將其看作是一堆單詞(words)的集合。

多個文檔的單詞集合可組成一個袋子(bag)。袋子也稱為詞典、詞匯表(Dictionary / vocabulary)。

袋中每個單詞相互獨立,將其聚類,類內相似度高,類間相似度低。合並後袋中只有不重復的單詞(類)。

統計袋中每個單詞在每個文檔中出現的次數。假設有K個單詞,則可對每個文檔可畫出對應的K維直方圖。

若是分類問題,則可根據K維直方圖中的單詞詞頻,判斷每個文檔屬於哪一類別。

經典例子:

文檔一: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維特征向量:

文檔一:[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]

文檔二:[1, 1, 1, 1 ,0, 1, 1, 1, 0, 0]

向量中並沒有表現出單詞在文檔中的詞序。

應用於CV:

Bow模型也可用於計算機視覺的圖像分類(image classification)中,每張圖像的特征可視為視覺單詞。A bag of visual words則為統計視覺單詞出現的次數,用一個K維特征向量表示每張圖像。

如何利用Bag of words模型將一幅圖像表示為一個特征向量:

1、利用SIFT算法從屬於不同類別的圖像中提取出N個局部不變的特征點(keypoints)向量,作為視覺詞匯;(每張圖像的N,個數不同)

2、將所有特征點向量集中到一塊,利用K-Means算法(基於樣本間相似性度量的間接聚類方法)合並詞義相近的視覺詞匯,構造一個包含K個視覺詞匯的詞匯表(vocabulary);

3、統計詞匯表中每個單詞在每張圖像中出現的次數,從而將每張圖像表示為一個K維數值向量。即所求特征向量,最後用於分類器的輸入。

Bag of words模型