深度可分离卷积网络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
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):动物识别
深度学习方法:卷积神经网络结构变化——Google Inception V1-V4,Xception(depthwise convolution)