论文地址: Aggregated Residual Transformations for Deep Neural Networks
工程代码: Github链接1    Github链接2

0. 摘要

  论文提出了一个简单并且高度模块化的网络架构以用于图片分类,构造该网络需要一个个重复的集成有一系列变换且具有同一种拓扑结构的基础模块。这种设计的策略同时引入了一个评价网络的新维度(除了深度和宽度):cardinality - the size of the set of transformations,实验表明增加cardinality比增加深度或者宽度更加有效,尤其是当加深网络反而对精度有害的时候。在ImageNet-1K数据集上的实验表明,严格控制复杂度的情况下简单地增加cardinality能够提高图像分类的准确率,也就也是说增大cardinality能够带来分类效果的提升但运算代价却远远小于增加网络的宽度或者深度。新设计的网络称为ResNeXt。

1. 简介

  目前(2016)计算机视觉识别任务正在从特征工程转向网络工程,不同于传统的人工设计特征,神经网络在训练的时候仅需要极少的人工干预就能从大规模数据中学习到能用与多种识别任务的特征,正是如此,人们的工作开始向设计能够学习到更好特征的神经网络方向转移。
  然而由于神经网络超参数的增加,架构设计也变得越来越困难,尤其是深层神经网络。VGG神经网络通过叠加相同的基础模块来设计深层神经网络,这种策略也被ResNets借鉴(ResNet也是堆叠多个具有相同拓扑结构的模块而来的)。这个简单的策略使用深度描述神经网络,超参数的选择更加简单的同时能够避免其偏向于特定的数据集(VGG-nets和ResNets已经证明了其多种数据集上的优越性)。
  和VGG-nets不同,Inception系列的模型已经证实精心设计拓扑结构能够在较低复杂度的情况下仍然取得良好的效果,其已经发展出多个不同的版本但具有一个通用的特性即split-transform-merge策略。在一个Inception模块中,输入被分为几个低维向量后通过一系列特定的滤波器然后重新融合成一个整体作为输出,这种方式能够以较小的代价取得和大型稠密网络接近的效果。
  但是Inception模型的设计涉及到许多的参数,这也就导致Inception模型总是为特定的数据集设计的,参数越多,越难迁移到新的数据集或者新任务上。
  而ResNeXt结合了VGG-nets/ResNet模块堆叠和Inception的split-transform-merge两种思想,如下图所示,两种结构具有接近的复杂度,而且基础模块具有相同的拓扑结构能够进行简单重复从而构建规模更大的网络。

  而且这种结构有不同的描述方式,如下图所示,图b与Inception-ResNet的结构类似都是结合多个路径的输出,但是ResNeXt每个路径上的拓扑结构相同并且路径数是独立的变量,ResNeXt也可以以图c也就是group convolutions的方式来进行描述。

  实验表明,ResNeXt-101效果比ResNet-200更好但是仅有一半的复杂度,ResNeXt也比Inception模块的设计更简单。

2. 方法

2.1 模板

  基础模块是根据VGG/ResNets设计的,ResNeXt包含一系列这样的残差模块,它们具有相同的拓扑结构并且遵循以下两个准则:

  • 处理相同尺寸的特征图,模块的超参数(宽度和滤波器尺寸)一致
  • 特征图每次下采样两倍,模块的宽度乘以2

  第二个准则能够确保所有模块的FLOPs基本一致,根据这两个准则设计的网络结构如下图所示:

2.2 重新审视简单的神经元

  最简单的神经元能够执行内积运算,这也是全连接层和卷积层的基本操作,其可以表示为如下公式:
∑i=1Dωixi\sum^D_{i=1}\omega_ix_ii=1∑D​ωi​xi​

  也可以图示为:

  以上操作可以看作splitting, transformaing和aggregating:

  • Splitting: 向量x被分开为多个低维向量
  • Transforming:低维向量的变换即ωixi\omega_ix_iωi​xi​
  • Aggregating:变换后的结果通过∑i=1D\sum^D_{i=1}∑i=1D​结合
2.3变换结果结合

  根据上面对内积操作的分析,我们将变换通过一个更通用的公式来表示,这个变换本身也可以是一个神经网络,变换并结合的操作如下所示:
F(x)=∑i=1Cτi(x)F(x)=\sum^C_{i=1}\tau_i(x)F(x)=i=1∑C​τi​(x)

  其中τi(x)\tau_i(x)τi​(x)可以是任意函数,将输入向量x分解然后变换,最终结合;C是需要结合的变换的个数即cardinalitycardinalitycardinality。
  该论文提出了一个简单的方式来设计变换函数,即所有的τi\tau_iτi​都具有相同的拓扑结构,这也延续了VGG的策略即堆叠具有简单形状的神经层,而且τi\tau_iτi​具有瓶颈结构,最终结合残差函数,公式表示为:
y=x+∑i=1Cτi(x)y=x+\sum^C_{i=1}\tau_i(x)y=x+i=1∑C​τi​(x)

略[4.实现细节&&5.实验结果]

