1
本文作者: 汪思颖 | 2017-08-15 15:22 | 专题:CVPR 2017 |
雷锋网 AI 科技评论按:虽然CVPR 2017已经落下帷幕,但对精彩论文的解读还在继续。下文是Momenta高级研究员王晋玮对此次大会收录的 Xception:Deep Learning with Depthwise Separable Convolutions 一文进行的解读。
Inception模块是一大类在ImageNet上取得顶尖结果的模型的基本模块,例如GoogLeNet、Inception V2/V3和Inception-ResNet。有别于VGG等传统的网络通过堆叠简单的3*3卷积实现特征提取,Inception模块通过组合1*1,3*3,5*5和pooling等结构,用更少的参数和更少的计算开销可以学习到更丰富的特征表示。
通常,在一组特征图上进行卷积需要三维的卷积核,也即卷积核需要同时学习空间上的相关性和通道间的相关性。将这两种相关性显式地分离开来,是Inception模块的思想之一:Inception模块首先使用1*1的卷积核将特征图的各个通道映射到一个新的空间,在这一过程中学习通道间的相关性;再通过常规的3*3或5*5的卷积核进行卷积,以同时学习空间上的相关性和通道间的相关性。
但此时,通道间的相关性和空间相关性仍旧没有完全分离,也即3*3或5*5的卷积核仍然是多通道输入的,那么是否可以假设它们可以被完全分离?显然,当所有3*3或5*5的卷积都作用在只有一个通道的特征图上时,通道间的相关性和空间上的相关性即达到了完全分离的效果。
若将Inception模块简化,仅保留包含3*3的卷积的分支:
再将所有1*1的卷积进行拼接:
进一步增多3*3的卷积的分支的数量,使它与1*1的卷积的输出通道数相等:
此时每个3*3的卷积即作用于仅包含一个通道的特征图上,作者称之为“极致的Inception(Extream Inception)”模块,这就是Xception的基本模块。事实上,调节每个3*3的卷积作用的特征图的通道数,即调节3*3的卷积的分支的数量与1*1的卷积的输出通道数的比例,可以实现一系列处于传统Inception模块和“极致的Inception”模块之间的状态。
运用“极致的Inception”模块,作者搭建了Xception网络,它由一系列SeparableConv(即“极致的Inception”)、类似ResNet中的残差连接形式和一些其他常规的操作组成:
作者通过TensorFlow实现了Xception,并使用60块NVIDIA K80分别在ImageNet和JFT(Google内部的图像分类数据集,包含17000类共3.5亿幅图像)上进行训练,并分别在ImageNet和FastEval14k上进行测试。在ImageNet上,Xception的准确率相比Inception V3有一定的提升,并比ResNet-152或VGG-16有较多提升(单个模型,单个crop):
在JFT/FastEval14k上,Xception取得了比ImageNet上相比于Inception V3更多的准确率提升:
同时,和Inception V3相比,Xception的参数量有所下降,而训练时的迭代速度也没有明显变慢:
另外,在ImageNet和JFT上的训练过程都显示,Xception在最终准确率更高的同时,收敛过程也比Inception V3更快:
在Xception中加入的类似ResNet的残差连接机制也显著加快了Xception的收敛过程并获得了显著更高的准确率:
值得注意的是,在“极致的Inception”模块中,用于学习通道间相关性的1*1的卷积和用于学习空间相关性的3*3的卷积之间,不加入任何非线性单元相比于加入ReLU或ELU激活函数将会带来更快的收敛过程和更高的准确率:
这篇文章中提及的Depthwise Convolution操作,即group数、输入通道数和输出通道数相等的卷积层,在最近一年内被多篇CNN模型结构设计方面的工作所使用,包括Factorized Convolutional Neural Networks,Xception,MobileNet和ShuffleNet等,以及ResNeXt一文中使用的大量分group卷积操作也与之有相似之处。它们有的在ImageNet上取得了非常好的结果,有的大幅降低了模型的理论计算量但损失较少的准确度。本文作者从空间相关性和通道间相关性的角度解释Depthwise Convolution,认为这是将学习空间相关性和学习通道间相关性的任务完全分离的实现方式。
事实上,这一操作也可以从低秩角度理解,即将每个输入通道上可学习的卷积参数的秩限制为1。不过潜在的问题是,虽然Depthwise Convolution可以带来准确率的提升或是理论计算量的大幅下降,但由于其计算过程较为零散,现有的卷积神经网络实现中它的效率都不够高,例如本文中Xception的理论计算量是远小于Inception V3的,但其训练时的迭代速度反而更慢一些。期待后续会出现更加高效的Depthwise Convolution实现。
雷峰网版权文章,未经授权禁止转载。详情见转载须知。