论文深入分析了inverted residual block的设计理念和缺点,提出更适合轻量级网络的sandglass block,基于该结构搭建的MobileNext。根据论文的实验结果,MobileNext在参数量、计算量和准确率上都有更优的表现,唯一遗憾的是论文没有列出在设备上的实际用时,如果补充一下更好了

来源:晓飞的算法工程笔记 公众号

论文: Rethinking Bottleneck Structure for Efficient Mobile Network.pdf

Introduction

***

在介绍MobileNext前,先回顾一下bottleneck结构:

  • Residual block with bottleneck structure,包含两个\(1\times 1\)卷积层用于维度的降低和扩大,以及中间的\(3\times 3\)卷积用于提取特征,如图2a。这个结构不适用于轻量级网络,因为中间的\(3\times 3\)卷积的参数量和计算量都非常大。
  • Depthwise separable convolutions,为了解决标准卷积带来的参数量和计算量问题,将其分解为depthwise卷积和pointwise卷积,前者用于提取单维度的特征,后者用于线性组合多维度特征,大幅降低了计算量和参数量。
  • Inverted residual block,专为移动设备设计,为了节省计算量,输入改为低维度特征,先通过pointwise卷积扩大维度,然后通过depthwise卷积提取特征,最后通过pointwise卷积降低维度输出,如图2b。这里有两点不影响准确率的性能改进:1)skip path仅建立在低维度bottleneck间。2)最后一个pointwise卷积不需要非线性激活。

尽管Inverted residual block性能不错,但中间需要将特征先降到较低的维度,会导致以下几个问题:

  • 降低维度可能不足以保留足够的有用信息。
  • 近期有研究发现更宽的网络结构有助于缓解梯度混淆(不同batch产生的梯度抵消),能够提升网络性能。
  • shortcut建立在bottleneck之间,由于bottleneck维度较少,也可能会阻碍梯度的回传。

为了解决上述问题,论文提出了设计更优的sandglass block,结构如图3c,基于此搭建了MobileNeXt,在性能和计算量上都优于MobileNetV2。

论文的主要贡献如下:

  • 重新思考移动网络的bottleneck结构,发现inverted residual并不是最优的bottleneck结构。
  • 研究发现,shortcut应该建立在高维度特征上,depthwise卷积应该应用在高维度特征空间上学习更多样特征,linear residual是bottleneck结构的关键。
  • 基于上述发现提出sandglass block,更适合移动网络的搭建。

Method

***

Sandglass Block

Sandglass Block的设计核心主要基于以下两个想法,也是与其他轻量级结构的主要区别:

  1. 为了更好地保留信息的传递和梯度的回传,shortcut应当建立在高维度特征之间。
  2. 卷积核较小的depthwise卷积是轻量的,可用于对高维度特征进行进一步的特征提取。
  • Rethinking the positions of expansion and reduction layers inverted residual block先进行维度扩展,最后再进行缩减,根据设计核心将两个pointwise卷积的顺序互换。定义sandglass block的输入和输出为\(F\in \mathbb{R}^{D\_f\times D\_f\times M}\)和\(G\in \mathbb{R}^{D\_f\times D\_f\times M}\),则维度变化可表示为:

\(\phi\_e\)和\(\phi\_r\)为用于维度扩展和缩减的pointwise卷积。这样的设计将bottleneck保持在residual path中间能够减少参数量和计算量,最重要的是,能将shortcut建立在维度较大的特征上。

  • High-dimensional shortcuts shortcut不再连接低维度的bottleneck,而是连接维度较高的\(F\)和\(G\)。能够更好地传递信息和回传梯度。
  • Learning expressive spatial features

pointwise卷积只能捕捉通道间特征,缺乏空间特征的捕捉能力。可以像inverted residual block那样中间使用depthwise卷积来显示地提取空间特征,如图3a所示。但由于sandglass block中间是bottleneck,中间添加的depthwise卷积的卷积核数量很少,只能捕捉少量空间信息。通过实验也发现,这样设计的准确率会比MobileNetV2下降1%。

因此,sandglass block将depthwise卷积置于residual path的开头和结尾,如图3b所示,可表示为:

\(\phi_{i,p}\)和\(\phi_{i,d}\)代表\(i\)个pointwise卷积和depthwise卷积。对比inverted residual block,由于现在depthwise卷积的输入为高维度特征,可以提取更丰富的空间信息。

  • Activation layers 有研究发现,使用线性bottleneck能够防止特征值变为零,减少信息丢失。根据这一建议以及实验结果,sandglass block仅在第一个depthwise卷积后面和第二个pointwise卷积后面添加激活层,其余的均不添加。
  • Block structure

sandglass block的结构如表1所示,当输入和输出维度不一样时,不添加shortcut,depthwise卷积采用\(3\times 3\)卷积核,在需要的地方采用BN+ReLU6的组合。

MobileNeXt Architecture

基于sandglass block,构建了如表2所示的MobileNeXt,开头是32维输出的卷积,后续是sandglass block的堆叠,最后是全局平均池化,将二维的特征图压缩为一维,最后再由全连接层输出每个类别的分数。

  • Identity tensor multiplier 尽管shortcut连接有助于梯度的回传,但论文通过实验发现,其实不需要保持完整的特征去跟residual path结合。为了让网络对移动设备更友好,论文提出超参数identity tensor multiplier \(\alpha\in0,1\),用于控制shortcut传递的特征维度。undefined 定义\(\phi\)为residual path的转换函数,原来的residual block计算可表示为\(G=\phi(F)+F\),加上超参数后,residual block变为:

下标代表通道,使用较小的\(\alpha\)有两个好处:

  • 耗时的element-wise addition的计算将会减少。
  • 耗时的内存访问(MAC)将减少,另外由于需要缓存的tensor变小了,有助于将其缓存在高速内存中,可以进一步加速。

