形象理解深度學習中八大型別卷積

dicksonjyl560101發表於2019-02-14

https://blog.csdn.net/weixin_42137700/article/details/87159266


本文總結了深度學習中常用的八大型別的卷積,以非常形象的方式幫助你建立直覺理解,為你的深度學習提供有益的參考。

分別是單通道卷積、多通道卷積、3D卷積、1 x 1卷積、轉置卷積、擴張卷積、可分離卷積、分組卷積。

單通道卷積

形象理解深度學習中八大型別卷積

單通道卷積

在深度學習中,卷積是元素先乘法後加法。對於具有1個通道的影像,卷積如下圖所示。這裡的濾波器是一個3 x 3矩陣,元素為[[0,1,2],[2,2,0],[0,1,2]]。過濾器在輸入端滑動。在每個位置,它都在進行元素乘法和加法。每個滑動位置最終都有一個數字。最終輸出是3 x 3矩陣。

多通道卷積

在許多應用程式中,我們處理的是具有多個通道的影像。典型的例子是RGB影像。每個RGB通道都強調原始影像的不同方面,如下圖所示:

形象理解深度學習中八大型別卷積

影像拍攝於雲南省元陽市

卷積神經網路中每層用多個濾波器核就是多通道 。卷積網路層通常由多個通道(數百個卷積核)組成。每個通道提取前一層不同方面的抽象特徵。我們如何在不同深度的層之間進行過渡?我們如何將深度為n的圖層轉換為深度為m的後續圖層?

形象理解深度學習中八大型別卷積

"層"(過濾器)和"通道"(卷積核)

多通道卷積如下。將每個核心應用到前一層的輸入通道上以生成一個輸出通道。這是一個核心方面的過程。我們為所有核心重複這樣的過程以生成多個通道。然後將這些通道中的每一個加在一起以形成單個輸出通道。

下圖使多通道卷積過程更清晰。

輸入層是一個5 x 5 x 3矩陣,有3個通道。濾波器是3 x 3 x 3矩陣。首先,過濾器中的每個核心分別應用於輸入層中的三個通道,並相加;然後,執行三次卷積,產生3個尺寸為3×3的通道。

形象理解深度學習中八大型別卷積

多通道2D卷積的第一步 :濾波器中的每個核心分別應用於輸入層中的三個通道。

形象理解深度學習中八大型別卷積

多通道的2D卷積的第二步 :然後將這三個通道相加在一起(逐元素加法)以形成一個單通道。

3D卷積

3D濾鏡可以在所有3個方向(影像的高度,寬度,通道)上移動。在每個位置,逐元素乘法和加法提供一個數字。由於濾鏡滑過3D空間,因此輸出數字也排列在3D空間中,然後輸出是3D資料。

形象理解深度學習中八大型別卷積

類似於2D卷積中物件的空間關係,3D卷積可以描述3D空間中的物件的空間關係。這種3D關係有很重要的應用,例如在生物醫學想象的3D分割/重建中,CT和MRI,其中諸如血管的物件在3D空間中蜿蜒。

1 x 1卷積

1 x 1卷積中將一個數字乘以輸入層中的每個數字。

如果輸入層有多個通道,此卷積會產生有趣的作用。下圖說明了1 x 1卷積如何適用於尺寸為H x W x D的輸入層。在濾波器尺寸為1 x 1 x D的1 x 1卷積之後,輸出通道的尺寸為H x W x 1.如果我們應用N這樣的1 x 1卷積然後將結果連線在一起,我們可以得到一個尺寸為H x W x N的輸出層。

形象理解深度學習中八大型別卷積

1 x 1卷積,濾波器大小為1 x 1 x D

最初,在網路網路檔案中提出了1 x 1卷積。然後,他們在Google Inception 被高度使用1 x 1卷積的一些優點是:

  • 降低維度以實現高效計算
  • 高效的低維嵌入或特徵池
  • 卷積後再次應用非線性

在上圖中可以觀察到前兩個優點。在1 x 1卷積之後,我們顯著地減小了尺寸。假設原始輸入有200個通道,1 x 1卷積會將這些通道(功能)嵌入到單個通道中。第三個優點是在1 x 1卷積之後,可以新增諸如ReLU的非線性啟用,非線性允許網路學習更復雜的功能。

轉置卷積(解卷積、反摺積)

對於許多應用程式和許多網路架構,我們經常希望進行與正常卷積相反方向的轉換,即我們希望執行上取樣。一些示例包括生成高解析度影像並將低維特徵對映對映到高維空間,例如自動編碼器或語義分段。

傳統上,可以通過應用插值方案或手動建立規則來實現上取樣。然而,神經網路之類的現代架構可以讓網路本身自動地學習正確的轉換,而無需人為干預。

對於下圖中的示例,我們使用3 x 3核心在2 x 2輸入上應用 轉置卷積 ,使用單位步幅填充2 x 2邊框,上取樣輸出的大小為4 x 4。

形象理解深度學習中八大型別卷積

輸入2 x 2上取樣輸出4 x 4

