• MobileNetV2: Inverted Residuals and Linear Bottlenecks--M Sandler


    MobileNetV2是在MobileNetV1的基础上修改的,MobileNetV1可以看看:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    MobileNetV2使用了深度可分离卷积+先升维+倒残差+低维不使用ReLU构建了比V1效果更好更轻量的网络,在分类、目标检测、语义分割等的实验验证MobileNetV2的强劲性能。

    0、摘要

    本文描述了一种新的用于移动和嵌入式设备的架构MobileNetV2,该架构提高了多个任务和基准数据集上以及不同模型尺寸内的最佳性能。

    MobileNetV2基于倒置的残差结构,残差链接位于窄的瓶颈之间。中间层使用深度可分离卷积进行滤波(提取)特征。此外作者发现去除窄层的非线性对于保持表征能力非常重要

    然后在ImageNet分类、COCO对象检测、VOC图像分割上进行了性能测试。我们评估了精度和通过乘法加法(MAdd)度量的操作数量,以及实际延迟和参数数量之间的权衡。

    1、引言

    本文介绍一种专为移动和资源受限环境量身定制的网络架构。MobileNetV2显著减少操作数和内存数,同时保持相同的精度。

    主要贡献是一个新颖的模块:具有线性瓶颈的倒残差模块。该模块将低维压缩的表征先扩展到高维并用深度可分离卷积进行滤波,然后用线性卷积将表征投影回低维(直观将就是通道先升维再降维的过程)。

    2、相关工作

    3、预置知识、讨论和intuition(直觉?)

    我们用dw和pw表示深度可分离卷积的两个步骤,则深度可分离卷积表示为:
    –dw–pw–
    首先总结下MobileNetV2的创新点:

    • 因为dw本身不具有改变通道的能力,但是在多通道上dw卷积效果更好,所以在dw之前使用pw升维,就构成–pw–dw–pw的结构,前一个pw升维,后一个pw降维,从而让中间的dw在高维卷积却又保持了输入输出的维度不变
    • 使用了残差结构,也就是将前pw之前和后pw之后短接,形成残差结构。当然原残差是中间维度更低,而本文中间维度更高,所以本文的叫倒残差结构
    • ReLU只在高维的dw后使用,后pw是低维输出,不使用ReLU(文中说低维使用ReLU会破坏信息)

    总结起来就是:深度可分离卷积+先升维+倒残差+低维不使用ReLU
    在这里插入图片描述

    3.1 深度可分离卷积

    这个卷积就是MobileNetV1的基础,如果你懂了深度可分离卷积那你就懂了MobileNetV1,详细的介绍看:深度可分离卷积(DepthwiseSeparableConvolution):Depthwise卷积与Pointwise卷积

    3.2 Linear Bottlenecks(低维不使用ReLU)

    首先起因是【CV论文笔记】MobileNetV2: Inverted Residuals and Linear Bottlenecks(MobileNetV2理解)中说

    全文也进行了理论分析,我看着太复杂了,总结起来就是这句话:“另一方面,当ReLU破坏通道时,它不可避免地会丢失该通道的信息。但是,如果我们有很多通道,并且激活流形中有一个结构,信息可能仍然保留在其它通道中。在补充材料中,我们说明,如果输入流形可以嵌入到激活空间的显著较低维子空间中,则ReLU变换将保留该信息,同时将所需的复杂性引入到可表达的函数集中”,也就是低维信息经过ReLU会破环一些信息,但是高维信息经过ReLU后则任然可能被保留。

    所以在结构上最后一个1x1卷积(后pw)是没有ReLU的

    在这里插入图片描述

    下图是第6.4节的实验,可以看出在低维(后pw输出)使用ReLU效果确实要差一点。
    在这里插入图片描述

    3.3 倒残差结构(先升维+倒残差)

    作者使用残差连接动机是想要提高梯度在乘法层之间传播的能力,但是稍作改变得到了倒残差结构

    图3b就是本文呢的倒残差结构,可以看到Residual block是先降温后升温,倒残差是先升维再降维,这就保证了depthwise在高维进行,从而表征更加充分。
    在这里插入图片描述
    基本实现结构如表1所示,扩展因子t也就是升维倍数
    在这里插入图片描述

    4、模型结构

    模型结构如表2所示:

    • conv2d就是普通卷积
    • bottleneck就是表1所示的结构
    • t是扩展因子,即升维倍数
    • c是输出通道
    • n是重复次数,比如重复4次,那么这4个相同操作的输出通道都是64
    • s是stride,当然只在同操作的第一次(因为会有重复n)使用(肯定是中间的3x3卷积,1x1卷积stride肯定=1),其他都是stride=1
      在这里插入图片描述

    5、实现说明

    一些包括内存使用的理论分析

    6、实验

    包括了分类、目标检测、语音分割等实验,这里只展示分类的效果

    6.1 ImageNet分类

    可以看到V2确实比V1要好很多,()的含义看图5
    在这里插入图片描述

    在这里插入图片描述

    6.2 消融实验

    图a:严格来说,线性瓶颈模型不如非线性模型强大,因为激活总是可以在线性范围内运行,并对偏差和缩放进行适当的改变。然而,我们在图6a中所示的实验表明,线性瓶颈可以提高性能,这为非线性破坏低维空间中的信息提供了支持。

    图b:快捷连接瓶颈的性能比连接扩展层的快捷方式更好
    在这里插入图片描述

    7、总结

    好!

  • 相关阅读:
    计算机组成原理笔记(王道考研) 第二章:数据的表示和运算2
    【运维日常】infiniband网络架构,容器间跨机器不同网段通信
    C++ STL简介
    谣言检测——《社会网络谣言检测综述》
    证券行业超融合架构方案设计
    【JavaEE】多线程(四)
    Go 复合类型之切片类型介绍
    JS赋值运算符详解
    scrapy的selenium跑不起来
    77-Java的Set系列集合、Collection体系的总结
  • 原文地址:https://blog.csdn.net/qq_40243750/article/details/126651115