Convolutional Neural Network

Why CNN for Image

圖片是由像素點組成的,能夠這樣來解釋深度神經網絡對圖片的處理。網絡

第一層的layer是最基本的分類器,區分一些基本的特徵,好比顏色、是否有斜線。架構

第二層的layer會檢測更加複雜的東西,好比一些簡單的組合線條;ide

後面的layer也會愈來愈複雜……學習

咱們能夠經過思考圖像的特徵來簡化網絡。3d

1.圖片中一些特徵一般比整個圖片要小,好比要檢測圖像中是否有鳥嘴。blog

 

 咱們的neuron不須要看整個圖像來發現某些特徵,因此咱們只須要把鳥嘴那一小部分的圖片,用不多的參數跟neuron關聯起來。圖片

 2.一樣的特徵可能出如今圖片的不一樣位置。io

咱們不會爲每一個不一樣位置的特徵單獨訓練一個neuron,由於它作的都是一樣的事情,就是檢測是否出現鳥嘴,只是出現的位置不同罷了。神經網絡

3.subsampling 可使圖片縮小,但不影響圖片的表達。network

每隔一行、一列刪除一行pixel,就是subsampling,咱們一樣能夠看到圖片表達的信息,就是一隻鳥。

因爲圖片縮小了,這樣又能夠減小參數了。

The whole CNN

來看看整個CNN的架構

從圖片做爲輸入開始,通過多層的Convolution層+MaxPooling的組合,而後是Flatten層,最後通過一個Fully Connected network。

 其中,上面討論的關於圖片的三個特色,在CNN的不一樣層中有相應處理。

Property一、2是小的特徵和 特徵的不一樣位置,經過Convolution層進行處理;

Property3 Subsampling經過MaxPooling處理。

CNN – Convolution

這裏須要提到的是Filter。Filter其實就是一個矩陣,它們是神經網絡須要學習的參數。

每一個Filter在圖片中進行掃描,檢測3*3的特徵。

Filter從圖片的左上角開始,以stride爲步長進行圖片掃描,圖片中每3*3的子圖會和Filter做內積,而後獲得一個輸出值。

上面就是FIlter1掃描整個6×6圖片後獲得的4×4的結果矩陣。

能夠進一步理解的是,該Filter對角線全爲1,表示檢測圖像是否出現相似的斜線,出現斜線的地方在結果矩陣中的值爲最大。

對於一張圖片,咱們會同時檢測不少特徵,每一個filter只作一件相同的事情,因此須要有不少的Filter,

它們放在一塊兒就叫作Feature Map。

對於彩色圖片,一個Filter是3維的,如上圖,Filter是3×3×3的立方體(tensor).

下面將Convolution層和Fully Connected鏈接對應理解。

將圖片拉直成一個列向量,上面的Filter鏈接的是1,2,3,7,8,9,13,14,15的輸入單元,而不是全鏈接,Filter的每個份量能夠看做是全鏈接網絡中的w和b。

這樣相比於全鏈接的網絡,就只須要更少的參數。

並且,以前討論過,檢測同一個特徵只使用相同的Filter,因此每個neuron共用相同的參數,這就是Shared weights。

這會使CNN的參數變得更少。

CNN – Max Pooling

將每個Filter檢測後的結果,劃分紅2×2的小塊,在每一塊中能夠取均值或最大值,代替這四個值,這樣就實現了Subsampling的功能。

取最大值的方法就是Maxpooling。

一副圖像,通過Conv和Maxpooling後,會變成一幅小的新圖像。能夠再它之上繼續進行Conv和Maxpooling。

通過MaxPooling處理後會產生和Filter數目相同的「新圖像」,每個Filter均可以看做是處理以前圖像的一個channel。

Flatten

最後的Flatten就是將上一層Maxpooling獲得的image拉直成列向量,做爲全鏈接網絡的輸入。

以上就是一個CNN神經網絡的全部模塊簡介。最後附一張全圖。

相關文章
相關標籤/搜索