有趣的是,通過應用花式填充和步幅,可以將相同的2 x 2輸入影像對映到不同的影像大小。下面,轉置卷積應用於相同的2 x 2輸入,使用單位步幅填充2 x 2邊界的零,現在輸出的大小為5 x 5。

形象理解深度學習中八大型別卷積

輸入2 x 2上取樣輸出5 x 5

在卷積中,讓我們將C定義為我們的核心,將Large定義為輸入影像,將Small定義為來自卷積的輸出影像。在卷積(矩陣乘法)之後,我們將大影像下采樣為小影像輸出。矩陣乘法中的卷積的實現遵循C x Large = Small。

以下示例顯示了此類操作的工作原理。它將輸入展平為16 x 1矩陣,並將核心轉換為稀疏矩陣(4 x 16)。然後在稀疏矩陣和平坦輸入之間應用矩陣乘法。之後,將得到的矩陣(4×1)轉換回2×2輸出。

形象理解深度學習中八大型別卷積

卷積的矩陣乘法:從大輸入影像(4 x 4)到小輸出影像(2 x 2)

現在,如果我們在方程的兩邊多重矩陣CT的轉置,並使用矩陣與其轉置矩陣的乘法給出單位矩陣的屬性,那麼我們有以下公式CT x Small = Large,如下所示下圖。

形象理解深度學習中八大型別卷積

卷積的矩陣乘法:從小輸入影像(2 x 2)到大輸出影像(4 x 4)

擴張卷積

標準的離散卷積:

形象理解深度學習中八大型別卷積

形象理解深度學習中八大型別卷積

標準卷積

擴張的卷積如下:

形象理解深度學習中八大型別卷積

當l = 1時,擴張卷積變為標準卷積。

形象理解深度學習中八大型別卷積

擴張卷積

直觀地說,擴張的卷積通過在核心元素之間插入空格來"膨脹"核心。這個附加引數l(擴張率)表示我們想要擴充套件核心的程度。實現可能會有所不同,但核心元素之間通常會插入l-1個空格。下圖顯示了l = 1,2和4時的核心大小。

形象理解深度學習中八大型別卷積

擴張卷積的感受野

觀察一個大的感受野,而不增加額外的成本。

在影像中,3×3個紅點表示在卷積之後,輸出影像具有3×3畫素。雖然所有三個擴張的卷積都為輸出提供了相同的尺寸,但模型觀察到的感受野是截然不同的。對於l = 1,接收域為3 x 3 ,l = 2時為7 x 7 ,對於l = 3,接收領域增加到15 x 15 。有趣的是,與這些操作相關的引數數量基本相同。

可分離卷積

空間可分卷積

空間可分離卷積在影像的2D空間維度上操作,即高度和寬度。從概念上講,空間可分離卷積將卷積分解為兩個單獨的操作。對於下面顯示的示例,核心(3x3核心)被劃分為3x1和1x3核心。

形象理解深度學習中八大型別卷積

在卷積中,3x3核心直接與影像卷積。在空間可分離的卷積中,3x1核心首先與影像卷積。然後應用1x3核心。在執行相同操作時,這將需要6個而不是9個引數。

此外,在空間上可分離的卷積中需要比卷積更少的矩陣乘法。對於一個具體的例子,在具有3×3核心(stride = 1,padding = 0)的5×5影像上的卷積需要在水平3個位置和垂直3個位置掃描核心,共9個位置,如下圖所示。在每個位置,應用9個元素乘法。總共9 x 9 = 81次乘法。

形象理解深度學習中八大型別卷積

標準卷積

另一方面,對於空間可分離卷積,我們首先在5 x 5影像上應用3 x 1濾波器。我們在水平5個位置和垂直3個位置掃描這樣的核心。共5×3 = 15個位置,表示為下面的影像上的點。在每個位置,應用3個元素乘法。那是15 x 3 = 45次乘法。我們現在獲得了3 x 5矩陣。此矩陣現在與1 x 3核心進行卷積,核心在水平3個位置和垂直3個位置掃描矩陣。對於這9個位置中的每一個,應用3個元素乘法。此步驟需要9 x 3 = 27次乘法。因此,總體而言,空間可分離的卷積需要45 + 27 = 72乘法,小於標準卷積。

深度可分卷積

深度可分離的旋轉包括兩個步驟:深度卷積和1x1卷積。

在描述這些步驟之前,值得重新審視我之前部分中討論的2D卷積和1 x 1卷積。讓我們快速回顧一下標準2D卷積。舉一個具體的例子,假設輸入層的大小為7 x 7 x 3(高x寬x通道),濾波器的大小為3 x 3 x 3。使用一個濾波器進行2D卷積後,輸出層為尺寸為5 x 5 x 1(僅有1個通道)。

形象理解深度學習中八大型別卷積

標準2D卷積,使用1個濾波器建立1層輸出

