What is the Best Multi-Stage Architecture for Object Recognition?

Deep Learning論文筆記之(六)Multi-Stage多級架構分析

[email protected]

http://blog.csdn.net/zouxy09

 

         自己平時看了一些論文,但老感覺看完過後就會慢慢的淡忘,某一天重新拾起來的時候又好像沒有看過一樣。所以想習慣地把一些感覺有用的論文中的知識點總結整理一下,一方面在整理過程中,自己的理解也會更深,另一方面也方便未來自己的勘察。更好的還可以放到博客上面與大家交流。因爲基礎有限,所以對論文的一些理解可能不太正確,還望大家不吝指正交流,謝謝。

本文的論文來自:

Kevin Jarrett, Koray Kavukcuoglu, Marc’Aurelio Ranzato, and Yann LeCun, ”What is the Best Multi-Stage Architecture for Object Recognition?”, in Proc. International Conference on Computer Vision (ICCV’09), 2009

         這裏面還提供了一個精簡版的Matlab代碼。實現的是random convolutional filterslinear logistic regression classifier的兩級目標識別系統。

         下面是自己對其中的一些知識點的理解:

 

What is the Best Multi-Stage Architecture for Object Recognition?

         對目標識別怎樣的多級架構Multi-Stage Architecture還是最好的?在當前的很多目標識別系統中,特徵提取階段一般由一組濾波器,再進行非線性變換和一些類型的特徵pooling層組成。大部分系統都使用一級特徵提取,這時候的濾波器是hard-wired(人工選擇的,硬連線的,參數不可學習調整)的,或者使用兩級,這時候其中的一級或者兩級的濾波器都可以通過監督或者非監督的方式學習得到。

       本文關注三個問題:

1)濾波器組後面接的non-linearities非線性算法是如何影響識別的準確性的?

2)通過監督或者非監督方式學習到的濾波器組是否比隨機的濾波器組或者人工指定的濾波器要好?

3)與僅有一級的特徵提取對比,兩級的特徵提取是否還有其他優點?

       我們證明了:

1)使用包含校正和局部對比度歸一化的非線性算子對增加目標識別的準確性來說有很大幫助。

2)兩級的特徵提取比一級的要好。準確率更高。

3)驚喜的是,用隨機初始化的濾波器組的兩級系統卻可以在Caltech這個數據中達到63%的識別率。當然,這裏麪包含了合適的非線性算子和pooling層。

4)經過監督微調,系統在NORB數據庫上達到當前領先水平。而且非監督預訓練後再加監督微調可以在Caltech這個數據庫中達到更好的準確率(大於63%)。然後在沒有處理過的MNIST數據庫中,可以達到目前我們知道的最低的0.53%的錯誤率。

 

一、概述

         在過去這幾年,對於目標識別來說,出現了很多不錯的特徵描述子。很多方法都是把輸入圖像劃分爲一個個規律排列的密集的patch,然後提取這些patch的特徵。再以某種方式組合這些patch的特徵作爲這個輸入圖像的特徵。概括的來說,這些系統的很大一部分都是這樣的一個特徵提取過程:輸入經過一個濾波器組filter bank(一般是基於方向性的邊緣檢測器),再經過一個非線性算子non-linear operationquantization, winner-take-all, sparsification, normalization, and/or point-wise saturation),然後用一個pooling操作(把實空間或者特徵空間鄰域的值通過一個max, average, or histogramming operator)來絳維和得到一定的不變性。例如俺們熟知的SIFT特徵,它先通過對每個小patch經過方向性邊緣檢測器,然後用winner-take-all算子來獲取最顯著的方向。最後,在更大塊的patch上面統計局部方向的直方圖,pooling成一個稀疏向量

        對於一層特徵提取的系統,也就是提取到了上面的這個特徵後,例如SIFTHOG等,然後直接接一個監督學習的分類器,就構成了一個目標識別系統。還有一些模型會使用兩級或者更多級的特徵提取器,然後再接一個監督學習分類器來構成一個比較複雜的目標識別系統。這些系統本質的差別在於:有一個或者多個特徵提取層、濾波器組後使用的非線性算子、濾波器組的得到(人工選擇、非監督學習還是監督學習)和頂層的分類器的選擇(線性分類器還是更復雜的分類器)。

        一般對濾波器組的選擇是Gabor小波,還有人選擇一些簡單的方向性檢測濾波器組,也就是梯度算子,例如SIFTHOG。還有一些直接通過非監督學習方法直接從訓練數據中學習這些濾波器組。當在自然圖像中訓練的時候,學到的濾波器也是類似於Gabor邊緣檢測的東西。特徵學習方法的一個好處就是它可以分級的學習特徵。因爲我們具有一定的先驗知識,覺得第一級的特徵就應該是邊緣檢測器,但第二層特徵又應該是什麼呢?人就沒有這個類似的先驗知識了。所以就比較難人工設計一個比較好二級特徵提取器。所以說,二級或者多級特徵必須讓系統自己學習。現在出現的方法也很多了,有監督的,非監督的,或者兩者聯合的。

       咋一看,用像Caltech-101這些非常少的訓練數據庫(這個數據庫要識別101類的物體,但每類只提供了很少的有標籤訓練數據)只用監督學習算法來訓練一個完整的系統顯得有點天真和不被看好,因爲模型參數的個數比訓練樣本的個數都要多很多。所以很多人覺得只有非常認真的訓練或者人工挑選好的濾波器組纔可以有好的識別性能,然後再考慮非線性算子的選擇。其實,這些觀點,都是wrong的。

 

二、模型架構

         這部分講述如何去構建一個分級的特徵提取和分類系統。分級通過堆疊一個或者多個特徵提取階段,每個階段包括一個濾波器組合層、非線性變換層和一個pooling層,pooling層通過組合(取平均或者最大的)局部鄰域的濾波器響應,因而達到對微小變形的不變性。

1濾波器組層Filter Bank Layer-FCSG

        FCSG一般包括三部分:一組卷積濾波器(C)、再接一個sigmoid/tanh非線性變換函數(S),然後是一個可訓練的增益係數(G)。分別對應下面的三個運算:

2校正層Rectification Layer-Rabs

       只是簡單的一個取絕對值的操作(如果是tanh,則存在負的值,但在圖像中負值是不表示的,而對於卷積來說,裏面的都是絕對值越大,非線性函數輸出的絕對值最大,實際意義是一樣的。卷積是越相似,輸出值越大)。除了絕對值算子外,我們還試過了其他的非線性算子,產生的效果差不多。

3局部對比度歸一化層Local Contrast Normalization Layer-N

        該模塊主要進行的是局部做減和做除歸一化,它會迫使在特徵map中的相鄰特徵進行局部競爭,還會迫使在不同特徵maps的同一空間位置的特徵進行競爭。在一個給定的位置進行減法歸一化操作,實際上就是該位置的值減去鄰域各像素的加權後的值,權值是爲了區分與該位置距離不同影響不同,權值可以由一個高斯加權窗來確定。除法歸一化實際上先計算每一個特徵maps在同一個空間位置的鄰域的加權和的值,然後取所有特徵maps這個值的均值,然後每個特徵map該位置的值被重新計算爲該點的值除以max(那個均值,該點在該map的鄰域的加權和的值)。分母表示的是在所有特徵maps的同一個空間鄰域的加權標準差。哦哦,實際上如果對於一個圖像的話,就是均值和方差歸一化,也就是特徵歸一化。這個實際上是由計算神經科學模型啓發得到的。(這裏自己有點理解,請見本文的第四節

4、平均池化和子採樣層Average Pooling and Subsampling Layer -PA

       該層的作用是使得提取的特徵對微小變形魯棒,和視覺感知中的複雜細胞的角色差不多。採樣窗口所有值取平均得到下采樣層的值。

5、最大值池化和子採樣層Max-Pooling and Subsampling Layer -PM

       可以用任何一種對稱的pooling操作實現對提取的特徵的平移不變性。最大池與平均池相似,只是最大取代了平均。一般來說,池化窗口是不重疊的。

 

三、實驗與結論

        該文做了很多實驗來驗證不同的模型架構的性能(組合上面的不同的層)。這裏就不列舉實驗結果了,可以回原文查看。這裏就直接回答一開始的那幾個問題吧:

1)濾波器組後面接的non-linearities非線性算法是如何影響識別的準確性的?

        俺們的實驗結論是,簡單的矯正過的非線性算子會提高識別性能。原因可能有二。a)特徵的對立polarity也就是負值的特徵)和目標的識別是無關的。b)在採用平均池化的時候,矯正層的添加會消去鄰近的濾波器輸出之間的cancellations,因爲如果沒有矯正,平均下采樣只會傳播輸入的噪聲。另外,局部歸一化層也會增加性能,因爲它可以使監督學習算法更快,也許是因爲所有的變量都具有相似的方差了(與其他白化和去相關的方法的優點一樣),這樣會加快收斂速度。