Experiment

***

与MobileNetV2在ImageNet上进行对比。

与其他网络在ImageNet上进行对比。

不同identity tensor multiplier的对比。

作为检测网络的主干网络的对比。

Conclustion

***

论文深入分析了inverted residual block的设计理念和缺点,提出更适合轻量级网络的sandglass block,基于该结构搭建的MobileNext。sandglass block由两个depthwise卷积和两个pointwise卷积组成,部分卷积不需激活以及shorcut建立在高维度特征上。根据论文的实验结果,MobileNext在参数量、计算量和准确率上都有更优的表现,唯一遗憾的是论文没有列出在设备上的实际用时,如果补充一下更好了。

如果本文对你有帮助,麻烦点个赞或在看呗~undefined更多内容请关注 微信公众号【晓飞的算法工程笔记】

MobileNext:打破常规,依图逆向改造inverted residual block | ECCV 2020的更多相关文章

  1. Neural Network模型复杂度之Residual Block - Python实现

    背景介绍 Neural Network之模型复杂度主要取决于优化参数个数与参数变化范围. 优化参数个数可手动调节, 参数变化范围可通过正则化技术加以限制. 本文从优化参数个数出发, 以Residual ...

  2. 图书管理系统(Java实现,十个数据表,含源码、ER图,超详细报告解释,2020.7.11更新)

    图书管理系统数据库设计实验报告 文章目录 更新日志 1.概述 2.需求分析 2.1需要实现的功能 2.2业务流程图 2.2.1学生流程图 2.2.2管理员流程图 2.2.3超级管理员流程图 2.3功能 ...

  3. [论文阅读]MobileNetV2: Inverted Residuals and Linear Bottlenecks

    0.      本文贡献点 本文的主要贡献点是一个构造了一个结构,称为the inverted residual with linear bottleneck.该结构与传统的residual bloc ...

  4. 论文-MobileNetV2: Inverted Residuals and Linear Bottlenecks

    1.主要创新 1)提出了一种新的layer module:the inverted residual with linear bottleneck, 2)short connect被置于bottlen ...

  5. TensorFlow从1到2(九)迁移学习

    迁移学习基本概念 迁移学习是这两年比较火的一个话题,主要原因是在当前的机器学习中,样本数据的获取是成本最高的一块.而迁移学习可以有效的把原有的学习经验(对于模型就是模型本身及其训练好的权重值)带入到新 ...

  6. (原)MobileNetV2

    转载请注明出处: https://www.cnblogs.com/darkknightzh/p/9410574.html 论文: MobileNetV2: Inverted Residuals and ...

  7. MovibleNet

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

  8. 【小白学PyTorch】13 EfficientNet详解及PyTorch实现

    参考目录: 目录 1 EfficientNet 1.1 概述 1.2 把扩展问题用数学来描述 1.3 实验内容 1.4 compound scaling method 1.5 EfficientNet ...

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

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

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

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

随机推荐

  1. 如何避免FOUC

    如何避免FOUC FOUC即无样式内容闪烁也可以称为文档样式短暂失效,主要就是指HTML已加载而样式表并未加载,此后样式表再加载而产生的闪烁现象. 样式表前置 根据浏览器渲染的顺序,将CSS在< ...

  2. golang指针和结构体

    指针 指针操作 指针包括指针地址.指针类型和指针取值 &: &符号放在变量前面进行取地址操作 **:*放在变量前面根据地址进行取值 指针地址: func main() { var a ...

  3. Kafka集群搭建与SpringBoot项目集成

    本篇文章的目的是帮助Kafka初学者快速搭建一个Kafka集群,以及怎么在SpringBoot项目中使用Kafka. kafka集群环境包地址:https://pan.baidu.com/s/1Mar ...

  4. win32 - 监控DNS是否发生改变

    两种方法: 第一种是使用WMI进行后台轮询 第二种是查询注册表对应的DNS键值 Here: HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameter ...

  5. Taurus.MVC WebMVC 入门开发教程1:框架下载环境配置与运行

    前言: 之前有网友说 Mvc系列的教程对新手不友好,因此补充新手入门系列教程. 在开始使用 Taurus.Mvc 进行 Web应用开发之前,建议可以观摩一下之前的文章:WebAPI 系列教程 因为两者 ...

  6. 用Taro写一个微信小程序——渲染 HTML

    在taro小程序里面渲染一段html代码,具体可查看文档https://docs.taro.zone/docs/html 一.渲染 HTML 文档推荐使用 dangerouslySetInnerHTM ...

  7. 【华为机试ACM基础#02】从单向链表中删除指定值的节点、输出单向链表中倒数第k个节点(熟悉链表的输入方式)

    从单向链表中删除指定值的节点 输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针. 链表的值不能重复. 构造过程,例如输入一行数据为: 6 2 1 2 ...

  8. macOS搭建SonarQube

    目录 前言 准备环境 下载安装包 解压路径:/usr/local 创建数据库 修改配置文件 配置环境变量 启动SonarQube 扫描项目 项目报告介绍 总结 前言 初到新公司,接手8-10个java ...

  9. 【Azure 应用服务】使用Docker Compose创建App Service遇见"Linux Version is too long. It cannot be more than 4000 characters"错误

    问题描述 使用Docker Compose方式合并多个镜像(Images)文件,然后部署到App Service中,结果失败.报错 Linux Version 太长,不能超过4000个字符. 错误消息 ...

  10. Nebula Graph 源码解读系列 | Vol.00 序言

    本文首发于 Nebula Graph Community 公众号 Nebula Graph 是由杭州欧若数网科技有限公司(官网:https://www.vesoft.com/cn/)开源的一款分布式图 ...