【网络结构】MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications论文解析

0. Paper link

MobileNets

1. Overview

??MobileNets是一种基于深度可分割卷积的轻量流线型结构,引进了两个简单的全局超参数在延迟与准确率之间达到了平衡,并且超参数让model builder可以按照不同的应用场景的限制去选择合适大小的模型,网络的主要贡献是把传统的卷积拆成了“deepwise convolution”与“pointwise convolution”来减少卷积过程的计算量与参数数量,同时利用了两个超参数来改变了网络的宽度与输入图片的分辨率。文章做的实验也比较好,是一篇值得学习各方面得文章,不仅仅是他的网络结构。

2. Depthwise Separable Convolution

2.1 architecture

??MobileNet的网络结构基于Depthwise Separable Convolution, 它把传统的卷积操作拆成了两部分,一部分是Depthwise convolution,即对输入的每个channel使用一个卷积核,来达到对每一层做convolution的操作。另一部分是pointwise convolution,利用1 × 1卷积把Depthwise convolution的输出组合起来,从而达到传统convolution的效果,具体可以看下图:

2.2 computational cost

??对于一个传统的卷积操作:假设输入与输出的feature map都是\(D_F × D_F × M\),卷积核为\(D_K × D_K × M × N\), 其中\(D_F\)与\(D_K\)是尺寸(作者假设输入等于输出并且都是正方形,实际网络模型可以处理任何大小与长宽比),M是通道数,N是卷积核的个数。

??传统卷积操作如下(加padding)

\[
\mathbf{G}_{k, l, n} = \sum_{i, j, m} \mathbf{K}_{i, j, m, n} · \mathbf{F}_{k+i-1, l+j-1, m}
\]

??传统卷积computational cost 如下

\[D_K · D_K · M · N · D_F · D_F\]

??depthwise convolution计算如下:

\[
\hat{\mathbf{G}}_{k, l, m} = \sum_{i, j}\hat{\mathbf{K}}_{i, j, m} · \mathbf{F}_{k+i-1, l+j-1, m}
\]

??depthwise convolution的computational cost如下:

\[
D_K · D_K · M · D_F · D_F
\]

??所以Depthwise Separable convolution cost:

\[
D_K · D_K · M · D_F · D_F + M · N · D_F · D_F
\]

??他们之间computational cost的比例为:

\[
\frac{D_K · D_K · M · D_F · D_F + M · N · D_F · D_F}{D_K · D_K · M · N · D_F · D_F} = \frac{1}{N} + \frac{1}{D^{2}_{K}}
\]

3. Network Structure

??MobileNet除了第一层是全卷积其他层的卷积都是使用Depthwise Separable convolutions,除了最后一层FC层数值直接送到softmax层之外,所有层后面都跟着BN层以及ReLU激活函数, 一个average pooling层在FC层之前把空间卷积减为1。

下图为 Depthwise Separable convolution的结构:

下表为一个MobileNet的整体结构:

以下为文中的一些具体实行细节,自己经验不多,直接翻译来增加一些知识储备。

??非结构化的稀疏矩阵操作通常不比密集矩阵运算快,除非是非常稀疏的矩阵。我们的模型结构将几乎全部的计算复杂度放到了1x1卷积中。这可以通过高度优化的通用矩阵乘法(GEMM)功能来实现。通常卷积由GEMM实现,但需要在称为im2col的内存中进行初始重新排序,以将其映射到GEMM。这个方法在流行的Caffe包中正在使用。1x1的卷积不需要在内存中重新排序而可以直接被GEMM(最优化的数值线性代数算法之一)实现。MobileNet在1x1卷积花费了95%计算复杂度,也拥有75%的参数(见表二)。几乎所有的额外参数都在全连接层。

下图为不同层的参数量:

??使用类似于InceptionV3的异步梯度下降的RMSprop,MobileNet模型在TensorFlow中进行训练。然而,与训练大模型相反,我们较少地使用正则化和数据增加技术,因为小模型不容易过拟合。当训练MobileNets时,我们不使用sideheads或者labelsmoothing,通过限制croping的尺寸来减少图片扭曲。另外,我们发现重要的是在depthwise滤波器上放置很少或没有重量衰减(L2正则化),因为它们参数很少。

4. Width Multiplier: Thinner Models

??加入一个超参数Width Multiplier \(\alpha\)来使得模型更小更快,用来对网络中的每一层进行“瘦身”(thin)。输入的通道\(M\)变为\(\alpha M\)输出的通道\(N\)变为\(\alpha N\),因此加上Width Multiplier的cost为:

\[{D_K · D_K · \alpha M · D_F · D_F + \alpha M · \alpha N · D_F · D_F}\]

其中 \(\alpha \in (0, 1]\),Width multiplier有减少计算复杂度和参数数量(\(\alpha ^ 2\))的作用。

5. Resolution Multiplier: Reduced Representation

??加入第二个超参数resolution multiplier \(\rho\)来统一减少输入图片跟中间每一层的特征。现在Depthwise Separable convolution 的计算量如下:

\[
D_K · D_K · \alpha M · \rho D_F · \rho D_F + \alpha M · \alpha N · \rho D_F · \rho D_F
\]