2)通過監督或者非監督方式學習到的濾波器組是否比隨機的濾波器組或者人工指定的濾波器要好?

         實驗結果很驚喜,在兩級系統中採樣隨機濾波器組在Caltech-101中居然達到了挺高的62.9%的識別率,但在NORB數據庫中就顯得有點低調了,可能這種情況只會在訓練樣本集較少的時候纔出現。另外,非監督預訓練接個監督微調會有最好的效果,儘管比單純的全部使用監督會差點。

3)與僅有一級的特徵提取對比,兩級的特徵提取是否還有其他優點?

         實驗證明,兩級比一級好。我們這裏,兩級系統的性能和最好的一級系統的性能:SIFT特徵+PMK-SVM分類器相媲美,也許PM Kernel還隱藏着實現了我們的第二級特徵提取的功能。

 

四、關於local contract normalization

        這裏對這個東西再囉嗦一下。local contract normalization 這個歸一化包括兩個部分:局部做減和局部做除(local subtractive and divisive normalizations)。我的理解:自然圖像存在低階和高階的統計特徵,低階(例如二階)的統計特徵是滿足高斯分佈的,但高階的統計特性是非高斯分佈。圖像中,空間上相鄰的像素點有着很強的相關性。而對於PCA來說,因爲它是對協方差矩陣操作,所以可以去掉輸入圖像的二階相關性,但是卻無法去掉高階相關性。而有人證明了除以一個隱含的變量就可以去除高階相關性。你可以理解爲一張圖像x的像素值是一個隨機變量,它由兩個獨立的隨機變量相乘得到,分別是二階量和高階量相乘,二階量的相關性可以由PCA去掉,然後高階量(這個是隱含的,需要通過MAP最大後驗估計等方法估計出來)直接用x除掉就好了。

        有論文的操作是這樣:

        對輸入圖像的每一個像素,我們計算其鄰域(例如3x3窗口)的均值,然後每個像素先減去這個均值,再除以這個鄰域窗口(例如3x3窗口)拉成的9維向量的歐幾里德範數如果這個範數大於1的時候才除:這個約束是爲了保證歸一化只作用於減少響應(除以大於1的數值變小),而不會加強響應(除以小於1的數值變大))。也有論文在計算均值和範數的時候,都加入了距離的影響,也就是距離離該窗口中心越遠,影響越小,例如加個高斯權重窗口(空間上相鄰的像素點的相關性隨着距離變大而變小)。

       其實在這裏,很多自己也還不清楚,所以上面的不一定正確,僅供參考。還望明白的人也指點一下。謝謝。

關於local contract normalization可以參考以下兩篇文章:

S. Lyu 等:Nonlinear image representation using divisive normalization.

N. Pinto等: Why is real-world visual object recognition hard?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章