1. 程式人生 > >對深度可分離卷積、分組卷積、空洞卷積、轉置卷積的理解

對深度可分離卷積、分組卷積、空洞卷積、轉置卷積的理解

參考:
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)所替代, 後者與前者等效,但速度更快,表示效率更高。

  1. 簡介
    在可分離卷積中,它將對區域和通道的計算分離開,而普通卷積是同時考慮區域和通道的。
  2. 通過例子對比可分離卷積和普通卷積的區別
    假設一個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
    在這裡插入圖片描述

分組卷積

  1. 簡介
    Group convolution最早在AlexNet中出現,受硬體資源的限制,無法將卷積操作在一個GPU進行處理。
    分組卷積是沿通道方向將資料分組,假設分成g組,那麼每一組中的通道數為c1/g,對應輸出的通道數為c2/g。
  2. 通過一個例子理解分組卷積
    輸入通道為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的值和之前的值不相同罷了。
下圖來自李巨集毅老師的課件
在這裡插入圖片描述