卷積、池化

卷積、池化

一、卷積

1.定義:

卷積是兩個變量在某範圍內相乘後求和的結果。如果卷積的變量是序列x(n)和h(n),則卷積的結果

img

  • 中文名

    卷積

  • 外文名

    Convolution

  • 定 義

    分析數學中一種重要的運算

  • 其 他

    可以被看作是“滑動平均”的推廣

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YWuRWjz3-1573636622609)(C:\Users\WMY\Pictures\Saved Pictures\卷積\2018080411520076.gif)]
    在這裏插入圖片描述

2.目的

深層神經網絡中使用卷積的優點:參數共享,稀疏連接

【1】參數共享(Parameter Sharing)
準確的定義如下:

A feature detector (such as a vertical edge detector) that’s useful in one part of the image is probably useful in another part of the image.

直觀的理解就是,一個卷積核,如果它適用於一幅圖片的左上角做邊緣檢測,則他也能適用於圖片的右下角。
卷積核的參數不需要改動,就能被適應,這就是所謂參數共享。

【2】稀疏連接(Sparsity of Connections)
準確的定義如下:

In each layer, each output value depends only on a small number of inputs.

直觀的理解就是,卷積輸出的每一個數值(像素),只與卷積核大小的像素值有關,與卷積核範圍之外的其它像素無關。

結論
深層神經網絡中使用卷積,可以通過參數共享和稀疏連接,減少參數。參數少了,我們就能用更少的訓練集來訓練網絡,從而預防過擬合。

卷積層只需要很少的參數,就能連接兩個很大維度的特徵
全連接層,要連接兩個很大維度的特徵,參數會非常多

3.卷積核

卷積核的作用:

