1. 程式人生 > >詞袋模型(Bag-of-words model)

詞袋模型(Bag-of-words model)

Bag-of-words model (BoW model) 最早出現在NLP和IR領域. 該模型忽略掉文字的語法和語序, 用一組無序的單詞(words)來表達一段文字或一個文件. 近年來, BoW模型被廣泛應用於計算機視覺中. 與應用於文字的BoW類比, 影象的特徵(feature)被當作單詞(Word).

應用於文字的BoW model

Wikipedia上給出瞭如下例子:

  John likes to watch movies. Mary likes too.

  John also likes to watch football games.

根據上述兩句話中出現的單詞, 我們能構建出一個字典 (dictionary):

{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also": 6, "football": 7, "games": 8, "Mary": 9, "too": 10}

該字典中包含10個單詞, 每個單詞有唯一索引, 注意它們的順序和出現在句子中的順序沒有關聯. 根據這個字典, 我們能將上述兩句話重新表達為下述兩個向量:

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

 [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]

這兩個向量共包含10個元素, 其中第i個元素表示字典中第i個單詞在句子中出現的次數. 因此BoW模型可認為是一種統計直方圖 (histogram). 在文字檢索和處理應用中, 可以通過該模型很方便的計算詞頻.

應用於計算機視覺的BoW model

Fei-fei Li[3]在中提出了用BoW模型表達影象的方法. 他們認為, 影象可以類比為文件(document), 影象中的單詞(words)可以定義為一個影象塊(image patch)的特徵向量. 那麼影象的BoW模型即是 “影象中所有影象塊的特徵向量得到的直方圖”. 建立BoW模型主要分為如下幾個步驟:

1.特徵提取

假設有N張影象, 第i張影象影象可由n(i)個image patch組成, 也即可以由n(i)個特徵向量表達. 則總共能得到sum(n(i))個特徵向量(即單詞).

特徵向量可以根據特徵問題自行設計, 常用特徵有Color histogram, SIFT, LBP等.

2.生成字典/碼本(codebook)

對上一步得到的特徵向量進行聚類(可以使用K-means等聚類方法), 得到K個聚類中心, 用聚類中心構建碼本.

3.根據碼本生成直方圖

對每張圖片, 通過最近鄰計算該圖片的每個 “單詞”應該屬於codebook中的 “哪一類”單詞, 從而得到該圖片對應於該碼本的BoW表示.

Reference

[2]. L. Fei-Fei and P. Perona (2005). “A Bayesian Hierarchical Model for Learning Natural Scene Categories”. Proc. of IEEE Computer Visin and Pattern Recognition. pp. 524–531.