ResNeXt(2017)


文章目录

  • Abstract
  • 1. Introduction
    • former work
    • our work
  • 2. Related Work
    • 多分支卷积网络
    • 分组卷积
    • 压缩卷积网络
    • Ensembling
  • 3. Method
    • 3.1. Template
    • 3.2. Revisiting Simple Neurons
    • 3.3. Aggregated Transformations
    • 3.4. Model Capacity
  • 4. Experiment

原文地址
源代码

Abstract

我们提出了一个简单的、高度模块化的图像分类网络体系结构。我们的网络是通过重复构建块来构建的,该构建块聚合了具有相同拓扑结构的一组变换。我们的简单设计产生了一个同质的、多分支的体系结构,只有几个超参数需要设置。这个策略暴露了一个新的维度,我们称之为“基数”(转换集合的大小),作为深度和宽度维度之外的一个重要因素。在ImageNet-1K数据集上,我们的经验表明,即使在维持复杂性的限制条件下,增加基数也能够提高分类精度。此外**,当我们增加容量时,增加基数比加深或扩大宽度更有效**。我们的模型ResNeXt是我们进入ILSVRC 2016分类任务的基础,我们在该任务中获得了第二名。我们在ImageNet-5K集和COCO检测集上进一步研究了ResNeXt,也显示出比ResNet更好的结果

1. Introduction

视觉识别研究正经历着从“特征工程”到“网络工程”的过渡[25,24,44,34,36,38,14]。与传统的手工设计特征(例如SIFT[29]和HOG[5])相比,神经网络从大规模数据中学习的特征[33]在训练过程中需要最少的人工参与,并且可以转移到各种识别任务中[7,10,28]。然而,人类的努力已经转移到设计更好的网络架构来学习表征
简要介绍了下以前的backbone,并diss了下他们的不足

former work

VGG-nets展示了一种简单而有效的构建深度网络的策略:把相同形状的块堆叠起来
该策略被ResNets[14]继承,ResNets堆叠相同拓扑的模块。这个简单的规则减少了超参数的自由选择,并且深度暴露为神经网络的一个基本维度。此外,我们认为该规则的简单性可以降低对特定数据集过度适应超参数的风险。VGG-nets和ResNets的鲁棒性已被各种视觉识别任务[7,10,9,28,31,14]以及涉及语音[42,30]和语言[4,41,20]的非视觉任务证明
与VGG-nets不同,Inception模型家族[38,17,39,37]已经证明,精心设计的拓扑结构能够以较低的理论复杂性实现令人信服的准确性
Inception模型随着时间的推移而发展[38,39],但是一个重要的共同属性是分裂-转换-合并策略。在Inception模块中,输入被分成几个低维嵌入(通过1×1卷积),由一组专门的过滤器(3×3, 5×5等)进行转换,并通过连接进行合并。可以证明,该体系结构的解空间是运行在高维嵌入上的单个大层(例如5×5)的解空间的严格子空间。Inception模块的拆分-转换-合并行为被期望接近大型和密集层的表示能力,但是在相当低的计算复杂性下

our work

在本文中,我们提出了一个简单的架构,它采用了VGG/ResNets的重复层策略,同时以一种简单、可扩展的方式利用了分裂-转换-合并策略。我们的网络中的一个模块执行一组转换,每个转换都在一个低维嵌入上,其输出通过求和来聚合。我们追求这个想法的一个简单实现——要聚合的转换都是相同的拓扑(例如,图1(右))。这种设计允许我们扩展到任何大量的转换,而无需专门的设计
有趣的是,在这种简化的情况下,我们发现我们的模型还有另外两种等效形式(图3)。图3(b)中的重新表述看起来类似于Inception- ResNet模块[37],因为它连接了多条路径;但是我们的模块与所有现有的Inception模块的不同之处在于,我们所有的路径都共享相同的拓扑结构,因此路径的数量可以很容易地作为一个要研究的因素被隔离出来。在更简洁的重新表述中,我们的模块可以通过Krizhevsky等人的分组卷积(groups convolutions)24进行重塑,然而,这已经被开发为一种工程折衷方案

