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

一文了解各種卷積結構原理及優劣

王小新 編譯自 Medium
量子位 出品 | 公眾號 QbitAI

卷積神經網路作為深度學習的典型網路,在圖像處理和計算機視覺等多個領域都取得了很好的效果。

Paul-Louis Pröve在Medium上通過這篇文章快速地介紹了不同類型的卷積結構(Convolution)及優勢。為了簡單起見,本文僅探討二維卷積結構。

卷積

首先,定義下卷積層的結構參數。

卷積核為3、步幅為1和帶有邊界擴充的二維卷積結構

卷積核大小(Kernel Size):定義了卷積操作的感受野。在二維卷積中,通常設置為3,即卷積核大小為3×3。

步幅(Stride):定義了卷積核遍歷圖像時的步幅大小。其默認值通常設置為1,也可將步幅設置為2后對圖像進行下採樣,這種方式與最大池化類似。

邊界擴充(Padding):定義了網路層處理樣本邊界的方式。當卷積核大於1且不進行邊界擴充,輸出尺寸將相應縮小;當卷積核以標準方式進行邊界擴充,則輸出數據的空間尺寸將與輸入相等。

輸入與輸出通道(Channels):構建卷積層時需定義輸入通道I,並由此確定輸出通道O。這樣,可算出每個網路層的參數量為I×O×K,其中K為卷積核的參數個數。例,某個網路層有64個大小為3×3的卷積核,則對應K值為 3×3 =9。

空洞卷積

空洞卷積(atrous convolutions)又名擴張卷積(dilated convolutions),向卷積層引入了一個稱為 「擴張率(dilation rate)」的新參數,該參數定義了卷積核處理數據時各值的間距。

卷積核為3、擴張率為2和無邊界擴充的二維空洞卷積

一個擴張率為2的3×3卷積核,感受野與5×5的卷積核相同,而且僅需要9個參數。你可以把它想象成一個5×5的卷積核,每隔一行或一列刪除一行或一列。

在相同的計算條件下,空洞卷積提供了更大的感受野。空洞卷積經常用在實時圖像分割中。當網路層需要較大的感受野,但計算資源有限而無法提高卷積核數量或大小時,可以考慮空洞卷積。

轉置卷積

轉置卷積(transposed Convolutions)又名反卷積(deconvolution)或是分數步長卷積(fractially straced convolutions)。

反卷積(deconvolutions)這種叫法是不合適的,因為它不符合反卷積的概念。在深度學習中,反卷積確實存在,但是並不常用。實際上,反卷積是卷積操作的逆過程。你可以這麼理解這個過程,將某個圖像輸入到單個卷積層,取卷積層的輸出傳遞到一個黑盒子中,這個黑盒子輸出了原始圖像。那麼可以說,這個黑盒子完成了一個反卷積操作,也就是卷積操作的數學逆過程。

轉置卷積與真正的反卷積有點相似,因為兩者產生了相同的空間解析度。然而,這兩種卷積對輸入數據執行的實際數學運算是不同的。轉置卷積層只執行了常規的卷積操作,但是恢復了其空間解析度。

卷積核為3、步幅為2和無邊界擴充的二維卷積結構

舉個例子,假如將一張5×5大小的圖像輸入到卷積層,其中步幅為2,卷積核為3×3,無邊界擴充。則卷積層會輸出2×2的圖像。

若要實現其逆過程,需要相應的數學逆運算,能根據每個輸入像素來生成對應的9個值。然後,將步幅設為2,遍歷輸出圖像,這就是反卷積操作。

卷積核為3×3、步幅為2和無邊界擴充的二維轉置卷積

轉置卷積和反卷積的唯一共同點在於兩者輸出都為5×5大小的圖像,不過轉置卷積執行的仍是常規的卷積操作。為了實現擴充目的,需要對輸入以某種方式進行填充。

你可以理解成,至少在數值方面上,轉置卷積不能實現卷積操作的逆過程。

轉置卷積只是為了重建先前的空間解析度,執行了卷積操作。這不是卷積的數學逆過程,但是用於編碼器-解碼器結構中,效果仍然很好。這樣,轉置卷積可以同時實現圖像的粗粒化和卷積操作,而不是通過兩個單獨過程來完成。

可分離卷積

在可分離卷積(separable convolution)中,可將卷積核操作拆分成多個步驟。卷積操作用y=conv(x, k)來表示,其中輸出圖像為y,輸入圖像為x,卷積核為k。接著,假設k可以由下式計算得出:k=k1.dot(k2)。這就實現了一個可分離卷積操作,因為不用k執行二維卷積操作,而是通過k1和k2分別實現兩次一維卷積來取得相同效果。

X、Y方向上的Sobel濾波器

Sobel運算元通常被用於圖像處理中,這裡以它為例。你可以分別乘以矢量[1,0,-1]和[1,2,1]的轉置矢量后得到相同的濾波器。完成這個操作,只需要6個參數,而不是二維卷積中的9個參數。

這個例子說明了什麼叫做空間可分離卷積,這種方法並不應用在深度學習中,只是用來幫你理解這種結構。

在神經網路中,我們通常會使用深度可分離卷積結構(depthwise separable convolution)。

這種方法在保持通道分離的前提下,接上一個深度卷積結構,即可實現空間卷積。接下來通過一個例子讓大家更好地理解。

假設有一個3×3大小的卷積層,其輸入通道為16、輸出通道為32。具體為,32個3×3大小的卷積核會遍歷16個通道中的每個數據,從而產生16×32=512個特徵圖譜。進而通過疊加每個輸入通道對應的特徵圖譜后融合得到1個特徵圖譜。最後可得到所需的32個輸出通道。

針對這個例子應用深度可分離卷積,用1個3×3大小的卷積核遍歷16通道的數據,得到了16個特徵圖譜。在融合操作之前,接著用32個1×1大小的卷積核遍歷這16個特徵圖譜,進行相加融合。這個過程使用了16×3×3+16×32×1×1=656個參數,遠少於上面的16×32×3×3=4608個參數。

這個例子就是深度可分離卷積的具體操作,其中上面的深度乘數(depth multiplier)設為1,這也是目前這類網路層的通用參數。

這麼做是為了對空間信息和深度信息進行去耦。從Xception模型的效果可以看出,這種方法是比較有效的。由於能夠有效利用參數,因此深度可分離卷積也可以用於移動設備中。

相關閱讀

原文:

更多卷積動畫:

【完】

活動報名

8月2日(周三),量子位邀請保險服務領域的AI公司靈智優諾CTO許可,分享NLP在保險智能投顧中的應用和相關技術問題,歡迎報名~

交流溝通

量子位還有自動駕駛NLPCV機器學習等專業討論群,僅接納相應領域的一線工程師、研究人員等

請添加小助手qbitbot2為微信好友,提交相應說明,符合條件將被邀請入群。(審核較嚴,敬請諒解)

掃碼強行關注『量子位』

追蹤人工智慧領域最勁內容



熱門推薦

本文由 yidianzixun 提供 原文連結

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