Depth-wise Convolution的目的是為了減少計算量,提高計算速度。
對於Depth-wise Convolution來說,一個卷積核只負責一個通道,一個通道只被一個卷積核卷積。
對於普通的卷積層來說:
input feature map為[12,12,3],使用256個[5,5,3]的卷積核,得到output feature map為[8,8,256],參數量為5*5*3*256=19200,所需計算乘法的次數為5*5*3*256*8*8=1228800(FLOPs)。
對於Depth-wise Convolution來說:
分為兩步:
(1)通道分開卷積,input feature map為[12,12,3],分別使用3個[5,5,1]的卷積核,得到output feature map[8,8,3]
(2)再一起卷積,input feature map為[8,8,3],使用256個[1,1,3]的卷積核,得到output feature map[8,8,256]
參數量為:5*5*1*3+1*1*3*256=843,所需計算的乘法次數為5*5*1*3*8*8+1*1*3*256*8*8=53952(FLOPs)。
參考:https://zhuanlan.zhihu.com/p/149564248