(a):聚合残差变换,与图1右图相同。(b):相当于(A)的块,作为早期连接实现。©:相当于(A,b)的块,实现为分组卷积[24]。加粗文字的注释突出了重新表述的变化。层表示为(#输入通道,过滤器大小,#输出通道)

我们通过经验证明,即使在保持计算复杂性和模型大小的限制条件下,我们的聚合变换也优于原始ResNet模块——例如,图1(右)的设计是为了保持图1(左)的FLOPs复杂性和参数数量。我们强调,虽然通过增加容量(更深入或更广泛)来提高准确性相对容易,但在保持(或降低)复杂性的同时提高准确性的方法在文献中很少

我们的方法表明,除了宽度和深度的维度外,基数(变换集的大小)是一个具体的、可测量的维度,这是至关重要的。实验表明,增加基数是一种比深度或宽度更有效的获得精度的方法,特别是当深度和宽度开始使现有模型的收益递减时

我们的神经网络,命名为ResNeXt(建议下一个维度),在ImageNet分类数据集上优于ResNet-101/152 [14], ResNet- 200 [15], Inception-v3[39]和Inception-ResNet-v2[37]。特别是,101层的ResNeXt能够达到比ResNet-200更好的精度[15],但只有50%的复杂性。此外,ResNeXt展示了比所有Inception模型更简单的设计。ResNeXt是我们参加ILSVRC 2016分类任务的基础,我们获得了第二名。本文在更大的ImageNet-5K集和COCO对象检测数据集上进一步评估了ResNeXt[27],显示出比ResNet同类产品更好的准确性。我们希望ResNeXt也能很好地推广到其他视觉(和非视觉)识别任务

2. Related Work

多分支卷积网络

Inception模型[38,17,39,37]是成功的多分支架构,其中每个分支都是精心定制的。ResNets[14]可以被认为是一个双分支网络,其中一个分支是身份映射。深度神经决策森林[22]是具有学习分裂函数的树形多分支网络

分组卷积

分组卷积的使用可以追溯到AlexNet论文[24],如果不是更早的话。Krizhevsky等人[24]给出的动机是将模型分布在两个gpu上。分组卷积由Caffe [19], Torch[3]等库支持,主要是为了AlexNet的兼容性。据我们所知,很少有证据表明利用分组卷积来提高准确率。**分组卷积的一种特殊情况是通道型卷积,其中组的数量等于通道的数量。**通道型卷积是[35]中可分离卷积的一部分

压缩卷积网络

分解(在空间[6,18]和/或通道[6,21,16]级别)是一种广泛采用的技术,用于减少深度卷积网络的冗余并加速/压缩它们。Ioannou等人[16]提出了一种“根”模式的网络进行约简计算,根中的分支通过分组卷积实现。这些方法[6,18,21,16]在较低的复杂性和较小的模型尺寸下显示了精度的优雅妥协。而不是压缩,我们的方法是一个架构,经验显示出更强的表征能力

Ensembling

对一组独立训练的网络进行平均是提高准确率的有效解决方案[24],在识别竞赛中被广泛采用[33]。Veit等人[40]将单个ResNet解释为较浅网络的集合,这是由ResNet的加性行为造成的[15]。我们的方法利用加法来聚合一组转换。但我们认为,将我们的方法视为集成是不精确的,因为要聚合的成员是联合训练的,而不是独立训练的。

3. Method

3.1. Template

我们采用高度模块化的VGG/ResNets设计,我们的网络由一堆残差块组成
这些块具有相同的拓扑结构,并且受VGG/ResNets Inception的两个简单规则的约束:(i)如果产生相同大小的空间映射,则块共享相同的超参数(宽度和过滤器大小),并且(ii)每次当空间映射被下采样2倍时,块的宽度(通道数)乘以2倍。第二条规则确保所有块的计算复杂度(以flop(浮点运算,以乘法加的次数计算)为单位)大致相同
有了这两条规则,我们只需要设计一个模板模块,一个网络中的所有模块都可以据此确定。所以这两条规则大大缩小了设计空间,使我们能够专注于几个关键因素。这些规则构建的网络如表1所示,C指的是基数4d指的是通道数为4

3.2. Revisiting Simple Neurons

人工神经网络中最简单的神经元执行内积(加权和),这是由全连接层和卷积层完成的初等变换。内积可以看作是集合变换的一种形式:

式中x = [x 1,x 2,…],x D是神经元的D通道输入向量,w i是第i个通道的滤波器权值。这种操作(通常包括一些非线性输出)被称为“神经元”。见图2

上述操作可以重新转换为拆分、转换和聚合的组合。
(i)分割:将向量x分割为一个低维嵌入,在上面,它是一个一维子空间xi
(ii)变换:对低维表示进行变换,在上面,它被简单地缩放为:wi x i
(iii)聚合:所有嵌入中的转换通过ΣD i=1

3.3. Aggregated Transformations

给定上述对一个简单神经元的分析,我们考虑用一个更一般的函数代替初等变换(wi x i),它本身也可以是一个网络。与“Network-in-Network”[26]相反,我们表明我们的“Network-in-Neuron”沿着一个新的维度扩展。
形式上,我们将聚合转换表示为:

其中Ti (x)可以是任意函数。类似于一个简单的神经元,T i应该将x投射到一个(可选的低维)嵌入中,然后对其进行变换
在公式(2)中,C是要聚合的转换集合的大小。我们将C称为基数[2]。在Eqn.(2)中,C的位置与Eqn.(1)中D的位置相似,但C不必等于D,可以是任意数。虽然宽度的维度与简单变换(内积)的数量有关,但我们认为基数的维度控制着更复杂变换的数量。我们通过实验证明,基数是一个重要的维度,可以比宽度和深度的维度更有效

在本文中,我们考虑了一种设计变换函数的简单方法:所有的T具有相同的拓扑。这扩展了vgg风格的重复相同形状的层的策略,这有助于隔离一些因素并扩展到任何大量的转换。我们将单个转换t1设置为瓶颈形架构[14],如图1(右)所示。在这种情况下,每个t1中的第一个1×1层产生低维嵌入。

Eqn.(2)中的聚合变换作为残差函数14:
与Inception-ResNet的关系:一些张量操作表明,图1(右)中的模块(也显示在图3(a)中)等价于图3(b)。图3(b)与Inception-ResNet[37]块相似,在残差函数中涉及分支和连接。但与所有Inception或Inception- resnet模块不同,我们在多个路径中共享相同的拓扑结构。我们的模块只需要最少的额外工作来设计每条路径
与分组卷积的关系:使用分组卷积的表示法,上述模块变得更加简洁[24]。图3©说明了这种重新配方。所有的低维嵌入(第一个1×1层)都可以被单个更宽的层(例如,图3©中的1×1, 128-d)所取代分裂本质上是由分组卷积层在将其输入通道分成组时完成的。图3©中的分组卷积层每形成32组卷积,其输入输出通道为4维。分组卷积层将它们连接起来作为层的输出。图3©中的块看起来与图1(左)中的原始瓶颈剩余块相似,只是图3©是一个更宽但稀疏连接的模块

我们注意到,只有当块的深度≥3时,重新表述才会产生非平凡拓扑。如果该块的深度为2(例如,[14]中的基本块),则重新表述通常会导致一个宽而密集的模块。如图4所示
讨论:我们注意到,尽管我们提出了显示串联(图3(b))或分组卷积(图3©)的重新表述,但这种重新表述并不总是适用于Eqn(3)的一般形式,例如,如果变换ti采用任意形式并且是异质的。我们在本文中选择使用同质表单,因为它们更简单和可扩展。在这种简化情况下,图3©形式的分组卷积有助于简化实现

3.4. Model Capacity

我们的模型在保持模型复杂性和参数数量的情况下提高了准确性。这不仅在实践中很有趣,更重要的是,参数的复杂性和数量代表了模型的固有能力,因此经常作为深度网络的基本属性进行研究[8]

瓶颈宽度通常指的是ResNeXt中的瓶颈结构中最中间那一层的通道数或特征图的维度。ResNeXt的基本结构由一系列的瓶颈块组成,其中的瓶颈块包含了三个卷积层,中间那一层通常是瓶颈宽度所指的地方。这个瓶颈宽度的选择可以影响模型的复杂度和性能

当我们评估不同的基数C时,同时保持复杂性,我们希望最小化对其他超参数的修改。我们选择调整瓶颈的宽度(例如图1(右)中的4-d),因为它可以与块的输入和输出隔离。这种策略不会改变其他超参数(深度或块的输入/输出宽度),因此有助于我们关注基数的影响
在图1(左)中,原始ResNet瓶颈块[14]具有256·64+3·3·64·64+64·256≈70k参数和比例FLOPs(在相同的特征图大小下)。当瓶颈宽度为d时,我们在图1(右)中的模板具有:
参数和比例FLOPs。当C = 32, d = 4时,Eqn.(4)≈70k。表2显示了基数C和瓶颈宽度d之间的关系

基数和宽度之间的关系(对于conv2的模板),在残差块上大致保留复杂度。对于conv2的模板,参数的数量为~ 70k。FLOPs的数量为~ 2.2亿(conv2的# params×56×56)

因为我们在3.1节中采用了这两个规则,所以上面的近似相等在ResNet瓶颈块和ResNeXt之间的所有阶段都是有效的(除了特征映射大小变化的子采样层)。表1比较了原始的ResNet-50和具有类似容量的ResNeXt-50。我们注意到,复杂性只能近似地保留,但复杂性的差异很小,不会影响我们的结果

4. Experiment





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/207472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【python】vscode中选择虚拟环境venv

vscode 怎么指定 python venv? 在VSCode中选择Python解释器: 打开命令面板:按下 CtrlShiftP(Windows/Linux)或 CmdShiftP(Mac)。在命令面板中,键入 “Python: Select Interpreter”…

14.Java程序设计-基于Springboot的高校社团管理系统设计与实现

摘要 随着高校社团活动的不断丰富和社团数量的逐渐增加,高校社团管理面临着日益复杂的挑战。为了提高社团管理的效率和透明度,本研究基于Spring Boot框架设计并实现了一套高校社团管理系统。该系统旨在整合社团创建、成员管理、活动发布等多个功能&…

水位线和窗口

水位线特点 插入到数据流中的一个标记,可以认为是一个特殊的数据主要内容是一个时间戳水位线是基于数据的时间戳生成的,即事件时间水位线必须单调递增水位线可以通过设置延迟,来保证正确处理乱序数据一个水位线,表示事件时间已经…

[FPGA 学习记录] 数码管动态显示

数码管动态显示 文章目录 1 理论学习1.1 数码管动态扫描显示原理 2 实战演练2.1 实验目标2.2 程序设计2.2.1 框图绘制2.2.2 数据生成模块 data_gen2.2.2.1 波形绘制2.2.2.2 代码编写2.2.2.3 代码编译2.2.2.4 逻辑仿真2.2.2.4.1 仿真代码编写2.2.2.4.2 仿真代码编译2.2.2.4.3 波…

如何解决el-table中动态添加固定列时出现的行错位

问题描述 在使用el-table组件时,我们有时需要根据用户的操作动态地添加或删除一些固定列,例如操作列或选择列。但是,当我们使用v-if指令来控制固定列的显示或隐藏时,可能会出现表格的行错位的问题,即固定列和非固定列…

el-tree数据量过大,造成浏览器卡死、崩溃

el-tree数据量过大,造成浏览器卡死、崩溃 场景:树形结构展示,数据超级多,超过万条,每次打开都会崩溃 我这里采用的是引入新的插件虚拟树,它是参照element-plus 中TreeV2改造vue2.x版本虚拟化树形控件&…

2024年强烈推荐mac 读写NTFS工具Tuxera NTFS for Mac2023中文破解版

大家好啊~今天要给大家推荐的是 Tuxera NTFS for Mac2023中文破解版! 小可爱们肯定知道,Mac系统一直以来都有一个小小的痛点,就是无法直接读写NTFS格式的移动硬盘和U盘。但是,有了Tuxera NTFS for Mac2023,…

正则表达式:字符串处理的瑞士军刀

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

记一次xss通杀挖掘历程

前言 前端时间,要开放一个端口,让我进行一次安全检测,发现的一个漏洞。 经过 访问之后发现是类似一个目录索引的端口。(这里上厚码了哈) 错误案例测试 乱输内容asdasffda之后看了一眼Burp的抓包,抓到的内容是可以发现这是一个…

MuJoCo机器人动力学仿真平台安装与教程

MuJoCo是一个机器人动力学仿真平台,它包括一系列的物理引擎、可视化工具和机器人模拟器等工具,用于研究和模拟机器人的运动和动力学特性。以下是MuJoCo的安装教程: 下载和安装MuJoCo Pro。可以从MuJoCo的官方网站上下载最新版本的安装包。根…

【Python机器学习系列】一文彻底搞懂机器学习中表格数据的输入形式(理论+源码)

一、问题 机器学习或者深度学习在处理表格数据(Tabular data)、图像数据(Image data)、文本数据(Text data)、时间序列数据(Time series data)上得到了广泛的应用。 其中&#xff0c…

微信小程序 - 创建 ZIP 压缩包

微信小程序 - 创建 ZIP 压缩包 场景分享代码片段导入 JSZip创建ZIP文件追加写入文件测试方法参考资料 场景 微信小程序只提供了解压ZIP的API,并没有提供创建ZIP的方法。 当我们想把自己处理好的保存,打包ZIP保存下来时就需要自己实现了。 分享代码片段…

无重复字符的最长子串(LeetCode 3)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一:暴力法方法二:滑动窗口 参考文献 1.问题描述 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 s 由英文字母、数字、符号和空格组成。 示例 1: 输…

基于Java商品销售管理系统

基于Java商品销售管理系统 功能需求 1、商品管理:系统需要提供商品信息的管理功能,包括商品的录入、编辑、查询和删除。每个商品应包含基本信息如名称、编码、类别、价格、库存量等。 2、客户管理:系统需要能够记录客户的基本信息&#xf…

算法:常见的哈希表算法

文章目录 两数之和判断是否互为字符重排存在重复元素存在重复元素字母异位词分组 本文总结的是关于哈希表常见的算法 哈希表其实就是一个存储数据的容器,所以其实它本身的算法难度并不高,只是利用哈希表可以对于一些场景进行优化 两数之和 class Solut…

Michael.W基于Foundry精读Openzeppelin第41期——ERC20Capped.sol

Michael.W基于Foundry精读Openzeppelin第41期——ERC20Capped.sol 0. 版本0.1 ERC20Capped.sol 1. 目标合约2. 代码精读2.1 constructor() && cap()2.2 _mint(address account, uint256 amount) 0. 版本 [openzeppelin]:v4.8.3,[forge-std]&…

AI智能降重软件大全,免费最新AI智能降重软件

在当今信息爆炸的时代,内容创作者们面临着巨大的写作压力,如何在保持高质量的前提下提高效率成为摆在许多人面前的难题。AI智能降重软件因其独特的算法和功能逐渐成为提升文案质量的得力助手。本文将专心分享一些优秀的AI智能降重软件。 147SEO改写软件 …

云贝教育 |【技术文章】PostgreSQL中误删除数据怎么办(一)

原文链接:【PostgreSQL】PostgreSQL中误删除数据怎么办(一) - 课程体系 - 云贝教育 (yunbee.net) 在我们学习完PG的MVCC机制之后,对于DML操作,被操作的行其实并未被删除,只能手工vacuum或自动vacuum触发才会…

【分享】我想上手机器学习

目录 前言 一、理解机器学习 1.1 机器学习的目的 1.2 机器学习的模型 1.3 机器学习的数据 二、学习机器学习要学什么 2.1 学习机器学习的核心内容 2.2 怎么选择模型 2.3 怎么获取训练数据 2.4 怎么训练模型 三、机器学习的门槛 3.1 机器学习的第一道门槛 3.2 机器…

最新版IDEA专业版大学生申请免费许可证教学(无需学校教育邮箱+官方途径+非破解手段)

文章目录 前言1. 申请学籍在线验证报告2. 进入IDEA官网进行认证3. 申请 JB (IDEA) 账号4. 打开 IDEA 专业版总结 前言 当你进入本篇文章时, 你应该是已经遇到了 IDEA 社区版无法解决的问题, 或是想进一步体验 IDEA 专业版的强大. 本文是一篇学生申请IDEA免费许可证的教学, 在学…