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. VMware安装CentOS6.3

    这里测试的是 CentOS-6.3-x86_64-bin-DVD1 链接:点击进入提取码: zs32 如果这里CentOS下载太慢的话 点击进入下载

  2. LVS Director端服务启动脚本

    #!/bin/bash # 手动安装lpvs前端管理工具 # chkconfig: - # # lvs启动脚本:director # lvs模式类型:nat.dr.ipip # lvs代理协议:tcp ...

  3. lambda中FirstOrDefault和First

    First()表示取集合中的第一个元素,如果集合为空,则抛异常. FirstOrDefault()表示取集合的第一个元素. 如果集合为空,且集合元素是引用类型,则返回null. 如果集合为空,且集合元 ...

  4. RouterOS Firewall v6 流程图

    1. Firewall v5和Firewall v6对比图 2.Firewall v6的流程图

  5. HttpClient 释放连接

    Release the Connection:释放连接 This is a crucial step to keep things flowing. We must tell HttpClient t ...

  6. psutil:系统、进程,信息都在我的掌握之中

    获取cpu的逻辑数量 import psutil print(psutil.cpu_count()) # 12 获取CPU的物理核心数 import psutil print(psutil.cpu_c ...

  7. 11jsp

    1.JSP 1. 指令 作用:用于配置JSP页面,导入资源文件 格式:             <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %> 分类:        ...

  8. Oracle批量导出表数据到CSV文件

    需求:把oracle数据库中符合条件的n多表,导出成csv文本文件,并以表名.csv为文件名存放. 实现:通过存储过程中utl_file函数来实现.导出的csv文件放入提前创建好的directory中 ...

  9. Django学习系列18:使用迁移创建生产数据库

    Django生成一个很有帮助的错误信息,大意是说没有正确设置数据库. 你可能会有疑惑,为什么在单元测试一切都运行ok,这是因为Django为单元测试创建了专用的测试数据库——这是Django中Test ...

  10. 【CF208E】Blood Cousins

    题目大意:给定一个 N 个点的森林,M 个询问,每次询问对于点 u 来说,有多少个点和 u 有相同的 K 级祖先. 题解:线段树合并适合处理子树贡献的问题. 发现要回答这个询问在点 u 处计算很困难, ...