《Computer vision》笔记-Xception(5)
作者:石文华
编辑:陈人和
前 言
Inception V3模块
Inception转Xception
Xception
模型对比
01
Inception V3模块
之前在学习1*1卷积作用的时候说过,1*1卷积由于大小只有1x1,所以并不需要考虑像素跟周边像素的关系(空间相关性),主要用于调节通道数,对不同的通道上的像素点进行线性组合,然后进行非线性化操作,可以完成升维和降维的功能,也就是说它在学习通道间的相关性。Inception模块中对输入特征使用1*1卷积学习跨通道相关性,再通过常规的3*3或5*5的卷积核进行卷积,以同时学习空间上的相关性和通道间的相关性。如下图Inception V3模块:
02
Inception转Xception
为了使空间上的相关性和通道间的相关性分开来进行学习,而不是使用3D卷积核同时学习空间上的相关性和通道间的相关性,采用深度可分卷积操作,它是Inception的极端情况,也就是按照通道数划分原始特征空间,然后卷积每一个划分出来的特征空间,由于划分出来的每部分只有一个通道,所以卷积核的深度为1。如下图的特征图只有4个通道,每个卷积核大小为3*3*1:
简化Inception模块,去掉pooling,保留3*3的卷积分支。如下图所示:
然后将上图中的所有1*1的卷积用一个较大的1*1卷积替换,然后将产生的特征图分成三个不重叠的部分,进行卷积操作,如下图所示:
在深度神经网络中,特征图的通道数一般都比3要大很多,3个不重叠的部分分别进行卷积操作,每部分里面还是没有将 空间相关性和跨通道相关性分离开,如果对特征图的每个通道单独进行卷积,也就是特征图有多少个通道,就划分出多少个部分,再对每个通道进行卷积。这样空间相关性上的学习就跟跨通道相关性学习无关了。如下图所示:
上述的几个步骤,就完成了Inception到Xception的转变。
03
Xception
Xception共计 36 层,分为 Entry flow、Middle flow以及Exit flow。其中Entry flow 包含 8 个 卷积层,Middle flow 包含 3*8 =24 个卷积层,Exit flow 包含 4 个 卷积层,所以 Xception 共计 36 层。其结构如下所示:
04
模型对比
Imagenet数据集上对 VGG-16,ResNet-152,Inception V3, Xception等模型的性能进行对比,可以看到他们的分类能力的表现:
Inception V3和Xception两个模型在Imagenet数据集上训练情况对比,可以发现Xception收敛更快,准确率更高。
对于Inception V3和Xception两个模型的参数量以及速度对比:模型更小,速度更快,如下图所示:
如果进行迁移学习,可以使用预训练好的模型,如下代码示例:
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
END
往期回顾之作者石文华
【1】 《Computer vision》笔记-ResNet(4)
【2】 《Computer vision》笔记-GoodLeNet(3)
【3】 《Computer vision》笔记-VGGNet(2)
【4】 《Computer vision》笔记-AlexNet(1)
机器学习算法工程师
一个用心的公众号
进群,学习,得帮助
你的关注,我们的热度,
我们一定给你学习最大的帮助