学习笔记(一)Mobilenetv1的解读

学习笔记(一)Mobilenetv1的解读

1.Mobilenetv1

paper地址:https://arxiv.org/abs/1704.04861?context=cs

(1) 简介

MobileNet V1论文是google 在2017年4月提出的,作者先描述了现在的网络越来越网深层,准确率在不断的提高,伴随计算量越来越大,网络的效率并没有得到提升,表现在模型的大小(size)和速度(speed)方面,于是提出了这个轻量化网络模型。并在移动端或者嵌入式设备上得到广泛的应用。

(2) mobilenetv1详细介绍

1. 深度可分离卷积(depthwise separable convolutions)

作者从卷积下手,提出了一种新的卷积方法——深度可分离卷积(depthwise separable convolutions),就是将原本标准的卷积操作因式分解成一个depthwise convolution和一个1*1的pointwise convolution操作。简单讲就是将原来一个卷积层分成两个卷积层,其中前面一个卷积层的每个filter都只跟input的每个channel进行卷积,然后后面一个卷积层则负责combining,即将上一层卷积的结果进行合并。
图示详细说明:
在这里插入图片描述
图(a):所示是使用标准卷积核,计算一个标准的卷积层计算量为:

D_K* D_K是kernel size,M为input channel,N为output channel,D_F* D_F 是feature map的大小。
在这里插入图片描述
图(b):是使用深层卷积核,它每个输入通道只使用单个过滤器(filter),故执行一次卷积运算的计算量为:
在这里插入图片描述
在这里插入图片描述
图(c):是分解成的1x1 conv点卷积。kernel size: D_K\cdot D_K = 1,所以它的计算量为:
在这里插入图片描述
这样就得到我们深度可分离卷积的总计算量,即为两者相加:
在这里插入图片描述
计算量减少到原来的倍数:
在这里插入图片描述
如果使用3x3的深度可分离卷积,大约减少8~9倍的计算量。

2. Mobilenet网络结构

MobileNet的网络结构如表1所示。首先是一个3x3的标准卷积,然后后面就是堆积depthwise separable convolution,并且可以看到其中的部分depthwise convolution会通过strides=2进行down sampling。然后采用average pooling将feature变成1x1,根据预测类别大小加上全连接层,最后是一个softmax层。如果单独计算depthwise
convolution和pointwise convolution,整个网络有28层(这里Avg Pool和Softmax不计算在内)。
在这里插入图片描述
前面讲述了depthwise separable convolution,这是MobileNet的基本组件,但是在真正应用中会加入batchnorm,并使用ReLU激活函数,所以depthwise separable convolution的基本结构如图所示。
在这里插入图片描述
表2 MobileNet网络的计算与参数分布
在这里插入图片描述

3. Mobilenet瘦身

3.1. 宽度缩放因子(Width Multiplier)

为了模型更小、计算量更少,作者引入一个简单的参数α,让输入通道变为αM,输出通道变为αN,整个计算量就变为了:
在这里插入图片描述
其中α∈ (0, 1],一般取值为1,0.75,0.5或者0.25。如果为1就是基本的mobilenet,如果小于1就是缩减了的mobilenet。宽度因子会缩小网络的计算量和参数,能够让原来的模型变成一个更小的模型,但是在精确度和模型尺寸之间需要权衡。而且如果修改了宽度因子,网络需要重头开始训练。

3.2. 宽度缩放因子(Resolution Multiplier)

第二个减少计算量的超参数就是分辨率因子ρ,这个因子是和input的长宽相乘,会缩小input的长宽而导致后面的每一层的长宽都缩小。
在这里插入图片描述
其中ρ ∈(0, 1],得到典型的分辨率为224, 192, 160, 128 等。

References:

[1] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
[2]深刻解读MobileNet网络结构

猜你喜欢

转载自blog.csdn.net/weixin_43624833/article/details/103806608