計算機視覺中的詞袋模型(Bow,Bag-of-words)
讀 'xw20084898的專欄'的blog Bag-of-words model in computer vision
Bag-of-words 模型
之前教研室有個小伙伴在做文本方面的東西,經常提及詞袋模型,只知道是文本表示的一種,可是最近看的關於CV的論文中也出現BoW模型,就很好奇BoW到底是個什么東西。
BoW起始可以理解為一種直方圖統計,開始是用於自然語言處理和信息檢索中的一種簡單的文檔表示方法。 和histogram 類似,BoW也只是統計頻率信息,並沒有序列信息。而和histogram不同的是,histogram一般統計的某個區間的頻數,BoW是選擇words字典,然后統計字典中每個單詞出現的次數。
比如下面兩個文檔
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}
那么兩篇文檔統計出來的BoW 向量就是
[1,2,1,1,1,0,0,0,1,1]
[1,1,1,1,0,1,1,1,0,0]
BoW model in CV
2003年以來,BoW出現在CV中,如圖像分類、圖像檢索等。
其大概過程首先提取圖像集特征的集合,然后通過聚類的方法聚出若干類,將這些類作為dictionary,即相當於words,最后每個圖像統計字典中words出現的頻數作為輸出向量,就可以用於后續的分類、檢索等操作。
以sift特征為例,假設圖像集中包含人臉、自行車、吉他等,我們首先對每幅圖像提取sift特征,然后使用如kmeans等聚類方法,進行聚類得到碼本(dictionary)
之后在每一幅圖像中統計sift特征點在碼本上的頻數分布,得到的向量就是該圖像的BoW向量。
最后就可以使用這些向量進行模式識別的其他操作了。
下圖中給出了一個整體的過程
