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


     0.      本文贡献点

      本文的主要贡献点是一个构造了一个结构,称为the inverted residual with linear bottleneck。该结构与传统的residual block中维度先缩减后扩增相反,而是先将输入的低维feature map扩增到高维,然后用depthwise convolution方式做卷积运算,然后再使用一个线性的卷积将其映射到低维空间中。

      Depthwise Separable Convolutions原理可以参考这篇文章

     1.      Inverted residual block简单介绍

     

      如上图,左边(a)图的传统的residual block,先用1x1卷积将输入的feature map的维度降低,然后进行3x3的卷积操作,最后再用1x1的卷积将维度变大。右边(b)图即为本文提出的结构,先用1x1卷积将输入的feature map维度变大,然后用3x3 depthwise convolution方式做卷积运算,最后使用1x1的卷积运算将其维度缩小。注意,此时的1x1卷积运算后,不再使用ReLU激活函数,而是使用线性激活函数,以保留更多特征信息,保证模型的表达能力。

             该block具体结构如下:

     

      当stride=1时,block内会有short cut;而当stride=2时,block没有short cut。

    2.      MobileV2V1的区别

      下图是MobileNetV2与MobileNetV1的区别(原图链接):

     

    主要区别有两点:

    (1)Depth-wise convolution之前多了一个1*1的“扩张”层,目的是为了提升通道数,获得更多特征;

    (2)最后不采用Relu,而是Linear,目的是防止Relu破坏特征。

    MobileNetV2相关资料:

    1. MobileNet V2 论文初读
    2. [论文笔记](MobileNet V2)Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification, Detection and Segmentation
    3. 知乎关于MobileNetV2的讨论

    附:

    下面段落摘自第二篇文章。

     

    1.       Intuition

     

      如上图所示,利用MxN的矩阵B将输入张量(2维,即N=2)变换到M维的空间中,通过ReLU后(y=ReLU(Bx)),再用此矩阵逆恢复原来的张量(即从M维空间变换回2维空间)。可以看到,当M较小时,恢复后的张量坍缩严重,M较大时则恢复较好。

      这意味着,在较低维度的张量表示上进行ReLU等线性变换会有很大的信息损耗。因而本文提出使用线性变换替代Bottleneck的激活层,而在需要激活的卷积层中,使用较大的M使张量在进行激活前先扩张,整个单元的输入输出是低维张量,而中间的层则用较高维的张量。

    2.      MobileNetV2网络

      MobileNetV2网络结构如下:

     

      网络的性能如下:

     

  • 相关阅读:
    java语言基础001
    Linux 使用硬盘
    Linux 系统运行命令 > 查看系统信息
    Linux rm 命令
    Linux 操作系统目录结构
    JavaScript || 事件基础
    My SQL随记 003 数据表基础操作语法
    My SQL随记 002 登陆
    My SQL随记 001 常用名词/结构化语言
    linux命令学习
  • 原文地址:https://www.cnblogs.com/hejunlin1992/p/9395345.html
Copyright © 2020-2023  润新知