1. 程式人生 > >基於BoF(Bag-of-feature)影象分類

基於BoF(Bag-of-feature)影象分類

       影象分類一直是影象處理問題的熱點,近年來基於BoF(bag-of-feature)特徵袋方法倍受關注,特徵袋方法(BoF)是詞袋方法(BoW)一種改進。本文簡要的介紹了基本BoF影象分類的思路和其目前的一些改進方法。 字典學習過程(train a codebook) (1)特徵提取:利用SIFT等區域性描述子(SIFT方法最為常用,OpponentSIFT在各類SIFT改進方式綜合表現最為優秀)提取影象的特徵點,這個過程一般會生成非常多的特徵點 (2)特徵聚類:由於一般提取的特徵點實在太多(每張訓練圖片上都會提取到成千上萬的特徵點),不太適合分析和操作,所以一般會利用K-Means聚類等方法將所以特徵點分成K類,這裡每個類,我們就稱為一個詞(codeword) (3)形成字典:所有的類(詞codeword)就構成字典(codebook) 影象投影(這個過程也叫Feature Pooling) (1)特徵提取:利用SIFT提取測試影象中所有的特徵點 (2)查詢對應詞:就是找每個特徵點對應的詞 (3)構成影象特徵詞表:將字典內每個詞出現頻率構成影象特徵向量(顯然是K維向量) 分類:
       現在每張影象我們都可以得到一個K維特徵向量(反映了字典各詞的出現頻率),現在就是傳統的分類問題了,最常用的方法是SVM:) 然而傳統的BoF影象分類問題也存在問題: (1)SIFT區域性描述子能較好的描述影象紋理資訊(描述方向梯度),但是也有可能造成其他方面資訊的丟失,所以一般解決方法是利用多描述子混合的思路。 (2)這種一個特徵點對應於一個詞的方法顯然忽略影象空間上下文(Spatial Context Modeling),這很容易造成詞語義的模糊,所以我們需要構建空間結構,更好的Feature Pooling :)        最為成功的嘗試就是SPM(Spatial Pyramid Matching 空間金字塔匹配),這個方法就是將影象分成多個尺度小塊,這裡影象每個尺度內的小分塊都會得到一個特徵詞表,所以特徵詞表串聯起來就得到整個影象特徵詞表,這樣做好處是保留了影象空間資訊,另外一種思路是在方向梯度空間內操作。       另一種方法是引入片語(phrases),在由詞(low-level)到主題(high-level)中引入中間層(mid-level),比如LLC引入特徵點的位置約束。

       下面這種GPP的方法也很類似,其將特徵點周圍最近的K個特徵點共同組成了一個片語(Phrase),此時整個Feature Pooling過程變為word-phrase-theme
        在BoF影象分類問題上,這方面(Better coding + pooling)的研究是重點,上面關於SPM和LLC,我只是簡要說了一些目的和原理,不過網上有很多關於SPM及稀疏編碼的文章可以參考,特別是這篇http://blog.csdn.net/jwh_bupt/article/details/9837555,轉載也挺多的。 (3)影象中一般都存在同主題無關的內容,會影響分類的結果,改進方法是檢測興趣區域(detection of regions-of-interest(ROI))並給不同的權重。