1. 摘要

作者提出了一系列应用于移动和嵌入式视觉的称之为 MobileNets 的高效模型,这些模型采用深度可分离卷积来构建轻量级网络。

作者还引入了两个简单的全局超参数来有效地权衡时延和准确率,以便于网络设计者针对自己任务的限制来选择大小合适的模型。

2. 相关工作

设计轻量级的高效模型大致可以分为两个方向:压缩预训练好的模型或者直接训练小的网络。

针对前者,模型压缩主要是基于量化、哈希、剪枝和霍夫曼编码等,另外一种训练小模型的方法则是蒸馏,用较大的网络来教较小的网络。而直接设计小网络结构的尝试则主要有 Xception、SqueezeNet 等。

MobileNets 主要集中在优化时延但同时也会产生较小的模型,同时,两个超参数宽度乘子和分辨率乘子可以根据实际应用来灵活地定义更小更高效的网络。

3. 网络结构

3.1. 深度可分离卷积

标准的卷积操作一步就可以对输入进行特征提取并将它们结合成一系列输出,深度可分离卷积则将这个过程分为两层:一层是深度卷积(depthwise convolution)用来对输入的每个通道单独提取特征,一层是点卷积(pointwise convolution)用 1×1 的卷积来结合上一步的输出。

假设输入的特征图大小是 \(D_F×D_F×M\),一个标准卷积层的参数为 \(D_K×D_K×M×N\),\(D_K\) 是卷积核的大小。如果输出特征图的空间大小保持不变,那么计算代价为:

\[D_K*D_K*M*N*D_F*D_F\]

而采用深度可分离卷积的计算代价为:

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

计算量减少了:

\[\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_K^2}\]

MobileNets 采用 3×3 大小的深度可分离卷积,相比标准卷积可以减少 8 到 9 倍的计算量。

除此之外,在深度可分离卷积的两层后面都要引入 BN 和 ReLU。

3.2. MobileNet 网络结构

MobileNet 的主体结构除了第一层为标准卷积外都采用深度可分离卷积,除了最后一层全连接没有激活函数直接送入到 Softmax 层外其余层都紧跟着 BN 和 ReLU。在第一层和深度卷积层采用步长为 2 来进行下采样,最后一个平局池化层将空间分辨率减小到 1。详细信息如下表所示:

通过定义有更少乘-加操作的网络是不够的,还要考虑在硬件上有效实现这些操作,比如非结构化的稀疏矩阵通常不会比密集矩阵快除非稀疏到一定程度。MobileNet 结构将几乎所有的计算都放在 1×1 卷积操作上,而这在现有的卷积实现算法中不需要在内存中的初始化重新排序,也就可以加快计算速度。

可以看到,95% 的计算时间都花费在 1×1 卷积上,75% 的参数量也都集中在 1×1 卷积层,其余的参数则主要来自全连接层。

3.3. 宽度乘子:更瘦的模型

尽管基本的 MobileNet 结构已经非常小、时延很低,但具体的使用场景可能需要模型更小更快。为了构建这些计算量更少更小的模型,作者引入了一个简单的参数 \(\alpha\),称之为宽度乘子(width multiplier),它的作用是统一让网络中的每一层都更瘦。

针对某一层网络和 \(\alpha\),输入的通道数从 \(M\) 变成 \(\alpha M\),输出通道数从 \(N\) 变成 \(\alpha N\),这样这一层的计算代价就变为:

\[D_K*D_K*\alpha M*D_F*D_F+\alpha M*\alpha N*D_F*D_F\]

宽度乘子可以以大致 \(\alpha^2\) 的速率减少计算代价和参数量,可以用来设计一个更小的网络来平衡准确率、时延和模型大小这三者。

3.4. 分辨率乘子:减弱表示能力

另一个减少计算代价的超参数是分辨率乘子(resolution multiplier) \(\rho\),将它应用在输入图像上,然后每一层的表示能力都相应减少。实际中,作者是通过设置输入分辨率来确定这个参数的。

宽度乘子和分辨率乘子结合在一起,某一层网络的计算代价就变为了:

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

分辨率乘子可以以 \(\rho^2\) 的速率减少计算代价。下面的例子可以很好地展示深度可分离卷积以及两个超参数是怎么减少网络的计算代价和参数量的。

4. 实验结果

采用深度卷积的网络相对于标准卷积节省了巨大的计算代价和参数量,但准确率却仅仅降低了 1%。

