Depthwise(DW)卷積與Pointwise(PW)卷積,合起來被稱作Depthwise Separable Convolution(參見Google的Xception),該結構和正常卷積操作類似,可用來提取特征,但相比于正常卷積操作,其參數量和運算成本較低。是以在一些輕量級網絡中會碰到這種結構如MobileNet。
正常卷積操作
對于一張5×5像素、三通道彩色輸入圖檔(shape為5×5×3)。經過3×3卷積核的卷積層(假設輸出通道數為4,則卷積核shape為3×3×3×4),最終輸出4個Feature Map,如果有same padding則尺寸與輸入層相同(5×5),如果沒有則為尺寸變為3×3。

Depthwise Separable Convolution
Depthwise Separable Convolution是将一個完整的卷積運算分解為兩步進行,即Depthwise Convolution與Pointwise Convolution。
Depthwise Convolution
不同于正常卷積操作,Depthwise Convolution的一個卷積核負責一個通道,一個通道隻被一個卷積核卷積。上面所提到的正常卷積每個卷積核是同時操作輸入圖檔的每個通道。
同樣是對于一張5×5像素、三通道彩色輸入圖檔(shape為5×5×3),Depthwise Convolution首先經過第一次卷積運算,不同于上面的正常卷積,DW完全是在二維平面内進行。卷積核的數量與上一層的通道數相同(通道和卷積核一一對應)。是以一個三通道的圖像經過運算後生成了3個Feature map(如果有same padding則尺寸與輸入層相同為5×5),如下圖所示。
Depthwise Convolution完成後的Feature map數量與輸入層的通道數相同,無法擴充Feature map。而且這種運算對輸入層的每個通道獨立進行卷積運算,沒有有效的利用不同通道在相同空間位置上的feature資訊。是以需要Pointwise Convolution來将這些Feature map進行組合生成新的Feature map。
Pointwise Convolution
Pointwise Convolution的運算與正常卷積運算非常相似,它的卷積核的尺寸為 1×1×M,M為上一層的通道數。是以這裡的卷積運算會将上一步的map在深度方向上進行權重組合,生成新的Feature map。有幾個卷積核就有幾個輸出Feature map。如下圖所示。
本文參考尹國冰的部落格—卷積神經網絡中的Separable Convolution