论文地址:Xception: Deep Learning with Depthwise Separable Convolutions
Xception是基于Inception-v3的改进
下图为一个典型的Inception v3的模块
Inception的思想就是把不同size的卷积都对input进行操作最后concat到一起作为输出,让网络自己选择最为适合的卷积size,然后为了减少计算量,使用1*1的卷积先降低channel然后在进行大卷积核的操作
本文提出对于一个典型的Inception可以简化为
然后根据这个简化,可以延伸出下图,也就是先对input使用1*1的卷积进行操作之后,每个3*3的卷积都选取其中的一部分作为输入(下图中为1*1卷积输出channel的1/3),进行3*3卷积后再concat到一起作为输出
然后根据上图提到的方法,又推导出另外一种(下图),都是先使用1*1卷积,随后选取1*1卷积得到的一部分channel作为每个3*3卷积的输入,与上图不同的一点在于,下图所选取的一部分都是一个channel,也就是1*1卷积得到x个channel,后边就是用x个3*3卷积分别对着x个channel进行卷积操作
文中提出使用1*1卷积和3*3卷积的顺序可以颠倒,所以接下来就是文中提出的depthwise separable convolution(MobileNets Efficient Convolutional Neural Networks for Mobile Vision Applications)
分为两个部分depthwise convolution和pointwise convolution
depthwise convolution(上图中的b):
对于有M个channel的输入,使用M个3*3卷积核,一对一进行卷积,得到M个channel的输出
pointwise convolution(上图中的c):
将之前depthwise conv的M个channel的输出,使用N个1*1卷积核进行普通卷积,随后得到N个channel的输出
整个网络结构如上图所示
网络中使用residual的思想,+便是残差相加
参考:https://blog.csdn.net/u014380165/article/details/75142710