简介
MobileNet作为一个,轻量级的网络,可以在移动设备上进行训练,关键是采用了 深度可分离卷积(depthwise separable convolution)来提高效率,下面注重介绍介绍 深度可分离卷积。
传统卷积方法
假设输入特征图大小为 DF×DF×MD_F×D_F×MDF×DF×M,输出特征图大小为 DF×DF×ND_F×D_F×NDF×DF×N,卷积核大小为 DK×DK×MD_K×D_K×MDK×DK×M,则传统卷积的计算量为:
DK×DK×M×N×DF×DF
D_K×D_K×M×N×D_F×D_F
DK×DK×M×N×DF×DF
下图为传统的卷积核
深度可分离卷积
深度可分离卷积,将卷积分为两步,第一步,使用的卷积核大小为 DK×DK×1D_K×D_K×1DK×DK×1,进行卷积,这样每一个卷积核就会产生 M个 DF×DFD_F×D_FDF×DF结果(假设卷积不改变图片尺寸),然后使用 1×1×M1×1×M1×1×M的 卷积核,这样就得到一个结果图。一共有N个卷积核,就得到了 DF×DF×ND_F×D_F×NDF×DF×N的结果图
深度可分离卷积的计算量为深度卷积和 1×1 卷积的计算量之和:
DK×DK×M×DF×DF+M×N×DF×DF D_K×D_K×M×D_F×D_F+M×N×D_F×D_F DK×DK×M×DF×DF+M×N×DF×DF
深度可分离卷积与传统卷积的计算量之比为:
DK×DK×M×DF×DF+M×N×DF×DFDK×DK×M×N×DF×DF=1N+1DK2\frac{D_K×D_K×M×D_F×D_F+M×N×D_F×D_F}{D_K×D_K×M×N×D_F×D_F} = \frac{1}{N} + \frac{1}{D_K^2}DK×DK×M×N×DF×DFDK×DK×M×DF×DF+M×N×DF×DF=N1+DK21
明显计算量比传统的卷积核小很多,其实是卷积核个数N越大的时候,计算量少的更加明显
下图为深度可分离的卷积核
下图为1*1 的卷积核
接下来一张图片,可以简单概括一下传统卷积核和深度可分离卷积的区别
(a) 传统的卷积,直接映射
(b) 深度可分离的卷积