濾波**/**特徵提取**

假設有一個卷積核如下圖所示:

img

我們可以看到小鼠各部分和它做卷積的結果。圖形越相似,所得結果也就越大。

imgimg

img.

卷積核一般爲奇數

卷積核一般都把size設爲奇數,主要有以下兩個原因:

【1】保證了錨點(卷積核的中心)剛好在中間,方便以模塊中心爲標準進行滑動卷積。

【2】保證了padding時,圖像的兩邊依然相對稱。

1、奇數卷積核有中心像素點

如下圖中,奇數大小的卷積核有唯一的中心像素點,而偶數大小的卷積核沒有中心像素點

img img

爲什麼需要中心像素點?因爲中心像素點有以下兩點左右:

確定局部卷積後要更新的像素點位置。如下圖的卷積操作,中心像素的位置對應着當前卷積操作wx+b的值要賦給那個位置。如果卷積核是偶數,中心位置有四個像素。一種可能的解決方式是同時更新這四個像素的值,但這樣會增加計算量。同時以步長stride=1移動卷積核時,會覆蓋之前的值,造成計算浪費。

img

便於進行卷積操作,以中心點移動卷積核,(這點好像有點牽強,以左上角或右下角任一點像素也可移動卷積核)
2、奇數的卷積核便於圖像進行對稱的補0padding

卷積有好幾種方式如valid,same。其中same卷積的方式如上面卷積示例圖所示,是爲了保持卷積後特徵圖大小不變,在卷積操作進行前先在圖像的周圍補0。假設卷積前特徵圖大小爲m,卷積核大小爲k,那麼正常情況下卷積後特徵圖大小n應該爲m-k+1。既

爲了使卷積後特徵圖大小保持不變,在卷積前把特徵圖的尺寸增大k-1。然後在進行卷積操作。此時

也就是卷積操作前後特徵圖大小相等。

爲了使特徵圖增大k-1。通常使用的方式是在圖像周圍補0。如果卷積核的大小是奇數,則k-1爲偶數。則可以在圖像兩側進行對稱的padding。左右上下各補充(k-1)/2。

更多細節見 https://blog.csdn.net/MrR1ght/article/details/99472017

卷積覈示例:

Sobel卷積核(Gx表示水平方向,Gy表示垂直方向)

這裏寫圖片描述

這裏寫圖片描述

卷積後

這裏寫圖片描述

這裏寫圖片描述

4.步長stride

控制卷積核移動的距離

步長stride是一個一維的向量,長度爲4。形式是[a,x,y,z],分別代表[batch滑動步長,水平滑動步長,垂直滑動步長,通道滑動步長]

在tensorflow中,stride的一般形式是[1,x,y,1]

第一個1表示:在batch維度上的滑動步長爲1,即不跳過任何一個樣本

x表示:卷積核的水平滑動步長

y表示:卷積核的垂直滑動步長

最後一個1表示:在通道維度上的滑動步長爲1,即不跳過任何一個顏色通道

原文鏈接:https://blog.csdn.net/u014453898/article/details/81517975

5.padding

卷積操作存在兩個問題:

1、圖像越來越小;

2、圖像邊界信息丟失,即有些圖像角落和邊界的信息發揮作用較少。

因此需要padding

一張M x M的圖片,經過卷積核F x F,strides = [1,1,1,1], padding = valid 卷積操作後,

    得到大小爲 C_side x C_side 的 feature map,

            其中,

                   C_side = M - ( F - 1 ),  即邊長減少了 F-1個單位

若想保持卷積後的圖像大小不變,需要在原圖邊長基礎上padding F-1個單位的零元素,

即經過 strides = [1,1,1,1], padding = same 卷積操作後,

                   C_side = ( M +2P )- ( F - 1 ) = M

                   P = ( F - 1 )/ 2

一般的,卷積核邊長大小F爲奇數:

1、方便padding = same卷積操作,左右(上下)兩邊對稱補零;

2、奇數卷積核有中心像素,便於確定卷積核的位置。

當卷積步長strides不爲1時,邊長計算公式如下:

For the SAME padding, the output height and width are computed as:

out_height = ceil(float(in_height) / float(strides[1]))

out_width = ceil(float(in_width) / float(strides[2])) And

For the VALID padding, the output height and width are computed as:

out_height = ceil(float(in_height - filter_height + 1) / float(strides[1]))

out_width = ceil(float(in_width - filter_width + 1) / float(strides[2]))

原文鏈接:https://blog.csdn.net/zhaozx19950803/article/details/80409502

6.公式

img

原文鏈接: :https://blog.csdn.net/weixin_36836622/article/details/90473315

7.卷積核的選擇@@@

如何選擇卷積核的大小?越大越好還是越小越好?
答案是小而深,單獨較小的卷積核也是不好的,只有堆疊很多小的卷積核,模型的性能纔會提升。

CNN的卷積覈對應一個感受野,這使得每一個神經元不需要對全局圖像做感受,每個神經元只感受局部的圖像區域,然後在更高層,將這些感受不同局部的神經元綜合起來就可以得到全局信息。這樣做的一個好處就是可以減少大量訓練的參數。
VGG經常出現多個完全一樣的3×3的卷積核堆疊在一起的情況,這些多個小型卷積核堆疊的設計其實是非常有效的。兩個3×3的卷積層串聯相當於1個5×5的卷積層,即一個像素會和周圍5×5的像素產生關聯,可以說感受野是5×5。同時,3個串聯的3×3卷積層串聯的效果相當於一個7×7的卷積層。除此之外,3個串聯的3×3的卷積層擁有比一個7×7更少的參數量,只有後者的 (3×3×3) / (7×7) = 55%。最重要的是3個3×3的卷積層擁有比一個7×7的卷積層更多的非線性變換(前者可以使用三次ReLu激活,而後者只有一次)。
三個3x3感受野的疊加效果等同於一個7x7的感受野,爲什麼用三個3x3而不用一個7x7?
(1)使用三個非線性修正函數,使得決策函數更可分。
(2)減少了參數數量;
2.爲什麼使用1x1卷積核?
在不影響卷積層的感受野前提下,增加了決策函數的非線性性。

原文鏈接:https://blog.csdn.net/shayashi/article/details/86506347
原文鏈接:https://blog.csdn.net/fu6543210/article/details/82817916

二、池化

1定義:

對圖像的某一個區域用某一個值代替

池化(Pooling):也稱爲欠採樣下采樣

2.目的

(1)下采樣(downsamping)

(2)減少參數量

​ 降維、去除冗餘信息、對特徵進行壓縮、簡化網絡複雜度、減小計算量、減小內存消耗等等

(3)實現非線性

(4)可以擴大感知野。

(5)可以實現不變性,其中不變形性包括,平移不變性、旋轉不變性和尺度不變性。

原文鏈接:https://blog.csdn.net/XX_123_1_RJ/article/details/86677482。

3.分類:

    • Max Pooling:最大池化

    • Average Pooling:平均池化

    img

mean-pooling能減小鄰域大小受限造成的估計值方差增大,更多的保留圖像的背景信息,

max-pooling能減小 卷積層參數誤差造成估計均值的偏移,更多的保留紋理信息。

Stochastic-pooling則介於兩者之間,通過對像素點按照數值大小賦予概率,再按照概率進行亞採樣,在平均意義上,與mean-pooling近似,在局部意義上,則服從max-pooling的準則

4.公式

img

@@@人在認識圖像時,理解順序爲

圖片的顏色、亮度—— 邊緣、角點、直線(局部特徵)——紋理、幾何形狀

計算機識別圖像,假設是個貓的耳朵

訓練時,卷積——池化——全連接——線性變換——激活函數——輸出特徵向量n1(計算機就認爲這個特徵向量是貓耳朵)

ss=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNjgzNjYyMg==,size_16,color_FFFFFF,t_70)

@@@人在認識圖像時,理解順序爲

圖片的顏色、亮度—— 邊緣、角點、直線(局部特徵)——紋理、幾何形狀

計算機識別圖像,假設是個貓的耳朵

訓練時,卷積——池化——全連接——線性變換——激活函數——輸出特徵向量n1(計算機就認爲這個特徵向量是貓耳朵)

測試時,由輸入圖片得到的特徵向量n2,計算機就對一下答案,看它倆是不是一樣 maybe是這樣

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