卷積神經網絡-細節 一些不爲人知的東西

積神經網絡--細節   

CNN中那些不爲人知的祕密

直接進入正題,卷積網絡作爲現在圖像領域的開山鼻祖,那真是倆字--牛逼~~,只要是跟圖像打交道的模型,那絕對是卷積卷積再卷積,橫掃整個圖像領域,從它的誕生就註定了它不平凡的一生,從2012年的ImageNet的一戰成名,到現在的紅遍大江南北,足以見得它是相當的厲害。言歸正傳,說說卷積的細節。

在行業(深度學習)內,有句俗語,那就是萬物皆數據。一張圖片,呈現出來的是一副美麗的畫卷,但是揪其細節,那就是一個由數字組成的矩陣。

 

當然上圖對應的是隻有一個灰度圖像,黑白圖像。彩色(RGB)的圖像是如何來的呢?很簡單,可以理解爲三個不同的數據矩陣像肉夾饃一樣疊加起來,呈現出來的效果就是下圖的像素矩陣。大家都知道,CNN實現的是對圖像的特徵提取,那麼他到底是如何對圖像進行特徵提取的呢?待我細細道來~~

 

卷積中有卷積核,卷積覈實一個1*1或是2*2或是3*3的小的方形矩陣,這個矩陣中當然也是數字,對圖像的特徵提取就是數字與數字之間的多個操作,最後實現了對特徵的提取。如何操作的呢?

咱們先不談論RGB圖像,咱們先弄個簡單的,只看灰白的圖像,因爲它是由一個數子矩陣組成,矩陣中的每個數字就是對應的這個圖像中的像素值。卷積核就像一個滑動窗口,從這個圖像的數字矩陣的第一行開始,和圖像中的大小爲卷積核大小的局部矩陣進行矩陣乘法,得出的結果就是卷積覈對該區域內的特徵提取的結果,這樣一個卷積核kernel從圖像矩陣的第一行,按指定的步長(stride,這個是一個參數,人爲指定)大小來移動,直到完成對整個圖像矩陣的計算,


這樣,計算的結果就是這個卷積覈對圖像的特徵提取。

RGB圖像來說,就是通過這個卷積覈對三個數字矩陣進行操作(簡單的理解爲就是矩陣乘法操作),官方名爲卷積操作。

但是,對三層的數字矩陣卷積操作之後,分別得到了三個特徵矩陣(暫且這樣叫這個名字),接下來就是,把這三個特徵矩陣對應位置相加,構成一個同樣大小的特徵矩陣,這,就完成了,一個卷積覈對一個RGB圖像的卷積操作。

咱們再繼續講。編程過程中會發現有偏向這個參數就是bias,他是一個修正參數,每一個卷積覈對應一個,在完後每一步卷積核與局部圖像中的數字矩陣的乘法後,要在結果後面加上這個偏向,修正結果。形式如下:

真實的形式和這個差不多,大體先這樣理解吧就。

Kernel是卷積核,x是圖像,bias是卷積核的偏向,f爲激活函數,計算結果矩陣中,值越大的部分越容易被激活。

咱們再繼續,如果是多個卷積核呢?那就是由這個bias來決定,因爲卷積網絡中的一大優勢就是權值共享,這個共享的就是kernel中的數字矩陣,如果有五個卷積核,那就是5biaskernel中的數據是一樣的。

再繼續,在編程實踐中,在卷積層的設置中會有四個參數,兩個是卷積核的長和寬;一個是輸入數據(也就是輸入圖像的分別率大小)的大小;一個是輸入圖像的通道數(channel),比如RGB,那就是三個通道;再一個就是,可能會比較陌生的就是,輸出圖像的深度,這個深度就是指定了卷積核的數量。

再繼續,在上一段提到的輸入通道數,這個暫且理解爲另外一個bias吧,因爲它在網絡參數設置的時候需要給他初始化。

我們舉個例子:

 

右圖是我們要進行特徵提取的圖片,左圖是他對應的像素分佈(圖像矩陣),當濾波器(就是kernel,也叫filter)對圖像進行卷積操作(相乘時),如下圖:

 

有實線的部分得出的值會相對來說比較大,而沒有實線的部分得出的值就比較小,如下:

 

如此,我們對整個原圖進行一次卷積操作,得到的結果中,在那些特定的實線以及周圍,得出的值就偏大,其他區域,得出的值就偏小,這樣值越大越容易被激活,這樣一層一層的特徵就被提取出來了。

在實際的網絡訓練中,卷積核中的數據、偏向bias以及輸入通道數中的偏向,都是由訓練得來的。http://scs.ryerson.ca/~aharley/vis/conv/裏面高能,點進去你就知道了,3D立體卷積實現手寫數字識別。

綜上,就是CNN的卷積過程了。池化的過程網上有很多小夥伴分享的資源,例如https://www.cnblogs.com/nsnow/p/4562308.html2.4部分包括之後的就可以。

有什麼深度學習、機器學習、計算機視覺、圖像識別、目標檢測、圖像語義檢測的問題,咱們可以互相探討,微信



參考文獻:

https://www.zhihu.com/question/39022858

https://www.cnblogs.com/nsnow/p/4562308.html



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