[关闭]
@Team 2018-12-24T03:16:35.000000Z 字数 1552 阅读 567

《Computer vision》笔记-Xception(5)

石文华


卷积神经网络近年来已成为计算机视觉中的主流算法,对于常见的神经网络结构,比如AlexNet,VGG,googlenet,resnet等,在进行卷积操作的时候,都是使用3D的卷积核(具有2个空间维度(宽度和高度)和通道尺寸)对特征图进行卷积操作的,即卷积核需要同时学习空间上的相关性和通道间的相关性。如下图所示:

image.png-70.9kB

之前在学习1*1卷积作用的时候说过,1*1卷积由于大小只有1x1,所以并不需要考虑像素跟周边像素的关系(空间相关性),主要用于调节通道数,对不同的通道上的像素点进行线性组合,然后进行非线性化操作,可以完成升维和降维的功能,也就是说它在学习通道间的相关性。Inception模块中对输入特征使用1*1卷积学习跨通道相关性,再通过常规的3*3或5*5的卷积核进行卷积,以同时学习空间上的相关性和通道间的相关性。如下图Inception V3模块:

image.png-107.7kB

为了使空间上的相关性和通道间的相关性分开来进行学习,而不是使用3D卷积核同时学习空间上的相关性和通道间的相关性,采用深度可分卷积操作,它是Inception的极端情况,也就是按照通道数划分原始特征空间,然后卷积每一个划分出来的特征空间,由于划分出来的每部分只有一个通道,所以卷积核的深度为1。如下图的特征图只有4个通道,每个卷积核大小为3*3*1:

image.png-113.2kB

简化Inception模块,去掉pooling,保留3*3的卷积分支。如下图所示:

image.png-103.3kB

然后将上图中的所有1*1的卷积用一个较大的1*1卷积替换,然后将产生的特征图分成三个不重叠的部分,进行卷积操作,如下图所示:

image.png-108.2kB

在深度神经网络中,特征图的通道数一般都比3要大很多,3个不重叠的部分分别进行卷积操作,每部分里面还是没有将 空间相关性和跨通道相关性分离开,如果对特征图的每个通道单独进行卷积,也就是特征图有多少个通道,就划分出多少个部分,再对每个通道进行卷积。这样空间相关性上的学习就跟跨通道相关性学习无关了。如下图所示:

image.png-156kB

上述的几个步骤,就完成了Inception到Xception的转变。
Xception共计 36 层,分为 Entry flow、Middle flow以及Exit flow。其中Entry flow 包含 8 个 卷积层,Middle flow 包含 3*8 =24 个卷积层,Exit flow 包含 4 个 卷积层,所以 Xception 共计 36 层。其结构如下所示:

image.png-141.4kB
Imagenet数据集上对 VGG-16,ResNet-152,Inception V3, Xception等模型的性能进行对比,可以看到他们的分类能力的表现:
image.png-32.7kB

Inception V3和Xception两个模型在Imagenet数据集上训练情况对比,可以发现Xception收敛更快,准确率更高。
image.png-31.2kB
对于Inception V3和Xception两个模型的参数量以及速度对比:模型更小,速度更快,如下图所示:

image.png-13.3kB
如果进行迁移学习,可以使用预训练好的模型,如下代码示例:
keras.applications.xception.Xception(include_top=True, weights='imagenet',
input_tensor=None, input_shape=None,
pooling=None, classes=1000)
参考文献:
https://blog.csdn.net/jningwei/article/details/80628139
https://arxiv.org/pdf/1610.02357.pdf
https://www.sohu.com/a/226395640_500659
https://www.leiphone.com/news/201708/KGJYBHXPwsRYMhWw.html

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注