相较于移除表一中特征图大小为 14×14×512 的五层网络,宽度因子 \(\alpha=0.75\) 的更瘦网络比更浅的网络准确率高出 3 个百分点。

随着宽度因子的降低,模型的准确率平滑降低,直到值太小 \(\alpha=0.25\) 时才有显著下降。

随着分辨率因子的降低,模型的准确率始终保持平滑降低。

相较于 GoogleNet 和 VGG,MobileNet 的准确率接近于 VGG ,超越了 GoogleNet,但模型大小的计算代价都小了很多。

获取更多精彩,请关注「seniusen」!

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications的更多相关文章

  1. [论文阅读] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications (MobileNet)

    论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 本文提出的模型叫Mobi ...

  2. 论文笔记——MobileNets(Efficient Convolutional Neural Networks for Mobile Vision Applications)

    论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications MobileNet由Go ...

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

    MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文链接:https://arxi ...

  4. [论文理解] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications Intro MobileNet 我 ...

  5. 深度学习论文翻译解析(十七):MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    论文标题:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文作者:Andrew ...

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

    目录 0. Paper link 1. Overview 2. Depthwise Separable Convolution 2.1 architecture 2.2 computational c ...

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

    目录 1. 故事 2. MobileNet 2.1 深度可分离卷积 2.2 网络结构 2.3 引入两个超参数 3. 实验 本文提出了一种轻量级结构MobileNets.其基础是深度可分离卷积操作. M ...

  8. 【MobileNet-V1】-2017-CVPR-MobileNets Efficient Convolutional Neural Networks for Mobile Vision Applications-论文阅读

    2017-CVPR-MobileNets Efficient Convolutional Neural Networks for Mobile Vision Applications Andrew H ...

  9. 深度学习论文翻译解析(六):MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Appliications

    论文标题:MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Appliications 论文作者:Andrew ...

随机推荐

  1. Spring IOC的简单实现

    简单的说,Spring就是通过工厂+反射将我们的bean放到它的容器中的,当我们想用某个bean的时候,只需要调用getBean("beanID")方法即可. 原理简单说明: Sp ...

  2. ORACLE (BLOB、CLOB、NCLOB、BFILE)

    LOB类型 内置的LOB数据类型包括BLOB.CLOB.NCLOB.BFILE(外部存储)的大型化和非结构化数据,如文本.图像.视屏.空间数据存储.BLOB.CLOB.NCLOB类型 4.1 CLOB ...

  3. 利用selenium 爬取豆瓣 武林外传数据并且完成 数据可视化 情绪分析

    全文的步骤可以大概分为几步: 一:数据获取,利用selenium+多进程(linux上selenium 多进程可能会有问题)+kafka写数据(linux首选必选耦合)windows直接采用的是写my ...

  4. shell判断文件,目录是否存在或者具有权限

    shell判断文件,目录是否存在或者具有权限  #!/bin/sh  myPath="/var/log/httpd/"  myFile="/var /log/httpd/ ...

  5. Coinbase 雇员被 Firefox 0day 漏洞攻击

    Firefox 刚刚修复的 0day 漏洞被用于攻击 Coinbase 雇员.Coinbase 安全团队的 Philip Martin 称,攻击者组合利用了两个 0day 漏洞,其一是远程代码执行漏洞 ...

  6. MVC 事物

    前一阵学习mvc但是对于关联表的数据操作总是分裂开来写,这样有很大的侥幸,比如嵌套了3个 if(){ if(){ if(){ } } } 如果前两个都是true那么最后一个是false了,这样是不想看 ...

  7. 02bag模板

    cost->体积          weight->价值 hdu2844 可达/不可达 #include <stdio.h> #include <algorithm> ...

  8. CentOS下nagios报警飞信部署四步走

    CentOS下nagios报警飞信部署四步走   今天 帮群里一兄弟配了下nagios上的飞信,这个东西 我个人感觉还是很实用的,不过好久没配了,今天配置了一遍,顺便 就把过程记录下来了,供大家学习! ...

  9. java文件断点续传上传下载解决方案

    这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...

  10. BZOJ 3551: [ONTAK2010]Peaks加强版 Kruskal重构树+dfs序+主席树+倍增

    建出来 $Kruskal$ 重构树. 将询问点向上跳到深度最小,且合法的节点上. 那么,得益于重构树优美的性质,这个最终跳到的点为根的所有子节点都可以与询问点互达. 对于子树中求点权第 $k$ 大的问 ...