论文Xception: Deep Learning with Depthwise Separable Convolutions
1、作者从Inception v3出发,假设解耦通道相关性和空间相关性,进行简化,推导出深度可分离卷积
作者认为,Inception模块背后的想法是,通过将其明确地分解为一系列独立于跨通道相关性和空间相关性的运算,将其简化和提高效率。更准确地说,典型的Inception模块首先通过一组1x1卷积查看跨通道相关性,然后将输入数据映射到3或4个比原始输入空间小的空间中,然后在这些较小的3D空间中映射所有相关性,通过常规3x3或5x5卷积。如图1所示。实际上,Inception背后的基本假设是跨通道相关性和空间相关性充分解耦,因此最好不要将它们一起映射。
然后作者将其简化,如下图所示,只用一个尺寸的convolution,而且去掉average pooling。
进一步,可以将该Incception模块重新构造为大的1x1卷积,然后再进行空间卷积,这些卷积将在输出通道的非重叠段上进行操作,如下图所示。
基于此更强的假设,Inception模块的“极端extrem”版本将首先使用1x1卷积来映射跨通道相关性,然后分别映射每个输出通道的空间相关性。如下图所示。注意到,这种极端形式的Inception模块几乎与深度可分离卷积相同。
2、Xception和MoblieNet的深度可分离卷积存在不同。
(1)Xception的深度可分离卷积是先point-wise convolution,再depth-wise convolution;
MobileNet的深度可分离卷积是先depth-wise convolution,再point-wise convolution。
这一点区别不重要。
(2)Xception在每个convolution后都有一个ReLU激活函数,而MobileNet的depthwise convolution没有跟ReLU。
这一点区别,通过实验发现,没有ReLU效果会好一些。
可能是对于较深的特征空间(例如,在Inception模块中发现的那些),非线性是有帮助的,但对于较浅的特征, 它(例如深度可分离卷积的1通道深特征空间)变得有害,可能是由于信息丢失所致。
3、性能比Inception v3 好。
4、提出了一个新的Xception网络,并在DeepLab v3+被使用。
但是DeepLabV3+中用的是AlignedXception,经过修正的。
提出的Xception网络结构如下图所示:
DeepLabV3+中应用的AlignedXception网络结构如下图所示(Xception-65):
做了如下几点修改:
(1)在entry-flow添加了更多的层。
(2)所有的max pooling替换为了stride=2的depthwise separable convolution
(3)在每个3x3 depth-wise convolution后加了BN-ReLU
两个PyTorch版本仅供参考。但是由于Xception没有提供的预训练模型,实际应用上并不太方便。