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

  • Andrew Howard、Hartwig Adam(Google)
  • GitHub: 1.4k stars
  • Citation:4203

Introduction

本文介绍了一种新的网络结构,MobileNet(V1),网络结构上与VGG类似,都属于流线型架构,但使用了新的卷积层——深度可分离卷积(depthwise separable convonlution)替换了原始的全卷积层,使得网络参数和计算量都大大减小,在0.12倍的计算量和0.14倍的参数量的情况下,精度仅下降1%,引入两个超参数(宽度乘数、分辨率乘数),可以方便的构建更小的MobileNet,在模型大小和精度之间平衡。属于网络压缩中的轻量化网络设计的方法。

Motivation

随着深度学习的流行,卷积网络的计算开销越来越大,因此人们开始寻找减少网络参数/计算量的方法,设计更高效的模型。

Contribution

轻量化网络(较小的计算开销和存储开销)主流的方法有两种

  1. 减少模型参数,既可以减少模型计算开销,也可减少模型存储开销
  2. 量化模型参数,可以减少存储开销

MobileNet使用深度可分离卷积来替代传统的全卷积,有效的地降低了模型参数量和计算量。

Method

深度可分离卷积(depthwise separable convolution)

深度可分离卷积是MobileNet的核心。深度可分离卷积是因子卷积(将大卷积分解为小的卷积?)的一种,将标准的全卷积分解为通道深度卷积(depthwise convolution)+1x1逐点卷积(pointwise convolution);其中深度卷积是将同一个filter应用到所有的input channels上,点卷积是将1x1的卷积核,应用在深度卷积的output channels上。传统的conv是将滤波乘法(feature map元素乘法)和通道合并(将多个channels map整合成一个channels)两个步骤在一步完成;而深度可分离卷积是将两个步骤分开,一层用于滤波乘法,一层用于通道合并。

标准卷积

通道卷积

逐点卷积

计算开销对比

标准卷积的计算开销: \(D_{K} \cdot D_{K} \cdot M \cdot N \cdot D_{F} \cdot D_{F}\)

深度可分离卷积的计算开销: \(D_{K} \cdot D_{K} \cdot M \cdot D_{F} \cdot D_{F}+M \cdot N \cdot D_{F} \cdot D_{F}\)

&&计算开销的计算:参数数量×一个feature map的大小

计算开销对比: $\frac{D_{K} \cdot D_{K} \cdot M \cdot D_{F} \cdot D_{F}+M \cdot N \cdot D_{F} \cdot D_{F}}{D_{K} \cdot D_{K} \cdot M \cdot N \cdot D_{F} \cdot D_{F}} = \frac{1}{N}+\frac{1}{D_{K}^{2}} $

网络结构

MobileNet的除了第一个卷积层是标准卷积,其余的卷积层都是深度可分离卷积。

表1为MobileNet的网络结构,将通道卷积层和点卷积层看做单独的层,则MobileNet共有28层(1全卷积 + 2 × 13深度可分离卷积 + 1全连接 = 28)。

&&有参数的层才算入?

图3对比了标准卷积层和可分离卷积层(通道卷积层+逐点卷积层),每个卷积层后都跟着BN层和ReLU层。

表2为MobileNet中不同类型的层的计算量和参数量对比:

宽度乘数 \(\alpha\)(Width Multiplier)

为了构建更小的MobileNet,引入第一个超参数——Width Multiplier α,在α的作用下,网络的计算代价变为: \(D_{K} \cdot D_{K} \cdot \alpha M \cdot D_{F} \cdot D_{F}+\alpha M \cdot \alpha N \cdot D_{F} \cdot D_{F}\)

α的取值范围(0,1],取1时就是baseline MobileNet

应用宽度乘数可以将计算开销和存储开销变为为原来的 \(\alpha^2\) 倍

分辨率乘数 \(\rho\)(Resolution Multiplier)

分辨率乘数可以减小输入图片的分辨率,一般通过设置输入图片的分辨率来隐式地设置 \(\rho\)

同时应用宽度乘数和分辨率乘数,计算代价变为:

\(D_{K} \cdot D_{K} \cdot \alpha M \cdot \rho D_{F} \cdot \rho D_{F}+\alpha M \cdot \alpha N \cdot \rho D_{F} \cdot \rho D_{F}\)

其中,ρ∈(0, 1],通常隐式设置网络的输入分辨率为224、192、160或128。

应用宽度乘数可以将计算开销和存储开销变为为原来的 \(\rho^2\) 倍。

表3对比了全卷积、深度可分离卷积、应用了α和ρ的深度可分离卷积的模型的计算量和参数量:

