欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

论文笔记:MobileNet v2

发布时间:2025/3/21 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 论文笔记:MobileNet v2 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

原论文:MobileNetV2: Inverted Residuals and Linear Bottlenecks

MobileNet v2

1、四个问题

  • 要解决什么问题?
    • 与MobileNet v1所要解决的问题一样,为嵌入式设备或算力有限的场景下设计一个有效的模型。
  • 用了什么方法解决?
    • 一方面,沿用了再MobileNet v1中采用的depthwise separable convolution。
    • 另一方面,新提出了inverted residual结构和linear bottleneck结构来改进模型。
  • 效果如何?
    • 作者在论文中给出了一系列任务下的实验结果:ImageNet图像分类、目标检测、语义分割等,MobileNet v2均取得了比MobileNet v1更好的效果。
    • 就目标检测来说,由MobileNet v2扩展构建的网络,其性能相比于其他架构如:Faster-RCNN、RFCN等还是逊色不少,但是考虑到模型的实时性和计算量,MobileNet v2在各项任务的表现相比于同一量级的模型是state-of-the-art的。
  • 还存在什么问题?
    • 社区对其的评价普遍都挺高,但也有一些人说自己复现(基于TensorFlow的)无法达到论文中的精度。网上也有挺多开源的复现代码(基于Pytorch),用的时候还是自己复现一下再下定论吧。
  • 2、论文概述

    2.1、Depthwise Separable Convolutions

    • 基本思想就是:讲一个普通的卷积操作拆分成两个卷积操作。第一层为depthwise卷积,分别对每个输入通道进行卷积;第二层是pointwise卷积,实质就是1×11 \times 11×1卷积,主要是用来将前面depthwise输出的特征组合起来构建新的特征。

    2.2、Linear Bottlenecks

    • 文中,经过激活层后的张量被称为manifold of interest(看到网上将其翻译为兴趣流形,总觉得有点不到位,所以后面都直接用英文代替)。
    • manifold of interest(经过ReLU后的张量)非0的情况下,ReLU只是一个线性变换。
    • ReLU只有在input manifold处于输入空间的子空间的情况下,才能保留input manifold的全部信息。
      • 换句话说,只要使用了ReLU,就不可避免地要损失该通道内的一部分信息。
      • 文中还给了一个示例,将input先映射到高维空间然后接一个ReLU后再还原回原来的维度。
      • 示意图如下,可以看出映射的维度越高,还原的效果越好,保留的原始信息越多。

    • 一句话概括:Linear Bottlenecks就是,去掉ReLU,减小对特征的破坏,尽可能保留输入的信息。
    • Linear Bottlenecks后面会与Inverted residuals组合起来使用。

    2.3、Inverted residuals

    • 网络结构基本单元的演变,如下图所示:
    • a就是普通的3×33 \times 33×3卷积。
    • b是Depthwise Separable Convolution操作,此前用于MobileNet v1.
    • c由b扩展而来,在b后面加了linear bottleneck(虚线框),bottleneck层没有加ReLU。
    • d与c很像,在堆叠网络时两者是等价的。

    • 普通的residual block与inverted residual block之间的对比:
      • 每个长方体的厚度象征着通道数。
      • a为传统的residual block。结构为:1×11 \times 11×1卷积(降维)+ReLU–>3×33 \times 33×3卷积+ReLU–>1×11 \times 11×1卷积(升维)+ReLU。
      • b为反转的residual block(inverted residual block)。结构为:1×11 \times 11×1卷积(升维)+ReLU–>3×33 \times 33×3depthwise separable卷积+ReLU–>1×11 \times 11×1卷积(降维)(注意,这里是不带ReLU的,即前面提到的linear bottleneck)。

    2.4、模型结构

    • Bottleneck residual block的结构(也就是inverted residual block),其为MobileNet v2的基本组成模块。

    • MobileNet v2的总体结构:

    • 几种网络的基本模块之间的对比:

    2.5、其他

    • 图a中可以看出,使用Linear bottleneck(不使用ReLU)比直接给输出接上ReLU6的效果好。
      • 我个人的理解
        • ReLU会使负值置0,所以使用ReLU一定会出现信息损失。
        • 一般情况下,普通卷积后接上ReLU应该是能取得更好地效果的,不然也不会这么多人这么用。
        • 然而,针对MobileNet这个网络,由于其使用了大量的Depthwise Separable卷积,在Depthwise卷积之后接上ReLU就更容易损失信息了,导致效果反倒下降了。
        • 为什么呢?因为Depthwise卷积是直接针对单通道的,也就是说它的输出是单通道的,而这种单通道的信息经过ReLU后更容易损失信息。前面在讨论Linear Bottleneck时,作者也提到了如果中间层的维度较低,再经过ReLU后(manifold of interest)则很容易损失信息,除非先升高到一个较高维度再降低回原来的维度,才能保留更多的信息。而普通卷积则会将各个输入通道的输出加权求和,这一点也类似于提升了维度,所以直接接上ReLU并不会损失太多信息。
    • 图b中可以看出,在bottleneck处添加shortcut会比在expanded layer处添加shortcut效果更好。

    总结

    以上是生活随笔为你收集整理的论文笔记:MobileNet v2的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。