MobileNet 进化史: 从 V1 到 V3(V1篇)
这部分内容总共由如下 3 篇文章构成。
- MobileNet 进化史: 从 V1 到 V3(V1篇)
- MobileNet 进化史: 从 V1 到 V3(V2篇)
- MobileNet 进化史: 从 V1 到 V3(V3篇)
- MobileNet实战:基于 MobileNet 的人脸表情分类
1. 前言
MobileNet V1 是 Andrew G. Howard(Google Inc.) 等人于 2017 年(其实是 2016 年先于 Xception 已经提出,但是直到 2017 年才挂到 arXiv 上)在 MobileNets: Efficient Convolutional Neural Networks for Mobile Vision
Applications 中提出的一种网络结构,这种网络结构的特点是模型小,计算速度快,适合部署到移动端或者嵌入式系统中。
MobileNet V1 的关键是用深度可分卷积(depthwise separable convolutions) 替代了传统的卷积操作。其实这里隐含了一个问题是为什么这样可以使参数变少,计算量减小?原因很简单,因为卷积操作在模型中占了绝大多数的存储和计算资源。
上面是 AlexNet 中各个 layer 所占用的计算资源的情况,从图中可以非常清楚的看出卷积操作是占大头的,所以优化卷积操作是可以起到立竿见影的效果的。
2. 深度可分卷积
对于传统的卷积操作,比如如下的卷及操作,假设:
- 操作前 feature size 为 H D ∗ W D ∗ M H_D * W_D * M HD∗WD∗M
- 卷积核的 size 为 H K ∗ W K ∗ M ∗ N H_K * W_K * M * N HK∗WK∗M∗N
- 卷积后 feature size 为 H A ∗ W A ∗ N H_A * W_A * N HA∗WA∗N
其中 H A = H D − H K + 2 ∗ P a d d i n g s t r i d e + 1 H_A = \frac{H_D - H_K + 2 * Padding}{stride} + 1 HA=strideHD−HK+2∗Pa