您的位置:首页 > 移动开发

论文记录_MobileNets Efficient Convolutional Neural Networks for Mobile Vision Application

2017-09-21 13:58 751 查看
Tensorflow
 中的实现:点击查看
Caffe
 中的实现:点击查看


1、概述

Google
2017
年提出的适用于手机端的神经网络模型
主要使用了深度可分离卷积
Depthwise
Separable Convolution
 将卷积核进行分解计算来减少计算量
引入了两个超参数减少参数量和计算量
宽度乘数(
Width
Multiplier
): [减少输入和输出的 
channels
 ]
分辨率乘数(
Resolution
Multiplier
):[减少输入输出的 
feature
maps
 的大小]


2、深度可分离卷积(
Depthwise
Separable Convolution

可以将一个标准卷积核分成一个深度卷积
depthwise
convolution
 和 一个
1X1
的卷积(叫作逐点卷积
pointwise
convolution
)。如下图所示




2.1
标准卷积

标准的卷积层是将维度为DF×DF×M的输入层转化为维度为DG×DG×N [ 上篇论文中也有提到]
DF 是输入
feature
map
的长和宽,M 是输入的通道数(
channels

DG 是输出
feature
map
的长和宽,N 是输出的通道数

假设卷积核
filter
的大小是Dk×Dk,则标准卷积的计算量是

Dk⋅Dk⋅M⋅N⋅DF⋅DF
引用上篇论文中的图, 只看
kernel
matrix
 部分,Dk⋅Dk就是一个方格的大小,然后乘上输入和输出的
channels
个数,然后作用在input
feature maps



标准卷积是这样的, 即不管当前
pixel
有多少
channels
,卷积之后就是一个
channel





2.2
Depthwise Separable Convolution

分为两个步骤
第一步深度卷积:卷积核的大小是Dk×Dk×1×M,所以总的计算量是:

Dk⋅Dk⋅M⋅DF⋅DF

第二步逐点卷积:卷积核大小是1×1×M×N,所以总的计算量是:

M⋅N⋅DF⋅DF

所以和标准的卷积相比计算量比率为:

Dk⋅Dk⋅M⋅DF⋅DF+M⋅N⋅DF⋅DFDk⋅Dk⋅M⋅N⋅DF⋅DF=1N+1D2k
MobileNet
使用的是
3x3
的卷积核,所以计算量可以减少8-9倍 (因为比率是
1/N+1/9
)

第一步深度卷积操作是在每一个
channel
上进行的卷积操作



第二步逐点卷积才是结合起来




3.
神经网络结构

MobileNet
共有
28
层(深度卷积和逐点卷积分开来算)
之前标准的结构是卷积层之后跟上
Batch
Normalization
层和
Relu
激活函数,这里引入
Depthwise
separable convolution
之后的结构如下图
每一层都跟上了BN层和激活函数

总的结构






4.
宽度乘数(Width Multiplier)

引入超参数α,
目的是使模型变瘦,
即输入层的
channels
个数M,变成αM,输出层的
channels
个数N变成了αN
所以引入宽度乘数后的总的计算量是

Dk⋅Dk⋅αM⋅DF⋅DF+αM⋅αN⋅DF⋅DF
一般α∈(0,1],常取的值是
1,
0.75, 0.5, 0.25,

大约可以减少参数量和计算量的α2


5.
分辨率乘数 (Resolution Multiplier)

引入超参数ρ,目的是降低图片的分辨率
即作用在输入的
feature
map

所以再引入分辨率乘数后总的计算量是:

Dk⋅Dk⋅αM⋅ρDF⋅ρDF+αM⋅αN⋅ρDF⋅ρDF
一般输入图片的分辨率是
224,
192, 160 or 128

大约可以减少计算量的ρ2


6.
实验结果

关于超参数的选择,下图可以看出准确度和参数量和参数运算量的关系,之间有个
trade
off
,合理选择参数即可





还在细粒度的识别,大规模地理位置识别,人脸属性提取,目标检测和人脸识别等任务上进行了测试,效果也很好


7.
总结

主要是基于depthwise separable convolution
引入了两个超参数
[ 第一个宽度乘数就是减少
feature
map
,以此来降低模型厚度 ]
[ 第二个分辨率乘数就是缩小
feature
map
的大小,来减少计算量]

[ 超参数的选择是有个
trade
off
的 ]


Reference

https://arxiv.org/abs/1704.04861
https://github.com/tensorflow/models/blob/master/slim/nets/mobilenet_v1.md
https://github.com/shicai/MobileNet-Caffe
http://machinethink.net/blog/googles-mobile-net-architecture-on-iphone/
原文地址: http://lawlite.me/2017/09/12/%E8%AE%BA%E6%96%87%E8%AE%B0%E5%BD%95-MobileNets-Efficient-Convolutional-Neural-Networks-for-Mobile-Vision-Application/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