search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

一文讀懂 | 人工智慧中的卷積網路是怎麼一回事?

現如今,卷積神經網路在人工智慧領域應用的廣泛性及重要性可謂是不言而喻。為了讓大家對卷積的類型有一個清晰明了的認識,我快速概述了幾種不同類型的二維卷積及其好處。

卷積(Convolutions)

首先,我們需要就定義卷積層的幾個參數。

圖1 二維卷積、內核大小為3、步幅為1

  • 內核大小:內核大小定義了卷積的視野。二維的常見選擇是3——即3x3像素。

  • 步幅:步幅定義了遍歷圖像時內核的步長。雖然它的默認值通常為1,但我們可以使用2的步長,類似於最大池化對圖像進行下採樣。

  • padding:padding定義樣本的邊框如何處理。一(半)個padding卷積將保持空間輸出尺寸等於輸入尺寸,而如果內核大於1,則不加卷積將消除一些邊界。

  • 輸入和輸出通道:卷積層需要一定數量的輸入通道(I),並計算出特定數量的輸出通道(O)。可以通過I * O * K來計算這樣一層所需的參數,其中K等於內核中的值的數量。

擴張卷積(Dilated Convolutions)

(又名阿魯斯卷積)

擴張卷積引入另一個卷積層的參數被稱為擴張率。這定義了內核中值之間的間距。擴張速率為2的3x3內核將具有與5x5內核相同的視野,而只使用9個參數。 想象一下,使用5x5內核並刪除每個間隔的行和列。

圖2 二維卷積、擴展速率為2的3核,無padding

它使得系統能夠以相同的計算成本提供更廣泛的觀察範圍。擴張卷積在實時分割領域特別受歡迎。 如果你需要更大的觀察範圍,且無法承受多個卷積或更大的內核,請考慮使用它。

轉置卷積(Transposed Convolutions)

(又名反卷積或分段纏繞卷積)

一些人使用反卷積這個名稱,這不是特別恰當的,因為它不是一個反卷積。使事情變得更糟糕的反卷積確實存在,但在深度學習領域並不常見。實際的反卷積是反轉卷積的過程。想象一下,將圖像輸入到單個卷積層。現在開始輸出,把放置到一個黑盒子里,然後將你的原始圖像再次輸出。這個黑盒子進行了一個反卷積操作。這就是卷積層的數學反演。

轉置的卷積在某種程度上來說是相似的,因為它和一個假設的反卷積層所產生的空間解析度是相同的。但是,正在執行的實際數學運算在值上是不同的。轉置卷積層執行的是常規卷積,但它會恢復其空間變換。

圖3 二維卷積無padding,步幅2和內核3

關於這一點你可能會感到困惑,所以讓我們來看一個具體的示例。將一個5x5的圖像饋送到卷積層。其步幅設置為2,padding禁用,內核為3x3。結果是產生一個2x2的圖像。

如果我們想反轉這個過程,我們需要反數學運算,以便從我們輸入的每個像素中生成9個值。之後,我們以2步幅的設置來遍歷輸出圖像。這將是一個反卷積。

圖4 轉置的二維卷積無padding,步幅2和內核3

而轉置卷積將不會進行此類操作。唯一的共同之處在於它保證輸出也將是一個5x5的圖像,同時仍然執行正常的卷積運算。為了實現這一點,我們需要在輸入上執行一些漂亮的padding。

正如你現在可以想象的,這一步並不會從上面扭轉這個過程。 至少不包括數值。

它只是在以往的基礎上重建空間解析度並執行卷積操作。這可能不是數學的反演,但是對於Encoder-Decoder架構來說,它仍然非常有用。這樣,我們可以將圖像的縮放與卷積相結合,而不是將兩個過程單獨分開進行。

可分離卷積(Separable Convolutions)

在一個可分離卷積中,我們可以將內核操作拆分成多個步驟。我們用y = conv(x,k)表示卷積,其中y是輸出圖像,x是輸入圖像,k是內核。這一步很簡單。接下來,我們假設k可以由下面這個等式計算得出:k = k1.dot(k2)。這將使它成為一個可分離的卷積,因為我們可以通過對k1和k2做2個一維卷積來取得相同的結果,而不是用k做二維卷積。

圖5 Sobel X和Y濾鏡

我們以通常用於圖像處理的Sobel內核為例。你可以通過乘以向量[1,0,-1]和[1,2,1] .T獲得相同的內核。在執行相同的操作時,你只需要6個而不是9個參數。

上面的示例顯示了所謂的空間可分離卷積,據我所知,這並不是在深度學習中使用的。我只是想確保在他人費勁地操作時,你不會受到如此困惑。在神經網路中,我們通常使用的是一種叫做深度可分離卷積的神經網路。

這將執行一個空間卷積,同時保持通道獨立,然後進行深度卷積操作。在我看來,為了加深了解,可以用一個示例作為典範。

假設我們在一個16輸入通道和32輸出通道上有一個3x3的卷積層。那麼將要發生的就是16個通道中的每一個都由32個3x3的內核進行遍歷,從而產生512(16x32)的特徵映射。接下來,我們通過將每個輸入通道中的特徵映射相加從而合成一個大的特徵映射。由於我們可以進行此操作32次,因此我們得到了期望的32個輸出通道。

那麼,針對同一個示例,深度可分離卷積的表現又是怎樣的呢?我們遍歷16個通道,每一個都有一個3x3的內核,可以給出16個特徵映射。現在,在做任何合併操作之前,我們將遍歷這16個特徵映射,每個都含有32個1x1的卷積,然後才逐此開始添加。這導致與上述4608(16x32x3x3)個參數相反的656(16x3x3 + 16x32x1x1)個參數。

該示例是深度可分離卷積的具體實現,其中所謂的深度乘數為1。而這是目前為止這些層最常見的設置。

我們這樣做是因為假設空間和深度信息是可以去耦的。而反觀Xception模型的表現,可以發現這個理論似乎是有效的。其實,可移動設備中也可以使用深度可分離卷積。因為它們的參數是可以有效利用的。

總 結

到此為止,可以說對於卷積網路類型的介紹就要告一段落了。我希望能幫助大家簡要了解一下這個問題。而接下來,我們將為大家展示一些卷積動畫,幫助大家對此做深一步了解。

01無padding無步幅

02隨機padding無步幅

03半padding無步幅

04全padding無步幅

05無padding無步幅轉置

06隨機padding無步幅轉置

07半padding無步幅轉置

08全padding無步幅轉置

09無padding有步幅

10有padding有步幅

11有padding有步幅(奇數)

12擴張

-END-

↓↓↓ 更多「有方學者」科研項目,請點擊「閱讀原文」



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