ResNeXt(2017)

news2024/11/27 20:22:27


文章目录

  • 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.coloradmin.cn/o/1295977.html

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

相关文章

vuepress-----18、图片缩放

图片引入两种方式 地址 # 图片缩放插件 # 实战 md文件引入图片 <img class"zoom-custom-imgs" :src"$withBase(/favicon.ico)" alt"favicon">安装配置插件 vuepress/medium-zoom: {selector: img.zoom-custom-imgs,},效果展示

LVS-DR+Keepalived+动静分离实验

架构图 解释一下架构&#xff0c;大概就是用Keepalived实现两台DR服务器的LVS负载均衡&#xff0c;然后后端服务器是两台Nginx服务器两台Tomcat服务器并且实现动静分离这个实验其实就是把 LVS-DRKeepalived 和 动静分离 给拼起来&#xff0c;真的是拼起来&#xff0c;两个部分…

MVCC是什么

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

关于什么是 JVM

关于什么是 JVM&#xff0c;看看普通⼈和⾼⼿的回答。 普通人 JVM 就是 Java 虚拟机&#xff0c;是⽤来运⾏我们平时所写的 Java 代码的。优点是它会 ⾃动进⾏内存管理和垃圾回收&#xff0c;缺点是⼀旦发⽣问题&#xff0c;要是不了解 JVM 的运⾏ 机制&#xff0c; 就很难…

网工内推 | 外企、合资公司急招网工,国内外旅游,健身年卡

01 深圳市耐施菲信息科技有限公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、负责项目的计划、实施、过程管控、项目验收等工作&#xff1b; 2、负责大型项目设备实施、安装调试等售后维护工作&#xff1b; 3、分析、设计网络拓扑结构、配置H3C、华为等交换机…

扁平的MutableList元素每隔若干元素一组装入新MutableList,Kotlin

扁平的MutableList元素每隔若干元素一组装入新MutableList&#xff0c;Kotlin fun main(args: Array<String>) {val array arrayOf("a", "b", "c", "d", "e", "f", "g", "h", "i…

Linux设置root初始密码

目录 一、Linux系统中普通用户和特权用户&#xff08;root&#xff09; 二、Linux系统中设置root初始密码 一、Linux系统中普通用户和特权用户&#xff08;root&#xff09; windows 系统中有普通用户和特权用户&#xff0c;特权用户是 administer&#xff0c;普通用户可以…

Qt练习题

1.使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否…

个人信息展示网站需求分析报告

目录 一. 概述1.1 设计目的1.2 术语定义 二. 需求分析三. 系统功能需求3.1 功能总览3.2 业务流程图1.系统用例图2.系统流程 四.开发技术4.1 技术组成 五.界面及运行环境1.用户界面2.运行环境 一. 概述 1.1 设计目的 兴趣使然。将知识点综合运用。CSDN有功能限制&#xff0c;因…

【LeetCode】692. 前K个高频单词

692. 前K个高频单词 描述示例解题思路及事项思路一思路二 描述 给定一个单词列表 words 和一个整数 k &#xff0c;返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率&#xff0c; 按字典顺序 排序 示例 示例1 输…

基于YOLOv7算法和Caltech数据集的高精度行人目标检测识别系统(PyTorch+Pyside6+YOLOv7)

摘要&#xff1a;基于YOLOv7算法和Caltech数据集的高精度行人目标检测系统可用于日常生活中检测与定位行人目标&#xff0c;此系统可完成对输入图片、视频、文件夹以及摄像头方式的目标检测与识别&#xff0c;同时本系统还支持检测结果可视化与导出。本系统采用YOLOv7目标检测算…

宁盾统一身份中台助力某集团公司实现统一身份认证和管理(如泛微OA、微软AD)

某集团公司是一家以钢铁为主业&#xff0c;涉足互联网金融、文化健康、智慧城市、现代物流等多领域的大型现代化企业集团。创业发展已有三十余年&#xff0c;拥有员工人数超万人&#xff0c;为了提升管理效率&#xff0c;同时实现国产化创新和数字化转型&#xff0c;公司采用了…

大一python题库及答案,大一python期末必考题

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;大一python题库及答案&#xff0c;大一python期末必考题&#xff0c;今天让我们一起来看看吧&#xff01; 本篇文章给大家谈谈大一python题库及答案&#xff0c;以及大一python期末必考题&#xff0c;希望对各位有所帮助…

排序算法-插入/希尔排序

1 插入排序 1.1基本思想&#xff1a; 直接插入排序是一种简单的插入排序法&#xff0c;其基本思想是&#xff1a;把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为止&#xff0c;得到一个新的有序序列 。 1.2直…

Si24R03—低功耗 SOC 芯片(集成RISC-V内核+2.4GHz无线收发器)

Si24R03是一款高度集成的低功耗SOC芯片&#xff0c;其集成了基于RISC-V核的低功耗MCU和工作在2.4GHz ISM频段的无线收发器模块。 MCU模块具有低功耗、Low Pin Count、宽电压工作范围&#xff0c;集成了13/14/15/16位精度的ADC、LVD、UART、SPI、I2C、TIMER、WUP、IWDG、RTC等丰…

12月8日作业

题目&#xff1a; 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&am…

【超详细教程】FL Studio 21中文破解版,让你的音乐制作更出彩啦!

嗨小仙女们&#xff01;今天小助理要跟大家分享一个超赞的消息&#xff01;你们知道吗&#xff0c;FL Studio 21中文破解版终于来啦&#xff01; FL Studio 21是一款超级火爆的音乐制作软件&#xff0c;不仅功能强大&#xff0c;而且操作简单&#xff0c;适合各种水平的音乐制…

Python Django-allauth: 构建全面的用户身份验证系统

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Django-allauth是一个功能强大的Django插件&#xff0c;旨在简化和定制Web应用程序中的用户身份验证和管理。本文将深入介绍Django-allauth的核心功能、基本用法以及实际应用场景&#xff0c;通过丰富的示例代码…

【数据结构】插入排序,希尔排序,选择排序,堆排序,冒泡排序

1.插入排序 思路&#xff1a;插入排序将一个数插入一个有序的数组里面&#xff0c;将这个数和数组元素挨着比较&#xff0c;直到他插入到合适的位置。 动画演示&#xff1a; 步骤&#xff1a;1.定义一个变量tmp保存要插入的数据 2.在循环中用tmp和有序数组中的元素比较&#…

SpringBoot Seata 死锁问题排查

现象描述&#xff1a;Spring Boot项目&#xff0c;启动的时候卡住了&#xff0c;一直卡在那里不动&#xff0c;没有报错&#xff0c;也没有日志输出 但是&#xff0c;奇怪的是&#xff0c;本地可以正常启动 好吧&#xff0c;姑且先不深究为什么本地可以启动而部署到服务器上就无…