轻量化网络:MobileNet v1解析

原文: MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

论文链接https://arxiv.org/abs/1704.04861

开源测试代码与预训练模型(caffe版本)https://github.com/shicai/MobileNet-Caffe

原文链接https://blog.csdn.net/hongbin_xu/article/details/82957426

1、四个问题


1.1、要解决什么问题?
在现实场景下,诸如移动设备、嵌入式设备、自动驾驶等等,计算能力会受到限制,所以本文的目标就是构建一个小且快速(small and low latency)的模型。


1.2、用了什么办法解决?
提出了MobileNet架构,使用深度可分离卷积(depthwise separable convolutions)替代传统卷积。
在MobileNet网络中还引入了两个收缩超参数(shrinking hyperparameters):宽度乘子(width multiplier)和分辨率乘子(resolution multiplier)。


1.3、效果如何?
在一系列视觉任务如ImageNet分类、细粒度分类、目标检测等等上,显著降低模型大小的同时也取得了不错的效果。


1.4、还存在什么问题?(参考自知乎)
MobileNet v1的结构过于简单,是类似于VGG的直筒结构,导致这个网络的性价比其实不高。如果引入后续的一系列ResNet、DenseNet等结构(复用图像特征,添加shortcuts)可以大幅提升网络的性能。
Depthwise Convolution存在潜在问题,训练后部分kernel的权值为0。

2、网络结构
2.1、Depthwise Separable Convolution

2.1.1、标准卷积

2.1.2、深度可分离卷积


分为两部分:depthwise卷积和pointwise卷积。
depthwise卷积:对每个输入通道单独使用一个卷积核处理。
pointwise卷积:1×1 1 \times 11×1卷积,用于将depthwise卷积的输出组合起来。

2.1.3、标准卷积与深度可分离卷积计算量的比较

Depthwise Separable Convolution结构如下:

备注:

在Mobile v1里面使用ReLU6,ReLU6就是普通的ReLU但是限制最大输出值为6(对输出值做clip),这是为了在移动端设备float16的低精度的时候,也能有很好的数值分辨率,如果对ReLU的激活范围不加限制,输出范围为0到正无穷,如果激活值非常大,分布在一个很大的范围内,则低精度的float16无法很好地精确描述如此大范围的数值,带来精度损失。
 

2.2、MobileNet结构

2.4、控制MobileNet模型大小的两个超参数

2.4.1、宽度因子(Width Multiplier):更薄的模型
如果需要模型更小更快,可以定义一个宽度因子,这个宽度因子可以让网络的每一层都变的更薄。如果input的channel是就变为,如果output channel是N就变为,那么在有宽度因子情况下的深度分离卷积运算的计算量公式就成了如下形式:

,一般取值为1,0.75,0.5或者0.25。如果为1就是基本的mobilenet,如果小于1就是缩减了的mobilenet。宽度因子会缩小网络的计算量和参数,能够让原来的模型变成一个更小的模型,但是在精确度和模型尺寸之间需要权衡。而且如果修改了宽度因子,网络需要重头开始训练。

该参数用于控制特征图的维数,即通道数。

2.4.2、分辨率因子(Resolution Multiplier):减少表达力
第二个减少计算量的超参数就是分辨率因子,这个因子是和input的长宽相乘,会缩小input的长宽而导致后面的每一层的长宽都缩小。

,一般让input的长宽为224,192,160和128。

该参数用于控制特征图的宽/高,即分辨率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值