一、标准卷积流程:
一次性完成,输入为, 过滤器为(个数为N),输出为
计算量为:
二、深度可分离卷积(Depthwise Seperable Convolution)流程:
分两步完成,分别为Depthwise Conv 和 Pointwise Conv
1. Depthwise Conv:filtering stage
输入为, 过滤器为(个数为M),输出为
计算量为:
2. Pointwise Conv:combination stage
输入为, 过滤器为(个数为N),输出为
计算量为:
总计算量为:
三、Depthwise Seperable Conv 和 Std.Conv 对比
1. 计算量对比
2. Depthwise Seperable Conv 比Std.Conv 的参数、计算时间少;同时对同一个模型架构,精度略低一点;
3. Depthwise Seperable Conv 分两步完成卷积: Depthwise Conv 和 Pointwise Conv
四、两个参数再次缩小模型
相对于基准模型,mobilenet可以提供两个参数:width multiplier 和 resolution multiplier。
1. width multiplier(宽度乘子):更薄的模型,按比例减少通道数,即深度,该参数记为 ,其取值范围为(0,1]。那么输入与输出通道数将变成 和,计算量变为:; 结果是参数量减少,计算量也减少。
2. resolution multiplier(分辨率乘子):分辨率更低的模型,按比例降低图的大小,记为 ;例如输入特征图是224x224,可以减少为192x192;计算量为:;结果是参数量不变,计算量减少。
五、Mobilenet
采用深度可分离卷积,主要目的是降低模型参数量和计算量。
1. MobilenetV1特点:
(1)采用深度可分离卷积,并且可调宽度乘子和分辨率乘子
(2)采用Batch Normalization
(3)采用Relu6激活函数
2. MobilenetV1的问题:
(1)没有利用残差块
(2)Relu6激活函数的存在,导致效果不好
3. MobilenetV2特点:
(1)增加Inverted residuals:通常的residuals block是先1*1的Conv layer,减少通道数下来,再3*3 Conv layer,最后经过一个1*1 的Conv layer,将通道数再“扩张”回去。即先“压缩”,最后“扩张”回去。
而 inverted residuals就是 先“扩张”,最后“压缩”,Depth-wise convolution之前多了一个1*1的“扩张”层,目的是为了提升通道数,获得更多特征;
(2)Linear bottlenecks:为了避免Relu对特征的破坏,在residual block的Eltwise sum之前的那个 1*1 Conv 不再采用Relu,而采用Linear,目的是防止Relu破坏特征。
(完)