当先锋百科网

首页 1 2 3 4 5 6 7

Xception

Xception: Deep Learning with Depthwise Separable Convolutions

角度:卷积的空间相关性通道相关性

笔记还是手写好,都忘了怎么写字了,把论文打印出来看

  • 传统卷积:一个卷积核处理所有channel。
  • 深度可分离卷积(depthwise separable convolutions):一个卷积核处理一个channnel。

Abstract

Inception介于传统卷积核深度可分离卷积之间,深度可分离卷积可以看作有很多支路的Inception。

Introduction

1.Inception假设

  • 传统卷积既要处理跨通道信息又要处理空间相关信息
  • Inception部分先用1*1卷积单独处理通道信息再用分解卷积(5->2 * 3)处理空间信息,基本假设是跨通道相关性和空间相关性被充分解耦(空间维度也可以用不对称卷积分解)。

图1是经典的Inception模块。

img

图2是简化的Inception模块,去掉了avg,只用一种卷积大小(3*3)

image-20220628100857807

图3是图2的重新表示,inception模块可以换成一个1* 1大卷积,然后3* 3卷积核(空间卷积)在不重叠的channel上做卷积。

image-20220628101027593

上述可以引出两个问题:

  1. channel分割区域的大小有什么影响?
  2. 跨通道相关性和空间相关性能否彻底解耦?

2.卷积和分离卷积的continuum(连续区)

区分:

  • pointwise conv:通道维度的卷积
  • depthwise conv:长宽,即空间维度的卷积

搞清楚:

  • spatially separable conv:Inception的不对称卷积7 * 7 分解成 7 * 1 和1 * 7
  • depthwise separable conv:3*3卷积处理(空间+通道)

基于假设,极限版inception模块就是先用1* 1卷积map跨通道的相关性,然后每个channel一个3* 3卷积(map空间),几乎等价于深度可分离卷积。(深度分离卷积的思想在alexnet多GPU训练上有体现,你说有就有呗)

image-20220628104908767

Inception modules和深度可分离卷积的“极端”版本之间的两个细微区别是:

  1. 操作顺序:通常深度可分离卷积(例如在TensorFlow中)首先执行通道方向的空间卷积,然后执行1x1卷积,而Inception先1x1卷积。

  2. 第一次操作后是否存在非线性。在Inception里,这空间卷积和维度卷积操作都会加ReLU,然而深度可分离卷积通常是在没有非线性的情况下实现的。

后面架构图里的relu不是夹在3* 3和1* 1卷积之间的,稍微符合上述表达,因为这个架构是堆叠的,论文作者下面自己也说了1的顺序不是很重要,应该是有误的?

1不是很重要,因为整个架构都是堆叠起来的。2的相关实验结果在图10。

其他介于常规inception和深度可分离卷积之间的intermediate formulations都是有可能的。

在本论文中传统卷积和深度可分离卷积的的定义。

  • 常规卷积: 一个卷积核处理所有通道。称为single-segment case。
  • 深度可分离卷积: 一个卷积核处理一个通道。称为one segment per channel。

常规卷积只分一个spectrum(就是channel上不分区的意思),深度可分离卷积每个channel一个segment。Inception结构是在这两者之间的。

The Xception architecture

注意图解,BN在所有卷积和分离卷积后面都用上了。通道维度和空间维度的两方面处理彻底分开,达到解耦的效果。

Xception有36个卷积层用于特征提取,36个卷积层放到14个模块中,除了Entry和Exit,其余的都用线性残差连接(也算是resnet+inception了,带残差的可分离深度卷积)

image-20220628105849084

Experimental evaluation

JFT dataset

多分类数据集,google内部的,平均每张图36.5个标签,使用了辅助数据集FastEval14k(类似JFT的子集)

Optimization configuration

看论文

Regularization configuration

  • weight decay:L2正则化xception:1e-5(JFT和ImageNet一样)
  • dropout:0.5,JFT数据集没用(数据量够大相当于regularization了)
  • 辅助分类器:丢了

训练:

  • 作者用了60块GPU,所以将数据复制60份,每一份放到一块GPU中训练,最后所有结果求平均
  • JFT上没完全收敛(要收敛每个实验要做3个月)

Comparison

image-20220628111041653

和inceptionV3比的原因是参数差不多,说明不是capability影响的而是架构的贡献。

image-20220628110900405

ImageNet上差不多,但xception还是要好,作者说可能是因为V3 is designed for ImageNet,这个数据集上over-fit了。

image-20220628110955602

在JFT数据集上设计了带FC和不带FC的两个模型,均比V3好不少。

image-20220628111017381

image-20220628111029257

残差连接的有效性

作者认为残差连接确实提高了精度和训练速度以及准确率,但又觉得residual不是必要的,因为他们自己做了VGG(换成xception模块)的实验发现比V3好。

image-20220628111133402

Effect of an intermediate activation after pointwise convolutions

实验结果表明,非线性激活(ReLu)对空间-通道未解耦时有用 ,也就是对传统的conv适用,对深度可分离卷积不适用,可能是因为信息丢失了。(在哪丢失的?)
也就是:在Xception模块中,用于学习空间相关性的3×3 的卷积,和用于学习通道间相关性的1×1 卷积之间,不使用非线性激活函数时,收敛过程更快、准确率更高

image-20220628111203681

总结:

1.文章思考的角度很深入,从空间和通道的相关性对卷积进行了进一步的思考

2.深度可分离卷积不一定是最好的,但空间和通道的解耦的思想很好

3.解耦思想