【圖解AI:動圖】各類類型的卷積,你認全了嗎?

卷積(convolution)是深度學習中很是有用的計算操做,主要用於提取圖像的特徵。在近幾年來深度學習快速發展的過程當中,卷積從標準卷積演變出了反捲積、可分離卷積、分組卷積等各類類型,以適應於不一樣的場景,接下來一塊兒來認識它們吧。算法

1、卷積的基本屬性
卷積核(Kernel):卷積操做的感覺野,直觀理解就是一個濾波矩陣,廣泛使用的卷積核大小爲3×三、5×5等;
步長(Stride):卷積核遍歷特徵圖時每步移動的像素,如步長爲1則每次移動1個像素,步長爲2則每次移動2個像素(即跳過1個像素),以此類推;
填充(Padding):處理特徵圖邊界的方式,通常有兩種,一種是對邊界外徹底不填充,只對輸入像素執行卷積操做,這樣會使輸出特徵圖的尺寸小於輸入特徵圖尺寸;另外一種是對邊界外進行填充(通常填充爲0),再執行卷積操做,這樣可以使輸出特徵圖的尺寸與輸入特徵圖的尺寸一致;
通道(Channel):卷積層的通道數(層數)。
以下圖是一個卷積核(kernel)爲3×三、步長(stride)爲一、填充(padding)爲1的二維卷積:
微信

2、卷積的計算過程
卷積的計算過程很是簡單,當卷積核在輸入圖像上掃描時,將卷積核與輸入圖像中對應位置的數值逐個相乘,最後彙總求和,就獲得該位置的卷積結果。不斷移動卷積核,就可算出各個位置的卷積結果。以下圖:
 
3、卷積的各類類型
卷積如今已衍生出了各類類型,包括標準卷積、反捲積、可分離卷積、分組卷積等等,下面逐一進行介紹。
一、標準卷積
(1)二維卷積(單通道卷積版本)(2D Convolution: the single channel version)
只有一個通道的卷積。
以下圖是一個卷積核(kernel)爲3×三、步長(stride)爲一、填充(padding)爲0的卷積:
 
(2)二維卷積(多通道版本)(2D Convolution: the multi-channel version)
擁有多個通道的卷積,例如處理彩色圖像時,分別對R, G, B這3個層處理的3通道卷積,以下圖:
 
再將三個通道的卷積結果進行合併(通常採用元素相加),獲得卷積後的結果,以下圖:
 
(3)三維卷積(3D Convolution)
卷積有三個維度(高度、寬度、通道),沿着輸入圖像的3個方向進行滑動,最後輸出三維的結果,以下圖:
 
(4)1x1卷積(1 x 1 Convolution)
當卷積核尺寸爲1x1時的卷積,也即卷積核變成只有一個數字。以下圖:
 
從上圖能夠看出,1x1卷積的做用在於能有效地減小維度,下降計算的複雜度。1x1卷積在GoogLeNet網絡結構中普遍使用。網絡

二、反捲積(轉置卷積)(Deconvolution / Transposed Convolution)
卷積是對輸入圖像提取出特徵(可能尺寸會變小),而所謂的「反捲積」即是進行相反的操做。但這裏說是「反捲積」並不嚴謹,由於並不會徹底還原到跟輸入圖像同樣,通常是還原後的尺寸與輸入圖像一致,主要用於向上採樣。從數學計算上看,「反捲積」至關因而將卷積核轉換爲稀疏矩陣後進行轉置計算,所以,也被稱爲「轉置卷積」
以下圖,在2x2的輸入圖像上應用步長爲一、邊界全0填充的3x3卷積核,進行轉置卷積(反捲積)計算,向上採樣後輸出的圖像大小爲4x4
 
三、空洞卷積(膨脹卷積)(Dilated Convolution / Atrous Convolution)
爲擴大感覺野,在卷積核裏面的元素之間插入空格來「膨脹」內核,造成「空洞卷積」(或稱膨脹卷積),並用膨脹率參數L表示要擴大內核的範圍,即在內核元素之間插入L-1個空格。當L=1時,則內核元素之間沒有插入空格,變爲標準卷積。
以下圖爲膨脹率L=2的空洞卷積:
 
四、可分離卷積(Separable Convolutions)
(1)空間可分離卷積(Spatially Separable Convolutions)
空間可分離卷積是將卷積核分解爲兩項獨立的核分別進行操做。一個3x3的卷積核分解以下圖:
 
分解後的卷積計算過程以下圖,先用3x1的卷積核做橫向掃描計算,再用1x3的卷積核做縱向掃描計算,最後獲得結果。採用可分離卷積的計算量比標準卷積要少。
 
(2)深度可分離卷積(Depthwise Separable Convolutions)
深度可分離卷積由兩步組成:深度卷積和1x1卷積。
首先,在輸入層上應用深度卷積。以下圖,使用3個卷積核分別對輸入層的3個通道做卷積計算,再堆疊在一塊兒。
 
再使用1x1的卷積(3個通道)進行計算,獲得只有1個通道的結果
 
重複屢次1x1的卷積操做(以下圖爲128次),則最後便會獲得一個深度的卷積結果。
 
完整的過程以下:
 
五、扁平卷積(Flattened convolutions)
扁平卷積是將標準卷積核拆分爲3個1x1的卷積核,而後再分別對輸入層進行卷積計算。這種方式,跟前面的「空間可分離卷積」相似,以下圖:
 
六、分組卷積(Grouped Convolution)
2012年,AlexNet論文中最早提出來的概念,當時主要爲了解決GPU顯存不足問題,將卷積分組後放到兩個GPU並行執行。
在分組卷積中,卷積核被分紅不一樣的組,每組負責對相應的輸入層進行卷積計算,最後再進行合併。以下圖,卷積核被分紅先後兩個組,前半部分的卷積組負責處理前半部分的輸入層,後半部分的卷積組負責處理後半部分的輸入層,最後將結果合併組合。
 
七、混洗分組卷積(Shuffled Grouped Convolution)
在分組卷積中,卷積核被分紅多個組後,輸入層卷積計算的結果仍按照原先的順序進行合併組合,這就阻礙了模型在訓練期間特徵信息在通道組之間流動,同時還削弱了特徵表示。而混洗分組卷積,即是將分組卷積後的計算結果混合交叉在一塊兒輸出。
以下圖,在第一層分組卷積(GConv1)計算後,獲得的特徵圖先進行拆組,再混合交叉,造成新的結果輸入到第二層分組卷積(GConv2)中:分佈式

歡迎關注本人的微信公衆號「大數據與人工智能Lab」(BigdataAILab),獲取更多信息ide

 

推薦相關閱讀函數

一、AI 實戰系列oop

二、大話深度學習系列學習

三、圖解 AI 系列大數據

四、AI 雜談人工智能

五、大數據超詳細系列

相關文章
相關標籤/搜索