1. 摘要

基于网络架构搜索和 NetAdapt 算法,作者提出了新一代的 MobileNets,并通过一些先进的结构对其进行了改进。

作者发布了两个模型 MobileNetV3-Large 和 MobileNetV3-Small 分别应用于资源较多和较少的场景,这些模型也可以被调整并应用到目标检测和语义分割等其它领域。

2. 高效的网络构建块

MobileNetV1 引入了深度可分离卷积作为传统卷积的有效替代,MobileNetV2 引入了线性瓶颈和反转残差结构来构建更加高效的网络层,MnasNet 在 MobileNetV2 的基础上基于 SENet 的思想在瓶颈结构中引入了轻量级的注意力机制。

MobileNetV3 结合了上面这些结构块来构建最高效的模型,除此之外,作者还对 swish 作了改进来作为网络中的激活函数。

作者将注意力模块放在了扩展层的深度卷积后面,此外每一层的非线性激活函数也不一定相同。

3. 网络搜索

网络搜索技术已经是一个用来发现和优化网络架构的强有力工具。针对 MobileNetV3,作者先利用 NAS 优化每个网络块来搜索全局的网络架构,然后再利用 NetAdapt 算法来按顺序微调每一个单独的层。

4. 网络改进

4.1. 重新设计代价比较大的层

通过网络搜索得到模型后,作者观察到网络中一些前面和后面的层比其余的层计算代价更高,因此,作者提出了一些改进来在减少时延的同时保持准确率。

当前基于 MobileNetV2 的变种网络都在最后用一个 1×1 的卷积来扩展到一个高维空间(比如通道数为 1280)用于预测最后的分类。这个操作一般是在池化之前,比如是应用到一个空间大小为 7×7 的特征图上,现在作者将这个 1×1 的卷积放到了池化层后面,这样特征图的空间大小就变成了 1×1,可以大大减少计算量和时延。

一旦这个层被迁移到池化层后面,那么其前面一个瓶颈结构的投影层也就没有必要再存在来降低计算量了,所以作者移除了前面的特征提取层和投影层,来进一步降低计算复杂性。

可以看到,原始最后阶段的 960-960 深度卷积特征提取层和 960-320 的投影层被移除了。

另一个计算代价比较高的层是一开始的卷积层,现在的移动端网络一般都采用 3×3 的卷积,卷积核个数为 32。作者发现这个层采用 hard swish 激活函数和其它激活函数效果一样好,并将卷积核个数减少到了 16 个。

4.2. 非线性激活函数

最近提出了一个称之为 swish 的激活函数用来作为 ReLU 的替代品,其可以显著提高网络的准确性。

\[swish \space x = x \cdot \sigma(x)\]

虽然这个激活函数可以提高准确率,但在移动设备上 sigmoid 函数计算代价是很高的,所以作者对它进行了两个方面的改进。

  • 用分段线性的函数来硬模拟 sigmoid;
    \[hard-swish[x]=x\frac{ReLU6(x+3)}{6}\]

这样做在实际中有三个好处:ReLU6在几乎所有的软件和硬件上都可以实现;在量化模式下,可以消除 sigmoid 带来的潜在数值精度损失;hard-swish 可以用分段线性函数来实现减少导致时延的内存访问次数。

  • 将 swish 应用在较深的网络层就可以带来大部分好处,因此作者只在网络的后半段应用它们;

4.3 大的 squeeze-and-excite 层

这里 SE 层的中间通道数作者设置为扩展层通道数的四分之一,这样做可以在适当增加参数量的情况下提升准确率,对时延没有明确影响。

4.4 网络结构

exp size 表示扩展层的通道数,#out 表示输出通道数,SE 表示是否有 squeeze-and-excite 层,NL 代表激活函数为 ReLU 或者 Hard-Swish,s 表示步长。上面是 MobileNetV3-Large 的结构,下面是 MobileNetV3-Small 的结构。

5. 实验结果

在 Pixel 系列手机上性能对比如下所示:

同样地,我们也可以用宽度乘子和分辨率乘子进一步调整网络大小:

采用不同的激活函数结果对比如下:

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

Searching for MobileNetV3的更多相关文章

  1. 深度学习论文翻译解析(十九):Searching for MobileNetV3

    论文标题:Searching for MobileNetV3 论文作者:Andrew Howard, Mark Sandler, Grace Chu, Liang-Chieh Chen, Bo Che ...

  2. (转载) AutoML 与轻量模型大列表

    作者:guan-yuan 项目地址:awesome-AutoML-and-Lightweight-Models 博客地址:http://www.lib4dev.in/info/guan-yuan/aw ...

  3. (转)AutoML 与轻量模型大列表: awesome-AutoML-and-Lightweight-Models

    Awesome-AutoML-and-Lightweight-Models 原文:http://bbs.cvmart.net/articles/414/zi-yuan-automl-yu-qing-l ...

  4. 神经网络模型(Backbone)

    自己搭建神经网络时,一般都采用已有的网络模型,在其基础上进行修改.从2012年的AlexNet出现,如今已经出现许多优秀的网络模型,如下图所示. 主要有三个发展方向: Deeper:网络层数更深,代表 ...

  5. 自动网络搜索(NAS)在语义分割上的应用(二)

    前言: 本文将介绍如何基于ProxylessNAS搜索semantic segmentation模型,最终搜索得到的模型结构可在CPU上达到36 fps的测试结果,展示自动网络搜索(NAS)在语义分割 ...

  6. MobileNetV1/V2/V3简述 | 轻量级网络

    MobileNet系列很重要的轻量级网络家族,出自谷歌,MobileNetV1使用深度可分离卷积来构建轻量级网络,MobileNetV2提出创新的inverted residual with line ...

  7. CNN结构演变总结(二)轻量化模型

    CNN结构演变总结(一)经典模型 导言: 上一篇介绍了经典模型中的结构演变,介绍了设计原理,作用,效果等.在本文,将对轻量化模型进行总结分析. 轻量化模型主要围绕减少计算量,减少参数,降低实际运行时间 ...

  8. 卷积神经网络学习笔记——轻量化网络MobileNet系列(V1,V2,V3)

    完整代码及其数据,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote 这里结合网络的资料和Mo ...

  9. Codeforces Round #236 (Div. 2) C. Searching for Graph(水构造)

    题目大意 我们说一个无向图是 p-interesting 当且仅当这个无向图满足如下条件: 1. 该图恰有 2 * n + p 条边 2. 该图没有自环和重边 3. 该图的任意一个包含 k 个节点的子 ...

随机推荐

  1. Python多线程异步任务队列

    原文地址 python的多线程异步常用到queue和threading模块 #!/usr/bin/env python # -*- coding: UTF-8 -*- import logging i ...

  2. monkey 进阶使用手册,monkey随机测试后怎么定位问题

    首先我们知道使用monkey后,我们可以查看三种类型的日志,一种是安卓内核日志,一种是安卓系统自己的日志,还有一种是monkey日志. 当我们使用monkey进行随机测试时,如何才知道我们这次随机测试 ...

  3. HashMap原理探究

    一.写随笔的原因:HashMap我们在平时都会用,一般面试题也都会问,借此篇文章分析下HashMap(基于JDK1.8)的源码. 二.具体的内容: 1.简介: HashMap在基于数组+链表来实现的, ...

  4. deep_learning_Function_tf.control_dependencies([])

    tf.control_dependencies([])函数含义及使用 2019.02.23 14:01:14字数 60阅读 420 tf.control_dependencies([controls_ ...

  5. 13 Zabbix4.4.1系统告警“More than 75% used in the configuration cache”

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 13 Zabbix4.4.1系统告警“More than 75% used in the conf ...

  6. ceph问题汇总

    1. [ceph_deploy][ERROR ]RuntimeError: Failed to execute command: yum -y install epel-release 解决方案 进入 ...

  7. 〇一——body内标签之交互输入标签一

    今天来搞一下body内的input标签 在一般的网页中,我们经常会遇到一些交互界面,比如注册.登录.评论等环境.在这些交互界面里最常使用的就是input标签. 一.input标签基本使用 input标 ...

  8. mysql5.7.26 基于GTID的主从复制环境搭建

    简单工作原理: (1)从库执行 change master to 语句,会立即将主库信息记录到master.info中 (2)从库执行 start slave语句,会立即生成IO_T和SQL_T (3 ...

  9. 【VUE】Vue 源码解析

    Vue 源码解析 Vue 的工作机制 在 new vue() 之后,Vue 会调用进行初始化,会初始化生命周期.事件.props.methods.data.computed和watch等.其中最重要的 ...

  10. GitLab项目管理实践

    群组 / 项目 群组和项目的关系我们可以简单的理解成文件夹和文件的关系.一个群组可以包含一个或多个项目. 使用群组,可以将相关的项目组合在一起,并允许成员同时访问多个项目. 群组也可以嵌套在子组中,建 ...