CVPR 2017精彩论文解读:对Xception(一种深度可分离卷积)模型的介绍

简介:

雷锋网(公众号:雷锋网) 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的卷积的分支:

CVPR 2017精彩论文解读:对Xception(一种深度可分离卷积)模型的介绍

再将所有1*1的卷积进行拼接:

CVPR 2017精彩论文解读:对Xception(一种深度可分离卷积)模型的介绍

进一步增多3*3的卷积的分支的数量,使它与1*1的卷积的输出通道数相等:

CVPR 2017精彩论文解读:对Xception(一种深度可分离卷积)模型的介绍

此时每个3*3的卷积即作用于仅包含一个通道的特征图上,作者称之为“极致的Inception(Extream Inception)”模块,这就是Xception的基本模块。事实上,调节每个3*3的卷积作用的特征图的通道数,即调节3*3的卷积的分支的数量与1*1的卷积的输出通道数的比例,可以实现一系列处于传统Inception模块和“极致的Inception”模块之间的状态。

运用“极致的Inception”模块,作者搭建了Xception网络,它由一系列SeparableConv(即“极致的Inception”)、类似ResNet中的残差连接形式和一些其他常规的操作组成:

CVPR 2017精彩论文解读:对Xception(一种深度可分离卷积)模型的介绍

作者通过TensorFlow实现了Xception,并使用60块NVIDIA K80分别在ImageNet和JFT(Google内部的图像分类数据集,包含17000类共3.5亿幅图像)上进行训练,并分别在ImageNet和FastEval14k上进行测试。在ImageNet上,Xception的准确率相比Inception V3有一定的提升,并比ResNet-152或VGG-16有较多提升(单个模型,单个crop):

CVPR 2017精彩论文解读:对Xception(一种深度可分离卷积)模型的介绍

在JFT/FastEval14k上,Xception取得了比ImageNet上相比于Inception V3更多的准确率提升:

CVPR 2017精彩论文解读:对Xception(一种深度可分离卷积)模型的介绍

同时,和Inception V3相比,Xception的参数量有所下降,而训练时的迭代速度也没有明显变慢:

CVPR 2017精彩论文解读:对Xception(一种深度可分离卷积)模型的介绍

另外,在ImageNet和JFT上的训练过程都显示,Xception在最终准确率更高的同时,收敛过程也比Inception V3更快:

CVPR 2017精彩论文解读:对Xception(一种深度可分离卷积)模型的介绍

在Xception中加入的类似ResNet的残差连接机制也显著加快了Xception的收敛过程并获得了显著更高的准确率:

CVPR 2017精彩论文解读:对Xception(一种深度可分离卷积)模型的介绍

值得注意的是,在“极致的Inception”模块中,用于学习通道间相关性的1*1的卷积和用于学习空间相关性的3*3的卷积之间,不加入任何非线性单元相比于加入ReLU或ELU激活函数将会带来更快的收敛过程和更高的准确率:

CVPR 2017精彩论文解读:对Xception(一种深度可分离卷积)模型的介绍

这篇文章中提及的Depthwise Convolution操作,即group数、输入通道数和输出通道数相等的卷积层,在最近一年内被多篇CNN模型结构设计方面的工作所使用,包括Factorized Convolutional Neural Networks,Xception,MobileNet和ShuffleNet等,以及ResNeXt一文中使用的大量分group卷积操作也与之有相似之处。它们有的在ImageNet上取得了非常好的结果,有的大幅降低了模型的理论计算量但损失较少的准确度。本文作者从空间相关性和通道间相关性的角度解释Depthwise Convolution,认为这是将学习空间相关性和学习通道间相关性的任务完全分离的实现方式。

事实上,这一操作也可以从低秩角度理解,即将每个输入通道上可学习的卷积参数的秩限制为1。不过潜在的问题是,虽然Depthwise Convolution可以带来准确率的提升或是理论计算量的大幅下降,但由于其计算过程较为零散,现有的卷积神经网络实现中它的效率都不够高,例如本文中Xception的理论计算量是远小于Inception V3的,但其训练时的迭代速度反而更慢一些。期待后续会出现更加高效的Depthwise Convolution实现。

本文作者:思颖

本文转自雷锋网禁止二次转载,原文链接

相关文章
|
7月前
|
jenkins Java Linux
Jenkins环境的部署及任务构建
以上就是Jenkins环境的部署及任务构建的全部内容。希望可以帮助你轻松上手Jenkins,让你的CI/CD之旅更加顺畅!
490 68
|
9月前
|
机器学习/深度学习 算法 文件存储
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
714 10
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
|
机器学习/深度学习 自然语言处理 计算机视觉
探索深度学习中的Transformer架构
探索深度学习中的Transformer架构
260 2
|
JavaScript 前端开发 安全
TypeScript的优势与实践:提升JavaScript开发效率
【10月更文挑战第8天】TypeScript的优势与实践:提升JavaScript开发效率
|
11月前
|
Python
使用pycharm 开发streamlit的项目启动
要在 PyCharm 中配置 Streamlit 环境并调试应用,请按以下步骤操作:1. 确保 PyCharm 配置了 Python 解释器并安装 Streamlit 包(File -> Settings -> Project -> Python Interpreter)。2. 配置调试运行设置(Run -> Edit Configurations,添加 Python 配置并命名)。3. 选择新配置并点击调试按钮启动应用。
1119 23
请拥有edu邮箱的同学来领取专(免)属(费)GPU!
300小时免费GPU等你来领!魔搭GPU资源福利社,为你注入动力!
|
机器学习/深度学习 自然语言处理 并行计算
一文快速读懂Transformer
Transformer模型近年来成为自然语言处理(NLP)领域的焦点,其强大的特征提取能力和并行计算优势在众多任务中取得显著效果。本文详细解读Transformer的原理,包括自注意力机制和编码器-解码器结构,并提供基于PyTorch的代码演示,展示了其在文本分类等任务中的应用。
ArcMAP对遥感影像进行波段提取的3种方法
ArcMAP对遥感影像进行波段提取的3种方法
3984 0
|
负载均衡 Kubernetes 算法
K8s服务发现与负载均衡的技术探索
【7月更文挑战第15天】K8s通过Service资源对象和kube-proxy组件实现了高效、灵活的服务发现和负载均衡机制。通过合理选择Service类型、优化kube-proxy配置以及使用Ingress进行高级路由,可以确保应用在K8s集群中高效、可靠地运行。随着云原生技术的不断发展,K8s的服务发现和负载均衡机制也将不断完善和优化,为更多场景提供强大的支持。
1048 9