圖像的稀疏表示——ScSPM和LLC的總結

圖像的稀疏表示——ScSPM和LLC的總結算法

稀疏編碼系列:app

---------------------------------------------------------------------------函數

 

  • 前言

       上一篇提到了SPM。這篇博客打算把ScSPM和LLC一塊兒總結了。ScSPM和LLC其實都是對SPM的改進。這些技術,都是對特徵的描述。它們既沒有創造出新的特徵(都是提取SIFT,HOG, RGB-histogram et al),也沒有用新的分類器(也都用SVM用於最後的image classification),重點都在於如何由SIFT、HOG造成圖像的特徵(見圖1)。從BOW,到BOW+SPM,都是在作這一步。說到這,怕會迷糊你們------SIFT、HOG自己不就是提取出的特徵麼,它們不就已經造成了對圖像的描述了嗎,爲啥還有我後面提到的各類BOW云云呢抓狂。這個問題沒錯,SIFT和HOG它們確實自己已是提取到的特徵了,咱們姑且把它們記爲x。而如今,BOW+SPM是對特徵x再進行一層描述,就成了Φ(x)——這至關因而更深一層(deeper)的model。一個十分類似的概念是SVM裏面的核函數kernel,K=Φ(x)Φ(x),x是輸入的特徵,Φ(x)則對輸入的特徵又作了一層抽象(不過咱們用核函數沒有顯式地對Φ(x)作定義罷了)。根據百度的餘凱老師在CVPR2012的那個Tutorial上作的總結[5]:Deeper model is preferred,天然作深一層的抽象效果會更好了。而Deep Learning也是一樣的道理變得火了起來。性能

       再次盜用一些餘凱老師在CVPR2012的那個Tutorial上的一些圖:學習

圖 (1)測試

        SPM,ScSPM,LLC所作的工做也都集中在design feature這一步,而不是在Machine Learning那一步。值得注意的是,咱們一直在Design features,而deep learning則是design feature learners。ui

      BOW+SPM的總體流程如圖(2)所示:編碼

圖(2)spa

        Feature Extraction的總體過程就是先提取底層的特徵(SIFT,HOG等),而後通過coding和pooling,獲得最後的特徵表示。.net

             ----Coding: nonlinear mapping data into another feature space

             ----Pooling: obtain histogram

        而SIFT、HOG自己就是一個coding+pooling的過程,所以BOW+SPM就是一個兩層的Coding+Pooling的過程。因此能夠說,SIFT、SURF等特徵的提出,是爲了尋找更好的第一層Coding+Pooling的辦法;而SPM、ScSPM、LLC的提出,是爲了尋找更好的第二層Coding+Pooling的辦法。而ScSPM和LLC所提出的更好的Coding辦法就是Sparse Coding。

圖(3)

 

  • 再前言

        在總結ScSPM以前又要囉嗦些話。爲啥會有SPM→ScSPM呢?緣由之一是爲了尋找better coding + better pooling的方式提升性能,緣由之二就是提升速度。如何提升速度?這裏的速度,不是Coding+Pooling的速度,而是分類器的速度。SPM設計的是一個Linear feature,在文章中做者用於實驗則是用了nonlinear SVM(要用Mercer Kernels)。相比linear SVM,nonlinear SVM在training和testing的時候速度會慢的。至於其緣由,咱們不妨看看SVM的對偶形式:

(1)

        若是核函數是一個線性的kernel:K(z, zi)=zTzi,那麼SVM的決策函數就能夠改寫爲:

    (2)

          從兩式能夠看見,拋開訓練和存儲的複雜度不說,對於測試來講,(1)式對每一個測試樣本要單獨計算K(z, zi),所以testing的時間複雜度爲O(n)。而(2)式的wT能夠一次性事先算出,因此每次testing的時間複雜度爲O(1)。此外,linear classifier的可擴展性會更好。

          所以,若是能在coding+pooling後設計獲得線性可分的特徵描述,那就最好了。所以可否設計一個nonlinear feature + linear SVM獲得與 linear feature + nonlinear SVM等效甚至更好的效果,成爲ScSPM和LLC的研究重點。

  • ScSPM

        SPM在coding一步採用的是Hard-VQ,也就是說一個descriptor只能投影到dictionary中的一個term上。這樣就形成了明顯的重建偏差(worse reconstruction,large quantization errors)。這樣,本來很類似的descripors通過coding以後就會變得很是不類似了。ScSPM爲此取消了這一約束,它認爲descripor能夠投影到某幾個terms上,而不只僅是一個。所以,其目標函數變成了:

     (3)

        其中M是descriptor的數目,Um表示第m個descriptor在字典V上的投影係數。

        它對投影係數用L1-norm作約束實現了稀疏。求解問題稱爲LASSO (least absolute shrinkage and selection operator),在獲得稀疏結果的同時,它沒法獲得解析解,所以速度確定是很慢的。關於L1-norm和LASSO問題,能夠參看這裏

        爲何Sparse Coding好,主要有如下幾個緣由:

      1)已經提到過的重建性能好;[2]

      2)sparse有助於獲取salient patterns of descripors;[2]

      3)image statistics方面的研究代表image patches都是sparse signals;[2]

      4)biological visual systems的研究代表信號的稀疏特徵有助於學習;[4]

      5)稀疏的特徵更加線性可分。[2]

         總之,"Sparse coding is a better building block「。

         Coding事後,ScSPM採用的Pooling方法是max pooling:Zj=max Uij。相比SPM的average pooling:Zj=1/M *Σ Uij。能夠看見average pooling是一個linear feature representation,而max pooling是nonlinear的。我是這麼理解再前言中提到的linear和nonlinear feature的。(@13.08.11:今天在寫理解sparse coding的時候發現這裏搞錯了。不光是pooling的函數是線性的,VQ的coding獲得的u關於x好像也是線性的。)

        做者在實驗中得出max pooling的效果好於average pooling,緣由是max pooling對local spatial variations比較魯棒。而Hard-VQ就很差用max pooling了,由於U中各元素非0即1。

        另外實驗的一個有趣結果是發現ScSPM對大的codebook size表現出更好的性能,反觀SPM,codebook大小對SPM結果影響不大。至於爲啥,我也不懂。

  • LLC

         LLC和ScSPM差很少了,也是利用了Sparsity。值得一說的是,其實Hard-VQ也是一種Sparse Coding,只不過它是一種重建偏差比較大的稀疏編碼。LLC對ScSPM的改進,則在於引入了locality。爲了便於描述,盜用一下論文的圖:

圖(4)

        這個圖實在是太棒了,太能解釋問題了。VQ不用說,重點在於SC和LLC之間,LLC引入了locality的約束,即不只僅是sparse要知足,非零的係數還應該賦值給相近的dictionary terms。做者在[4]中解釋到,locality 很重要是由於:

     1)nonlinear function的一階近似要求codes是local的;

     2)locality可以保證codes的稀疏性,而稀疏卻不能保證locality;

     3)稀疏的coding只有再codes有局部性的時候有助於learning。

        總之,"locality is more essential than sparsity"。

        LLC的目標函數是:

     (4)

       和(3)同樣,(4)能夠按照加號的先後分紅兩部分:加號前的一項最小化是爲了減小量化偏差(學習字典、確認投影係數);加號後的一項則是作出假設約束(包括是一些參數的regularization)。這個求解是能夠獲得閉合解的,同時也有快速的近似算法解決這個問題,所以速度上比ScSPM快。

       di描述的是xi到每一個dictionary term的距離。顯然這麼作是爲了下降距離大的term對應的係數。

       locality體現出的最大優點就是,類似的descriptors之間能夠共享類似的descriptors,所以保留了codes之間的correlation。而SC爲了最小化重建偏差,可能引入了不相鄰的terms,因此不能保證smooth。Hard-VQ則更不用說了。

       實驗部分,則採用max pooling + L2-normalization。

   

        文章的最後,盜竊一個ScSPM第一做者的總結表格結束吧(又是以偷竊別人圖標的方式結束委屈

 

References:

[1] S. Lazebnik, C. Schmid, and J. Ponce. Beyond bags of features: Spatial pyramid matching for recognizing natural scene categories. CVPR2006

[2] Jianchao Yang, Kai Yu, Yihong Gong, and Thomas Huang. Linear spatial pyramid matching using sparse coding for image classification. CVPR2009.

[3] Jinjun Wang, Jianchao Yang, Kai Yu, Fengjun Lv, and Thomas Huang. Locality-constrained linear coding for image classification. CVPR2010

[4] Kai Yu, Tong Zhang, and Yihong Gong. Nonlinear learning using local coordinate coding. NIPS2009.

[5] Kai Yu. CVPR12 Tutorial on Deep Learning: Sparse Coding.

-----------------------

做者:jiang1st2010

引用請註明來源:http://blog.csdn.net/jwh_bupt/article/details/9837555

相關文章
相關標籤/搜索