欢迎扫描二维码关注微信公众号 深度学习与数学   [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]

主干网络系列(4) -ResNeXt: 批量残差网络-作用于深度神经网络的残差聚集变换相关推荐

  1. pytorch自带网络_使用PyTorch Lightning自动训练你的深度神经网络

    作者:Erfandi Maula Yusnu, Lalu 编译:ronghuaiyang 原文链接 使用PyTorch Lightning自动训练你的深度神经网络​mp.weixin.qq.com 导 ...

  2. 对抗机器学习系列——深度神经网络的盲点

    1.引言   近些年,深度学习在计算机视觉领域取得了很好的表现,引领了第三次人工智能的浪潮.目前大部分表现优异的应用都用到了深度学习,大红大紫的 AlphaGo 就使用到了深度学习.   但是本期讲的 ...

  3. unet是残差网络吗_深度学习系列(三)卷积神经网络模型(ResNet、ResNeXt、DenseNet、DenceUnet)...

    深度学习系列(三)卷积神经网络模型(ResNet.ResNeXt.DenseNet.Dence Unet) 内容目录 1.ResNet2.ResNeXt3.DenseNet4.Dence Unet 1 ...

  4. 批量残差网络-Aggregated Residual Transformations for Deep Neural Networks

    Aggregated Residual Transformations for Deep Neural Networks Facebook AI Research 大牛 Ross Girshick K ...

  5. 从零开始学Pytorch(九)之批量归一化和残差网络

    对输入的标准化(浅层模型) 处理后的任意一个特征在数据集中所有样本上的均值为0.标准差为1. 标准化处理输入数据使各个特征的分布相近 批量归一化(深度模型) 利用小批量上的均值和标准差,不断调整神经网 ...

  6. keras搬砖系列-残差网络的实现

    keras搬砖系列-残差网络的实现 ResNet-50图 #coding=utf-8 from keras.models import Model from keras.layers import I ...

  7. 残差网络ResNet到ResNeXt解读,最强ResNeXt预训练模型已开源及如何使用

    它叫ResNeXt WSL,有超过8亿个参数,用Instagram上面的9.4亿张图做了 (弱监督预训练) ,用ImageNet做了微调. 背景介绍:残差网络的发展 ● ResNet (2015) 传 ...

  8. python 残差网络--ResNeXt (附python代码)

    残差网络--ResNeXt 一.ResNet.ResNeXt介绍 1.1 ResNet 的结构 1.2 ResNeXt的结构 二.python代码 一.ResNet.ResNeXt介绍 1.1 Res ...

  9. (pytorch-深度学习系列)ResNet残差网络的理解-学习笔记

    ResNet残差网络的理解 ResNet伴随文章 Deep Residual Learning for Image Recognition 诞生,该文章是MSRA何凯明团队在2015年ImageNet ...

  10. Resnet 残差网络使用案例

    Resnet 网络 深度残差网络(Deep residual network, ResNet)的提出是CNN图像史上的一件里程碑事件,在各类数据集上都有不凡的表现,Resnet是残差网络(Residu ...

最新文章

  1. jQuery 对象及伪数组
  2. css unchecked,详细介绍CSS中的伪选择器
  3. win10上面安装win7的虚拟机怎么相互ping通
  4. paip. 调试技术打印堆栈 uapi print stack java php python 总结.
  5. 循环矩阵与傅里叶相关的几点性质
  6. RedHat7如何配置新网卡
  7. Redis客户端工具-AnotherRedisDesktopManager
  8. 我说CMM2.0之:风险与机会管理
  9. java 像素点 生成图片_黑白图片的两种生成方法
  10. 程序员看来都羡慕:一个寒门博士的致谢及其女友回复
  11. 天荒地老修仙功-第七部:Dubbo基本使用与原理详解
  12. C#入门教程(一)visual studio与winform
  13. 详解二分搜索,强攻细节问题
  14. android studio 扰码,Visual Studio 调试技巧 (三) -- 调试第三方组件代码
  15. X Error of failed request: BadWindow (invalid Window parameter)
  16. 【NCRE学习笔记002】二级公共基础知识----数据结构与算法
  17. 微型计算机是台式机,#有货自远方来# 黑五买的新“玩具” — Intel 英特尔 NUC5PPYH 微型电脑...
  18. Baxter的Gazebo仿真环境搭建
  19. 【今日头条】【实习】放出一大波职位
  20. MBA案例分析(人员培训五)

热门文章

  1. Python-UDP编程
  2. C语言范例学习03-上
  3. php 5.3连接mssql2005以上版本的数据库
  4. vue使用node-sass@4.9.0时,npm intall出错
  5. Windows中安装Electron说明
  6. csdn 博客添加目录方法
  7. JavaWeb之得到web应用中的资源文件
  8. java query dsl_java – QueryDsl – 具有字符串值的case表达式
  9. matlab三维三角网格,有限元分析利用matlab的gplot函数实现三维划分网格的方法
  10. mysql数据库的凭据是什么_使用存储的凭据通过dplyr连接到MySQL数据库