對深度可分離卷積、分組卷積、空洞卷積、轉置卷積的理解
阿新 • • 發佈:2018-11-27
參考:
https://blog.csdn.net/chaolei3/article/details/79374563
https://blog.csdn.net/jiachen0212/article/details/78548667
https://blog.csdn.net/u014722627/article/details/60574260
https://blog.csdn.net/LoseInVain/article/details/81098502
深度可分離卷積
在《Python深度學習》(Keras之父執筆)這本書裡看到:
注意,大部分(或全部)普通卷積很可能不久後會被深度可分離卷積(depthwise separable convolution)所替代, 後者與前者等效,但速度更快,表示效率更高。
- 簡介
在可分離卷積中,它將對區域和通道的計算分離開,而普通卷積是同時考慮區域和通道的。 - 通過例子對比可分離卷積和普通卷積的區別
假設一個3×3大小的filter,其輸入通道為16,輸出通道為32
普通卷積的引數: (3×3×16)×32=4068
可分離卷積:
先考慮區域,即每個通道對應一個3×3×1大小的filter, 然後考慮通道對應32個1×1×16大小的filter
引數計算: (3×3×1)×16 + (1×1×16)×32=656
下面這張圖來自參考連結1
分組卷積
- 簡介
Group convolution最早在AlexNet中出現,受硬體資源的限制,無法將卷積操作在一個GPU進行處理。
分組卷積是沿通道方向將資料分組,假設分成g組,那麼每一組中的通道數為c1/g,對應輸出的通道數為c2/g。 - 通過一個例子理解分組卷積
輸入通道為256,輸出通道為256,filter大小為3×3
普通卷積的引數: (3×3×256)×256
分組卷積:當組數為8時,每一組的輸入通道數為32,輸出通道數為32。((3×3×32)×32×8)
可見,分組卷積的引數變為原來的八分之一,極大地減小了引數。
空洞卷積
空洞卷積是針對影象語義分割問題中下采樣(即池化操作)會降低影象解析度,丟失資訊而提出的一種卷積思路。空洞卷積通過對卷積核新增空洞來擴大感受野,感受野是指數級增長的。
空洞卷積並不增加引數量,多出的點給出的權值就是0,無需訓練。
轉置卷積
用轉置卷積進行上取樣,當用神經網路生成圖片的時候,經常需要將一些低解析度的圖片轉換為高解析度的圖片。
簡單來說,轉置卷積恢復了原來的shape,value並不一致,但是維持了對應關係,即進行卷積操作的時候,x4影響了y0, y2位置的數值生成,那麼轉置卷積的時候,y0, y2 的值會影響x4值的生成,只是此時x4的值和之前的值不相同罷了。
下圖來自李巨集毅老師的課件