Experiments

全卷积的MobileNet VS MobileNet:

在相近的计算量下,瘦长的MobileNet胖矮的MobileNet 的精度对比,瘦长的MobileNet效果更好,说明层数更重要(所以是使用宽度层数α,改变模型宽度,而不是减少模型的层数):

应用了宽度乘数α的MobileNet效果对比:

应用了分辨率乘数ρ(输入分辨率不同)的MobileNet效果对比:

在ImageNet上与经典网络的对比:

在Stanford Dogs数据集上与经典网络的对比:

其他实验:

细粒度识别实验、大规模地理定位实验、Face Attributes实验、Object Detection实验、Face Embeddings实验

Conclusion

  • 提出了新的轻量模型MobileNet,核心是使用深度可分离卷积代替标准全卷积,大大减少计算量和参数量

  • 通过宽度乘数和分辨率乘数2个超参数很好的在baseline MobileNet的基础上构建更小的MobileNet模型

Summary

  • 想法很简单,效果很好!

  • 实验非常丰富!

Reference

【深度可分离卷积】https://zhuanlan.zhihu.com/p/92134485

【薰风读论文:MobileNet 详解深度可分离卷积,它真的又好又快吗?】https://zhuanlan.zhihu.com/p/80177088

【MobileNet-V1】-2017-CVPR-MobileNets Efficient Convolutional Neural Networks for Mobile Vision Applications-论文阅读的更多相关文章

  1. 【网络结构】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 ...

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

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

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

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

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

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

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

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

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

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

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

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

  8. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    1. 摘要 作者提出了一系列应用于移动和嵌入式视觉的称之为 MobileNets 的高效模型,这些模型采用深度可分离卷积来构建轻量级网络. 作者还引入了两个简单的全局超参数来有效地权衡时延和准确率,以 ...

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

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

随机推荐

  1. 内存迟迟下不去,可能你就差一个GC.Collect

    一:背景 1. 讲故事 我们有一家top级的淘品牌店铺,为了后续的加速计算,在程序启动的时候灌入她家的核心数据到内存中,灌入完成后内存高达100G,虽然云上的机器内存有256G,然被这么划掉一半看着还 ...

  2. CC2530通用IO口的输入输出

    一.引脚概述 CC2530有40 个引脚.其中,有21个数字I/O端口,其中P0和P1是8 位端口,P2仅有5位可以使用.P2端口的5个引脚中,有2个需要用作仿真,有2个需要用作晶振.所以可供我们使用 ...

  3. SpringCloudStream学习(三)RabbitMQ中的惰性队列

    ​ 从RabbitMQ 3.6.0之后,有了 Lazy Queues 的概念-一个会尽早的将队列中的内容移动到磁盘的队列,并且只有当消费者需要的时候,才会将它们加载到内存中 ​ 惰性队列设计的一个主要 ...

  4. 【Hadoop离线基础总结】Mac版VMware Fusion虚拟机磁盘挂载

    步骤概览 1.打开所要挂载磁盘的虚拟机的设置(此时必须关机) 2.打开硬盘设置 3.添加设备 4.选择新硬盘 5.设置如下图 6.将虚拟机开机,输入 df-lh ,查看当前虚拟机磁盘 7.输入 fdi ...

  5. 常用中文分词工具分词&词性标注简单应用(jieba、pyhanlp、pkuseg、foolnltk、thulac、snownlp、nlpir)

    1.jieba分词&词性标注 import jieba import jieba.posseg as posseg txt1 =''' 文本一: 人民网华盛顿3月28日电(记者郑琪)据美国约翰 ...

  6. 多线程实践—Python多线程编程

    多线程实践 前面的一些文章和脚本都是只能做学习多线程的原理使用,实际上什么有用的事情也没有做.接下来进行多线程的实践,看一看在实际项目中是怎么使用多线程的. 图书排名示例 Bookrank.py: 该 ...

  7. 力扣题解-560. 和为K的子数组

    题目描述 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数. 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] ...

  8. docker 部署jenkins

    1.拉取镜像 docker pull jenkins/jenkins 2.运行jenkins镜像作为容器 运行命令如下: docker run -d -p 9086:8080 -p 50000:500 ...

  9. python机器学习(四)分类算法-决策树

      一.决策树的原理 决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法 . 二.决策树的现实案例 相亲   相亲决策树 ...

  10. JS函数和对象

    1.函数 isNaN(数据)/parseInt/parseFloat/Number/prompt... 函数分为系统函数和自定义函数 function: 功能体,函数(方法),可以接受若干个数据,返回 ...