CNN之間的計算


參考內容

1、網易雲課堂微專業——深度學習—04第一周:http://mooc.study.163.com/smartSpec/detail/1001319001.htm

2、CNN基礎介紹:http://blog.csdn.net/fengbingchun/article/details/50529500



 卷積神經網絡(Convolutional Neural Networks,CNN)

1、基本計算原理

  

  動態過程:

  濾波器(過濾器:filter)的權值是根據你要檢測的特征來決定的,在深度學習中,也即是要經過訓練得到。檢測的特征不同,權值就不一樣。

  如上單層的圖像一般表示的是灰白圖,既是沒有顏色的,有顏色的RGB圖像,會包含三個相同大小的圖層,這時對應的濾波器也要變成三層,濾波器的層數(通道數)必須時刻與圖像層數保持一致。。。

  

  注意輸出的是一個單層圖

  

  因為當一個三通道的過濾器與圖像進行卷積時,是直接對27個數去加權計算它們的和得到一個結果,而不是分層計算。

2、卷積輸出的大小計算

   如上兩個例子,5*5的圖像經過3*3的濾波器得到一個3*3的結果,6*6*3d的圖像經過3*3*3d的濾波器得到一個4*4*1d的結果,從單層的例子我們大概已經知道了是怎么計算的了,那么接下來轉換成公式來表示一下。

   

  由計算可知,每次卷積圖像都會變小,以上還只是步長為1的情況(也即是每次只移動一個),有兩個缺點:

    1、每次卷積之后圖像都會縮小,多次卷積之后呢, 可能會變得很小很小

    2、會丟掉角落邊緣像素的重要信息,看下面圖像

  

    在上面的邊緣,從左到右像素檢測的次數分別為1、2、3、2、1,可見角落邊緣只被檢測了一次,而中間可以被檢測多次,這就會導致邊角信息丟失。解決的辦法是加入Padding。

3、加入Padding以及之后的計算

  加入Padding的意思是在卷積之前,在原圖像邊緣上加入一層像素(也可以多層),一般也叫做補零(因為大多數時候我們添加的元素都是0)。

   

  由上圖可知,如果卷積之后要得到與原圖像相同大小的圖像,那么加入的Padding層數應該是(f - 1) / 2,也由此可見,我們用的過濾器 f 一般也是奇數的,這樣才能整除計算,獲得對稱填充,還有一個原因是奇數的濾波器會有一個中心點,有時候在計算機視覺計算時,有個中心點會方便很多。

  附:

    Padding = 0的卷積被稱為Valid Convolution

    為了得到與原圖像大小相同圖像而加入Padding的卷積稱為Same Convolution

3、加入卷積步長(Stride)

  以上運算都是基於步長為1的情況,下面看看步長為2的情況:

  

  在卷積運算時,如果濾波器超出了圖像框,一般的操作是不進行運算。

 4、三維卷積

  (1)原始RGB三維圖

    

    

  (2)多個濾波器(卷積核)

    以上操作都是基於單個濾波器的,無論是單層還是多層,一個濾波器只能檢測一種特征,要檢測多個特征,我們需要多個濾波器。

    

 5、匯總

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM