MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
https://arxiv.org/abs/1704.04861
https://github.com/hollance/MobileNet-CoreML https://github.com/shicai/MobileNet-Caffe
本文是 Google 针对手机等嵌入式设备提出的一个小网络模型,叫 MobileNets,主要侧重于简单有效。
这个 MobileNets 可以干什么了?
目标检测、细分类、人脸属性分析、场景识别
3 MobileNet Architecture 这个模型主要依赖于 Depthwise Separable Convolution 来降低计算量
3.1. Depthwise Separable Convolution 我们首先来看看什么是 Depthwise Separable Convolution 一个标准的卷积层输入输出分别是: 输入特征图F尺寸假定为 F×F× M, 输出特征图 G 尺寸假定为 G×G× N,卷积层可以参数化为 K×K× N× N 卷积核,
标准卷积计算量为:
其实标准卷积一次性做了两件事:普通的卷积 和 特征数量的变化 。Depthwise separable convolution 主要是将这两件事分开做。分为 depthwise convolutions 和 pointwise convolutions depthwise convolutions 就是使用 一个 滤波器对每个输入通道进行卷积,特征数量保持不变 Pointwise convolution 就是使用一个 1×1 卷积,将M个输入特征 变为 N个 输出特征
Depthwise separable convolutions 的计算量为:
上式加号左边为 Depthwise convolution 计算量, 右边是 Pointwise convolution 计算量。
通过比较两者的计算量我们得到节约了多少计算量,一般是 8-9倍:
3.2. Network Structure and Training
网络主体结构:
3.3. Width Multiplier: Thinner Models 如果我们想根据自己的意愿改变网络,这里只需要加入一个参数就可以了 width multiplier
3.4. Resolution Multiplier: Reduced Representation 这里又引入了第二个超参数可用于降低计算量 resolution multiplier
4 Experiments