论文地址:https://arxiv.org/abs/1704.04861 (Submitted on 17 Apr 2017)
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
caffe官方实现ConvolutionDepthwise层:https://github.com/BVLC/caffe/pull/5665/files
1.摘要:MobileNets基于depthwise separable convolution搭建轻量级的深度神经网络。引入两个全局超参数在延迟和准确性上进行折中。
这些超参数有助于模型创建者根据问题的约束选择合适的模型大小。MobileNets在各种应用和用例(包括对象检测,细粒分类,人脸属性和大规模地理定位)中有效果。
2.MobileNets架构
(1)Depthwise Separable Convolution
Depthwise分离卷积层由两层组成:depthwise卷积和pointwise卷积。
输入图像大小Df*Df*M,输出图像大小Df*Df*N。
depthwise卷积层对每一个输入通道独立使用单一卷积,卷积核大小Dk*Dk,输出M个特征图。
pointwise卷积层使用N个1*1*M卷积,将depthwise卷积层的输出进行组合。
(2)网络结构
a.第一层卷积使用标准卷积
b.每一卷积层后面都接着BN层和ReLU层(处理最后一个全连接层,后接softmax进行类别预测)
总的网络结构
下采样通过第一层卷积以及某些stride为2的depth wise convolution层实现。
实验中,MobileNet的计算量和参数量统计:
实验中,发现在depthwise层不添加或添加较少的权重正则项比较有效
(3)超参数
a.width multiplier:thinner models
将层的输入和输出的channel 均压缩α倍, α参数取值为1,0.75,0.5,0.25. 可以将计算量和参数量减少α2倍
b.resolution multiplier: reduced representation
因子ρ将网络输入的大小降至224,192,160,128,可以将计算量减少ρ2倍
3.实验
(1)MobileNet精度下降1%,计算量和参数大幅下降。
(2)瘦的MobileNet(α=0.75)比浅的MobileNet(5层)在计算量和参数量相差不大的情况下,瘦的MobileNet精度好。
(3)后面作者在一些实际应用方面(细粒度分类、目标检测)与流行网络进行了对比。
总的来说,MobileNet是一种旨在不明显降低准确率的前提下显著降低计算量和参数量,提高速度的优秀方法,进行简单二分类测试速度确实较快。