通常,在兩個神經網路層之間應用多個濾波器。假設我們這裡有128個過濾器。在應用這128個2D卷積後,我們有128個5 x 5 x 1輸出對映。然後我們將這些地圖堆疊成一個大小為5 x 5 x 128的單層。通過這樣做,我們將輸入層(7 x 7 x 3)轉換為輸出層(5 x 5 x 128)。空間尺寸,即高度和寬度,縮小,而深度延長。

形象理解深度學習中八大型別卷積

標準2D卷積,使用128個濾波器建立128層輸出

現在有了深度可分離的卷積,讓我們看看我們如何實現相同的轉換。

首先,我們 將深度卷積應用於輸入層 。我們不是在2D卷積中使用尺寸為3 x 3 x 3的單個濾波器,而是分別使用3個核心。每個濾波器的大小為3 x 3 x 1.每個核心與輸入層的1個通道進行卷積(僅1個通道,而不是所有通道!)。每個這樣的卷積提供尺寸為5×5×1的圖。然後我們將這些圖堆疊在一起以建立5×5×3影像。在此之後,我們的輸出尺寸為5 x 5 x 3.我們現在縮小空間尺寸,但深度仍然與以前相同。

形象理解深度學習中八大型別卷積

深度可分卷積 - 第一步 :我們分別使用3個核心,而不是在2D卷積中使用大小為3 x 3 x 3的單個濾波器。每個濾波器的大小為3 x 3 x 1。每個核心與輸入層的1個通道進行卷積(僅1個通道,而不是所有通道)。每個這樣的卷積提供尺寸為5×5×1的圖。然後我們將這些圖堆疊在一起以建立5×5×3影像。在此之後,我們的輸出尺寸為5 x 5 x 3。

作為深度可分離卷積的第二步,為了擴充套件深度,我們應用1x1卷積,核心大小為1x1x3。將5 x 5 x 3輸入影像與每個1 x 1 x 3核心進行對比,可提供大小為5 x 5 x 1的對映。

形象理解深度學習中八大型別卷積

因此,在應用128個1x1卷積後,我們可以得到一個尺寸為5 x 5 x 128的層。

形象理解深度學習中八大型別卷積

深度可分卷積 - 第二步 :應用多個1 x 1卷積來修改深度。

通過這兩個步驟,深度可分離卷積還將輸入層(7 x 7 x 3)轉換為輸出層(5 x 5 x 128)。

深度可分離卷積的整個過程如下圖所示。

形象理解深度學習中八大型別卷積

深度可分卷積的整個過程

那麼,深度可分離卷積的優勢是什麼?效率!與2D卷積相比,對於深度可分離卷積,需要更少的操作。

讓我們回顧一下2D卷積示例的計算成本。有128個3x3x3核心移動5x5次。這是128 x 3 x 3 x 3 x 5 x 5 = 86,400次乘法。

可分離的卷積怎麼樣?在第一個深度卷積步驟中,有3個3x3x1核心移動5x5次。那是3x3x3x1x5x5 = 675次乘法。在1 x 1卷積的第二步中,有128個1x1x3核心移動5x5次。這是128 x 1 x 1 x 3 x 5 x 5 = 9,600次乘法。因此,總體而言,深度可分離卷積需要675 + 9600 = 10,275次乘法。這只是2D卷積成本的12%左右!

分組卷積

2012年,在AlexNet論文中引入了分組卷積。實現它的主要原因是允許通過兩個具有有限記憶體(每個GPU 1.5 GB記憶體)的GPU進行網路訓練。下面的AlexNet在大多數層上顯示了兩個獨立的卷積路徑。它正在跨兩個GPU進行模型並行化(當然,如果有更多的GPU,可以進行多GPU並行化)。

形象理解深度學習中八大型別卷積

在這裡,我們描述分組卷積如何工作。首先,傳統的2D卷積遵循以下步驟。在此示例中,通過應用128個濾波器(每個濾波器的大小為3 x 3 x 3),將大小為(7 x 7 x 3)的輸入層轉換為大小為(5 x 5 x 128)的輸出層。或者在一般情況下,通過應用Dout核心(每個大小為h x w x Din)將大小(Hin x Win x Din)的輸入層變換為大小(Hout x Wout x Dout)的輸出層。

形象理解深度學習中八大型別卷積

標準2D卷積

在分組卷積中,過濾器被分成不同的組。每組負責具有一定深度的傳統2D卷積。如下圖。

形象理解深度學習中八大型別卷積

具有2個濾波器組的分組卷積

以上是具有2個濾波器組的分組卷積的說明。在每個濾波器組中,每個濾波器的深度僅為標稱2D卷積的深度的一半。它們具有深度Din/2。每個濾波器組包含Dout/2濾波器。第一個濾波器組(紅色)與輸入層的前半部分([:,:0:Din/2])卷積,而第二個濾波器組(藍色)與輸入層的後半部分卷積([:,:,Din/2:Din])。因此,每個過濾器組都會建立Dout / 2通道。總的來說,兩組建立2 x Dout/2 = Dout頻道。然後,我們使用Dout通道將這些通道堆疊在輸出層中。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2632757/,如需轉載,請註明出處,否則將追究法律責任。

相關文章