在一般圖像處理中常用的幾種特征有:
SIFT
、SURF
靠闭、ORB
帐我、OpponentColor
對一張圖片,其存在以上幾類不同的特征點阎毅,這些特征點具有尺度不變性焚刚,所以放大縮小或者旋轉(zhuǎn),都不影響特征點的匹配扇调。
因此矿咕,我們可以認為
將訓(xùn)練集中一張圖片上的所有相應(yīng)特征提取出來,進行分類學(xué)習(xí)狼钮。那么對于測試集合中的圖片碳柱,我們可以根據(jù)其中所有的特征點屬于某一類的概率,計算出這張圖片最有可能屬于的類熬芜。
但是莲镣,這樣的做法確是低效的,而且效果不良好的涎拉。
主要原因有(不妨假定瑞侮,我們現(xiàn)在提取的是SIFT特征):
- 每張圖片都有成千個SIFT特征,因此1000張的測試圖片提取出來的特征向量可能有超過1e6個鼓拧。數(shù)據(jù)量過于龐大半火。
- 每張圖片中本身存在一些實際上為噪音的特征點。比如季俩,背景上的SIFT特征钮糖,對于我們的分類本身屬于一定程度的干擾,當(dāng)然我們可以對SIFT特征進行一些篩選酌住。
- 每張圖片能提取出的SIFT特征數(shù)目與圖片的大小有關(guān)店归。在實際測試中,比較大的圖片上酪我,比如fruits等等類的圖片可以有幾千個特征點消痛,而bear類因為每張圖片比較小只有幾百個特征點。這樣會導(dǎo)致訓(xùn)練數(shù)據(jù)的失衡都哭。(此處的SIFT特征還沒有篩選)
針對上述問題肄满,我們使用的是bag-of-words的方法來對每張圖片提取特征谴古。其主要的思路如下:
(1)依然是對每張圖片提取其特征點,比如提取了SIFT特征點
(2)對所有圖片的所有的SIFT特征點稠歉,整體進行kmeans聚類掰担,將詞劃分成多個不同的類,類的個數(shù)定義為wordCount怒炸。
(3)對每張圖片带饱,計算不同的類的SIFT特征的個數(shù),對應(yīng)所要得到的特征向量中的一個維度阅羹。則我們可以對每張圖片生成一個wordCount維的向量勺疼。
形象的理解bag-of-words可以這么看。
比如對于兩張狗的照片:
它們兩個是不同的捏鱼。如果把眼睛部分截取出來执庐,作為一個單詞,相似度就會很高导梆。而這兩點相似度很高的局部轨淌,對應(yīng)的SIFT特征也是很高的匹配度的。
對所有的狗來講看尼,可能每個與dog eye這個詞有關(guān)SIFT特征都會出現(xiàn)一次或者多次递鹉,而在其他類里面很可能這個詞有關(guān)的特征就不會出現(xiàn)。
所以我們可以認為所有的SIFT特征是可以劃分出不同的類的藏斩,也就是不同的詞(比如dog eye)躏结,這些被劃分出來的詞在不同的類中的出現(xiàn)頻率是不一樣的。而這個分類狰域,我們使用kmeans實現(xiàn)媳拴。
那么,比如狗兆览、世界杯屈溉、槍的特征通過聚類,可以被劃分成如下的單詞本拓颓。
則相應(yīng)的语婴,比如dog類在dogeye維度上的頻率就會更高一些描孟,worldcup在football維度上頻率會更高一些驶睦。
最后,使用的是SIFT+BoW模型+線性SVM匿醒,結(jié)果如下:
(截圖here)
其實并沒有那么理想场航,也是在意料之中的,因為對文本來講單詞的順序也許不是那么重要廉羔。但對于圖像來講溉痢,圖像的結(jié)構(gòu)還是很重要的,而我們在從使用SIFT特征開始就已經(jīng)破壞了圖像的結(jié)構(gòu)特征。所以這也是這種方法不能得到完美的原因孩饼。