轻量级网络之mobilenet_v1
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>