深度可分离卷积网络Xception 网络解析

Posted 笃℃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度可分离卷积网络Xception 网络解析相关的知识,希望对你有一定的参考价值。

【深度可分离卷积网络】Xception 网络解析

文章目录

1. 介绍

论文地址:Xception: Deep Learning with Depthwise Separable Convolutions

Xception 是 Google 在 2017 年出品的轻量级神经网络。

  • 它 与 GoogLeNet 中的 Inception 相似,可以认为是 Inception 的一种极端情况。
  • 同时,它与 MobileNet 的思想一致,即推动 Depthwise Conv + Pointwise Conv 的使用。
    MobileNet 系列解析
  • 另外,在 Xception 中,类似于 ResNet,一些 residual connects 被应用了进来。

经典的图卷积网络框架解析(LeNet、AlexNet、VGGNet、InceptionNet 、ResNet、DenseNet)

最终模型在ImageNet等数据集上都取得了相比Inception v3与Resnet-152更好的结果。而且模型大小与计算效率相对于Inception v3也取得了较大提高。

1.1 Xception 与 Inception 的联系

下面是一个典型的 Inception 模块。

我们知道,卷积层的功能是:同时学习跨通道相关性和空间相关性。而 Inception 的思想是尝试将这两个相关性的学习分割开来,即:

  • 先用 1x1 conv来着重学习各通道之间的关联,(通道之间)
  • 再用 3x3/5x5 conv (两个 3x3 conv 即为 5x5 conv)来学习其不同维度上的单个通道内在空间上的关联(也会学到部分各通道之间的关联)。(空间关系:图像的不同区域之间的联系)

考虑一个 Inception 模块的简化版本,只使用一种规格的卷积(例如 3×3 conv),并且不含平均池化。如下图所示:

上图figure 2 中表示的简化版 Inception 模块,又可被表示为下图 figure 3中的形式。即,实质上它等价于,

  • 先使用一个1x1 conv来学习 input feature maps之上 channels 间特征的关联关系,
  • 然后再将1x1 conv输出的feature maps进行分割,分别交由下面的若干个3x3 conv来处理其内的空间上元素的关联关系。

    更进一步,极端的情况是:将每个channel上的空间关联分别使用一个相应的conv 3x3来单独处理呢。如此就得到了下图中所示的 Separable conv。

1.2 Xception 与 MobileNet

MobileNet 系列解析

Xception 和 MobileNet 之间有相同的地方也有不同的地方,主要体现在:

  • 相同:都由 channel-wise (3*3)空间卷积和 1x1 卷积两个操作组成。
  • 不同:
    • 操作顺序不同:
      MobileNet 先进行 channel-wise 空间卷积,然后使用 1x1 卷积进行融合;
      Xception 先进行 1x1 卷积,然后进行 channel-wise 空间卷积。
    • 非线性激励函数:
      MobileNet 中的两个操作之间添加了 ReLU 非线性激励;
      而为了保证数据不被破坏,Xception 中的两个操作之间没有激励函数。

1.3 关于深度可分离卷积

深度可分离卷积其实是一种可分解卷积操作(factorized convolutions),其可以分解为两个更小的操作:depthwise convolution(DW 卷积、捕捉空间关联)和pointwise convolution(PW卷积、捕捉通道关联)。

  • 与MobileNetV1中解析中的一致,都是为了减少参数。可以参考 MobileNetV1
  • 无非是调换了一下位置,Xception是先DW再PW,而 MobileNet 是先PW再DW。

2. Xception 模型架构

Xception 结构由 36 个卷积层组成网络的特征提取基础。这些卷积层被分成 14 个模块,除最后一个外,模块间有线性残差连接。

  • 另外,Xception 引入了 Entry/Middle/Exit 三个 flow,每个 flow 内部使用不同的重复模块,
    • 入口(Entry) 主要是用来不断下采样,减小空间维度;
    • 中间(Middle)则是不断学习关联关系,优化特征;
    • 出口(Exit)则是汇总、整理特征,用于交由全连接层来进行表达。

3. 实验结果

4. 参考

【1】https://blog.csdn.net/qq_44511163/article/details/126406887

深度可分离卷积(depthwise separable convolution)参数计算

参考技术A 我最早接触深度可分离卷积是在Xception网络结构中,这个网络就不在这里赘述了,这里主要讲一下参数计算。
假设某一层输入通道是8,输出通道是16,使用的卷积核是3x3,使用正常卷积那么这层的参数计算方式为(8x3x3+1)x16=1168,其中1是偏置带来的参数。具体为,输入通道数据被16个不同的8x3x3大小的卷积核遍历,
在可分离卷积里面参数计算方式为8x3x3+16x(8x1x1+1)=216,其中和8相乘的1是大小为1卷积核参数,最后加的1是偏置带来的参数。具体为,输入通道数据被8个不同3x3大小的卷积核遍历1次,生成8个特征图谱,8个特征图谱中每个被16个8x1x1卷积核遍历,生成16个特征图谱。
通过分离卷积操作参数从1168个降到216个,可见在模型复制度上有很大的优化。

以上是关于深度可分离卷积网络Xception 网络解析的主要内容,如果未能解决你的问题,请参考以下文章

深度可分离卷积(depthwise separable convolution)参数计算

深度可分离卷积神经网络与卷积神经网络

深度学习100例 | 第24天-卷积神经网络(Xception):动物识别

mobileNetV1网络解析,以及实现(pytorch)

深度学习方法:卷积神经网络结构变化——Google Inception V1-V4,Xception(depthwise convolution)

pytorch 图像分类