??其中 \(\rho \in (0, 1]\) 通常网络的输入像素设为224, 192, 160, 128.另外 ,resolution multiplier 也有减少计算复杂度和参数数量(\(\rho ^ 2\))的作用。

Experiments

??下图比较了MoilbeNet全卷积与Depthwise Separable convolution的性能,可以发现仅仅在准确率低了1%左右,参数却少很多

??下面比较了 “浅层”网络与“瘦”网络的性能

??下面实验在固定 \(\rho\) 改变 \(\alpha\)来观察在ImageNet上的准确率变化

??下面实验在固定\(\alpha\)改变\(\rho\)来观察在ImageNet上的准确率变化

??下面实验比较了随着计算量增大准确率的变化

??下面实验比较了 \(\alpha \in \{1, 0.75, 0.5, 0.25\}\) \(\rho \in \{224, 192, 160, 128\}\)一共16个模型的实验性能

??下面实验比较了MobileNet与VGG GoogLeNet 之间的准确、计算量与参数

??下面实验比较了smaller MobileNet与Squeezenet AlexNet 之间的准确、计算量与参数

??下面实验比较了各版本MobileNet与inception V3在细粒度分类方面的准确、计算量与参数

??下面实验比较了各版本MobileNet与其他网络在目标检测方面的准确、计算量与参数

原文地址:https://www.cnblogs.com/kk17/p/9870651.html

时间: 2024-11-05 00:42:01

【网络结构】MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications论文解析的相关文章

【论文翻译】MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文链接:https://arxiv.org/pdf/1704.04861.pdf 摘要和Prior Work就略了,懒. 1. Introduction 介绍了一种高效的网络架构和两个超参数,以便构建非常小的,低延迟(快速度)的模型,可以轻松匹配移动和嵌入式视觉应用的设计要求.引入的两个简单的全局超参数,使得模型可以在速度和准确度

Paper | MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

目录 1. 故事 2. MobileNet 2.1 深度可分离卷积 2.2 网络结构 2.3 引入两个超参数 3. 实验 本文提出了一种轻量级结构MobileNets.其基础是深度可分离卷积操作. MobileNet具有两个超参数,可以调节精度(accuracy)和延迟(latency)之间的权衡. 1. 故事 现有的模型越来越深,越来越复杂,效率却有可能越来越低.这在实际应用中是无法接受的. 本文于是推出了一种网络,包含两个超参数,可以根据需求适配. 历史工作大多考虑让网络更小,即关注size

(转载)Convolutional Neural Networks卷积神经网络

Convolutional Neural Networks卷积神经网络 Contents 一:前导 Back Propagation反向传播算法 网络结构 学习算法 二:Convolutional Neural Networks卷积神经网络 三:LeCun的LeNet-5 四:CNNs的训练过程 五:总结 本文是我在20140822的周报,其中部分参照了以下博文或论文,如果在文中有一些没说明白的地方,可以查阅他们.对Yann LeCun前辈,和celerychen2009.zouxy09表示感谢

卷积神经网络用于视觉识别Convolutional Neural Networks for Visual Recognition

Table of Contents: Architecture Overview ConvNet Layers Convolutional Layer Pooling Layer Normalization Layer Fully-Connected Layer Converting Fully-Connected Layers to Convolutional Layers ConvNet Architectures Layer Patterns Layer Sizing Patterns C

Convolutional Neural Networks for Visual Recognition 8

Convolutional Neural Networks (CNNs / ConvNets) 前面做了如此漫长的铺垫,如今终于来到了课程的重点. Convolutional Neural Networks. 简称CNN,与之前介绍的一般的神经网络相似,CNN相同是由能够学习的权值与偏移量构成.每个神经元接收一些输入.做点积运算加上偏移量,然后选择性的通过一些非线性函数.整个网络终于还是表示成一个可导的loss function,网络的起始端是输入图像.网络的终端是每一类的预測值,通过一个ful

Convolutional Neural Networks卷积神经网络

转自:http://blog.csdn.net/zouxy09/article/details/8781543 9.5.Convolutional Neural Networks卷积神经网络 卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点.它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量.该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程.卷积网络是为识别

ImageNet Classification with Deep Convolutional Neural Networks

ImageNet Classification with Deep Convolutional Neural Networks Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton 摘要 我们训练了一个大型的深度卷积神经网络,来将在ImageNet LSVRC-2010大赛中的120万张高清图像分为1000个不同的类别.对测试数据,我们得到了top-1误差率37.5%,以及top-5误差率17.0%,这个效果比之前最顶尖的都要好得多.该神经网络有

Convolutional Neural Networks for Visual Recognition 5

Setting up the data and the model 前面我们介绍了一个神经元的模型,通过一个激励函数将高维的输入域权值的点积转化为一个单一的输出,而神经网络就是将神经元排列到每一层,形成一个网络结构,这种结构与我们之前介绍的线性模型不太一样,因此score function也需要重新定义,神经网络实现了一系列的线性映射与非线性映射,这一讲,我们主要介绍神经网络的数据预处理以及score function的定义. data processing 给定一个训练集,S={xi∈RD|i

Image Scaling using Deep Convolutional Neural Networks

Image Scaling using Deep Convolutional Neural Networks This past summer I interned at Flipboard in Palo Alto, California. I worked on machine learning based problems, one of which was Image Upscaling. This post will show some preliminary results, dis