轉自:https://zhuanlan.zhihu.com/p/63174774
1. 卷積
卷積神經網絡中的卷積是指定義好卷積核(kernel),并對圖像(或者特征圖,feature map)進行滑動匹配,即對應位置相乘再相加。其特點就在于能夠捕捉局部的空間特征。具體過程如下圖所示:
圖1-二維卷積過程示例
每一個卷積核對應于一種特征提取的范式,不同的卷積核對應于不同的特征提取器,如下圖所示:
圖2-卷積特征提取示例
卷積操作的參數包括卷積核大小(kernel size)、步長(stride)以及邊緣填充(padding)三個參數。此外對于同一步的卷積操作,可以使用多個卷積核,就能得到多張特征圖。
卷積核大小
?:即卷積核的尺寸,通常都是正方形。上圖中的大小就是3*3;
步長
?:卷積過程中每次滑動的距離。如上圖中就是步長為1,步長成倍的增加,卷積后的特征大小就會成倍的減小。
邊緣填充
?:為了在調整卷積后特征的大小,會在邊緣填充來補齊,通常填充值為0,且上下左右對稱;
卷積后的特征圖大小可由下面公式進行計算,這里卷積后尺寸大小為
?,?
?表示輸入特征圖大小:
為了方便理解,這里舉個栗子。對于輸入維度為(255,255,3)的RGB圖像,采用卷積核大小3 * 3 * 3進行卷積,步長為2,邊緣填充為1,卷積核的個數為16。那么得到的相應的輸出特征圖大小為(255-3+4)/2+1 = 129,即129 * 129大小,一共16個。所以最終輸出的張量大小為129*129*16。
圖4-不同步長核邊緣填充對應的卷積結果
卷積按照特征圖的卷積維度不同可以分成一維卷積、二維卷積和三維卷積。
一維卷積(1d conv):卷積核在一維空間進行滑動計算,通常用于對文本、股票價格等序列的處理,如圖5所示。
二維卷積(2d conv):卷積核在二維空間進行滑動計算,用于對圖像的特征提取;
三維卷積(3d conv):卷積核在三維空間進行滑動計算,用于視頻數據的處理;
圖5-一維卷積示例圖,卷積核為[1,0,-1]
下面給出不同維度卷積所對應的輸入輸出以及卷積核大小的對應情況。out_channels也就對應于卷積核的個數。
圖6-卷積類型和輸入大小的對應關系
圖7-卷積類型和卷積核大小的對應關系
圖8-卷積類型和輸出大小的對應關系
下面將給大家介紹卷積的一些相關計算,默認都是2d卷積。
3. 卷積參數量的計算
對于一層卷積而言,其中的每個卷積核的參數量即為同卷積核的大小,那么對于有
?個卷積核的卷積層而言,并加上了偏置項。其參數量?
?為:
4. 卷積Flops的計算
衡量卷積計算量的指標是FLOPs(Floating Point Operations,浮點運算次數)。一次乘法和一次加法表示一個浮點運算次數。那么每一個卷積每一次的滑動卷積的計算量就是
,那么在?
?的圖上進行卷積就可以計算得到如下計算公式,也就是參數量乘以卷積圖的尺寸:
5. 感受野的計算
感受野(eceptive Field)是指卷積的輸出結果對應于到輸入中的區域大小。是設計多層卷積神經網絡的一個重要依據。隨著卷積層數的增加,對應到原始輸入的感受野也會逐漸增大。層數
?對應到輸入的感受野?
?的計算公式如下: