在一般圖像處理中常用的幾種特征有:
SIFT、SURF、ORB、OpponentColor
對(duì)一張圖片,其存在以上幾類(lèi)不同的特征點(diǎn),這些特征點(diǎn)具有尺度不變性,所以放大縮小或者旋轉(zhuǎn),都不影響特征點(diǎn)的匹配。
因此,我們可以認(rèn)為
將訓(xùn)練集中一張圖片上的所有相應(yīng)特征提取出來(lái),進(jìn)行分類(lèi)學(xué)習(xí)。那么對(duì)于測(cè)試集合中的圖片,我們可以根據(jù)其中所有的特征點(diǎn)屬于某一類(lèi)的概率,計(jì)算出這張圖片最有可能屬于的類(lèi)。
但是,這樣的做法確是低效的,而且效果不良好的。
主要原因有(不妨假定,我們現(xiàn)在提取的是SIFT特征):
- 每張圖片都有成千個(gè)SIFT特征,因此1000張的測(cè)試圖片提取出來(lái)的特征向量可能有超過(guò)1e6個(gè)。數(shù)據(jù)量過(guò)于龐大。
- 每張圖片中本身存在一些實(shí)際上為噪音的特征點(diǎn)。比如,背景上的SIFT特征,對(duì)于我們的分類(lèi)本身屬于一定程度的干擾,當(dāng)然我們可以對(duì)SIFT特征進(jìn)行一些篩選。
- 每張圖片能提取出的SIFT特征數(shù)目與圖片的大小有關(guān)。在實(shí)際測(cè)試中,比較大的圖片上,比如fruits等等類(lèi)的圖片可以有幾千個(gè)特征點(diǎn),而bear類(lèi)因?yàn)槊繌垐D片比較小只有幾百個(gè)特征點(diǎn)。這樣會(huì)導(dǎo)致訓(xùn)練數(shù)據(jù)的失衡。(此處的SIFT特征還沒(méi)有篩選)
針對(duì)上述問(wèn)題,我們使用的是bag-of-words的方法來(lái)對(duì)每張圖片提取特征。其主要的思路如下:
(1)依然是對(duì)每張圖片提取其特征點(diǎn),比如提取了SIFT特征點(diǎn)
(2)對(duì)所有圖片的所有的SIFT特征點(diǎn),整體進(jìn)行kmeans聚類(lèi),將詞劃分成多個(gè)不同的類(lèi),類(lèi)的個(gè)數(shù)定義為wordCount。
(3)對(duì)每張圖片,計(jì)算不同的類(lèi)的SIFT特征的個(gè)數(shù),對(duì)應(yīng)所要得到的特征向量中的一個(gè)維度。則我們可以對(duì)每張圖片生成一個(gè)wordCount維的向量。
形象的理解bag-of-words可以這么看。
比如對(duì)于兩張狗的照片:


它們兩個(gè)是不同的。如果把眼睛部分截取出來(lái),作為一個(gè)單詞,相似度就會(huì)很高。而這兩點(diǎn)相似度很高的局部,對(duì)應(yīng)的SIFT特征也是很高的匹配度的。


對(duì)所有的狗來(lái)講,可能每個(gè)與dog eye這個(gè)詞有關(guān)SIFT特征都會(huì)出現(xiàn)一次或者多次,而在其他類(lèi)里面很可能這個(gè)詞有關(guān)的特征就不會(huì)出現(xiàn)。
所以我們可以認(rèn)為所有的SIFT特征是可以劃分出不同的類(lèi)的,也就是不同的詞(比如dog eye),這些被劃分出來(lái)的詞在不同的類(lèi)中的出現(xiàn)頻率是不一樣的。而這個(gè)分類(lèi),我們使用kmeans實(shí)現(xiàn)。
那么,比如狗、世界杯、槍的特征通過(guò)聚類(lèi),可以被劃分成如下的單詞本。

則相應(yīng)的,比如dog類(lèi)在dogeye維度上的頻率就會(huì)更高一些,worldcup在football維度上頻率會(huì)更高一些。
最后,使用的是SIFT+BoW模型+線(xiàn)性SVM,結(jié)果如下:
(截圖here)
其實(shí)并沒(méi)有那么理想,也是在意料之中的,因?yàn)閷?duì)文本來(lái)講單詞的順序也許不是那么重要。但對(duì)于圖像來(lái)講,圖像的結(jié)構(gòu)還是很重要的,而我們?cè)趶氖褂肧IFT特征開(kāi)始就已經(jīng)破壞了圖像的結(jié)構(gòu)特征。所以這也是這種方法不能得到完美的原因。