mobilenets
文章提出分离式卷积的概念,具体就是将标准卷积用depthwise convolution和1 × 1 pointwise convolution替代.
可分离卷积的原理
标准卷积
对于标准卷积,
输入feature map为 DF∗DF∗M
输出feature map为 DF∗DF∗N
结构图为:
则需要卷积核 DK∗DK∗M∗N ,卷积计算公式如下:
Gk,l,n=∑i,j,mKi,j,m,n∗Fk+i−1,l+j−1,m
这样计算次数总共需要计算量为:
DK∗DK∗M∗N∗DF∗DF
分离式卷积:
结构图为:
每个input channel 一个滤波器,即有:
Gk,l,m=∑i,jKi,j,m∗Fk+i−1,l+j−1,m
上式中, DK∗DK∗M 为第m个滤波器的核函数,用于输入F的第m个通道的卷积,输出得到第m个通道的输出G,这样计算次数总共需要计算量为: DK∗DK∗M∗DF∗DF
depthwise convolution计算量减少了一半,但是他只是单个通道的滤波操作,没有结合不同通道的信息而创造新的特征,因此需要一个额外的层,以结合不同通道的滤波输出特征,我们采用1 × 1 pointwise convolution实现.
这样Depthwise separable convolutions的计算量为:
DK∗DK∗M∗DF∗DF+M∗N∗DF∗DF
计算量减少了 DK∗DK∗M∗DF∗DF+M∗N∗DF∗DFDK∗DK∗M∗N∗DF∗DF=1N+1D2K
可分离卷积网络结构
网络结构图如下:
左图为标准卷积,并加上batchnorm,relu,右边为可分离卷积层,分别在depthwise conv 和1x1 conv后面加入batchnorm,relu.