1、动机
MobileNet是为移动和嵌入式设备提出的高效模型,使用深度可分离卷积(depthwise separable convolutions,即Xception变体结构)来构建轻量级深度神经网络。
2、核心技术
depthwise separable卷积
depthwise separable convolution可以进一步拆分成depthwise卷积和pointwise卷积,如下图所示为普通卷积和depthwise separable卷积的对比
优点:既增加了网络的非线性,又极大的减少了计算量。大约变成了 1 / (K_h * K_w) 的计算量。对于3*3的卷积核,差不多减少了9倍。然而在实际的使用中,dw卷积加速没有那么快,一是加速库支持的不好,另外就是dw卷积对访存性能要求比较高。
Relu6
使用relu6. 对relu输出的最大值进行clip。Relu在x>0的区域使用x进行线性激活,有可能造成激活后的值太大,影响模型的稳定性,为抵消ReLU激励函数的线性增长部分,可以使用Relu6函数。
另外一种解释:主要是为了在移动端设备float16/int8的低精度时也能有很好的数值分辨率,如果对普通relu函数的激活范围不加限制,输出的范围为0到正无穷,如果激活值非常大,分布在一个很大的范围内,则低精度的loat16/int8就无法良好地精确描述如此大范围地数值,从而带来精度地损失。
网络大小控制
MobileNetV1引入了两个超参数来进一步平衡模型大小以及准确率:通道系数α∈(0,1]与分辨率系数ρ∈(0,1]。所有层的 通道数(channel) 乘以 α 参数(四舍五入),模型大小近似下降到原来的 α^2倍,计算量下降到原来的 α^2 倍;输入层的 分辨率(resolution) 乘以 ρ 参数 (四舍五入),等价于所有层的分辨率乘 ρ ,模型大小不变,计算量下降到原来的 ρ^2倍
3、网络结构
4、网络性能
Model | Million MACs | Million Parameters | Top-1 Accuracy | Top-5 Accuracy |
569 | 4.24 | 70.9 | 89.9 | |
418 | 4.24 | 70.0 | 89.2 | |
291 | 4.24 | 68.0 | 87.7 | |
186 | 4.24 | 65.2 | 85.8 | |
317 | 2.59 | 68.4 | 88.2 | |
233 | 2.59 | 67.2 | 87.3 | |
162 | 2.59 | 65.3 | 86.0 | |
104 | 2.59 | 62.1 | 83.9 | |
150 | 1.34 | 63.3 | 84.9 | |
110 | 1.34 | 61.7 | 83.6 | |
77 | 1.34 | 59.1 | 81.9 | |
49 | 1.34 | 56.3 | 79.4 | |
41 | 0.47 | 49.8 | 74.2 | |
34 | 0.47 | 47.7 | 72.3 | |
21 | 0.47 | 45.5 | 70.3 | |
14 | 0.47 | 41.5 | 66.3 |
5、参考资料
MobileNet 进化史: 从 V1 到 V3(V1篇)
来自 <https://blog.csdn.net/kuweicai/article/details/103267230>
来自 <https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md>