CVPR17(backbone) - ResNeXt : 引入网络设计中的新维度cardinality

2023-11-19

论文全称:Aggregated Residual Transformations for Deep Neural Network

原文地址

原文地址

论文阅读方法

三遍论文法

初识

在之前的工作中,网络设计更多考虑的是如何在深度、宽度等维度上优化,而本文引入了一种新的维度:势(cardinality)。简单的理解,就是在同一个网络块(block)中输入特征经过了不同的转换后聚合,这个过程中,转换的数量就称之为。并基于ResNet提出一种新型结构ResNeXt,意为the next dimension

关于cardinality的翻译参照集合中定义:就是集合中元素的个数

如下图所示,左边是ResNet的bottleneck,右边是引入新维度后的设计,其中对输入有32条不同的转换通路,因此势为32。
在这里插入图片描述
其实这种split-transform-merge的策略早就出现了,在Inception(Googlenet)中,每个网络块会将输入特征送入不同的转换后,再进行融合。但ResNext为了进一步研究的影响,简化了网络设计,在每条通路上采用相同的网络结构(转换策略),如上图所示。

并且作者通过实验证明,ResNext在相同的参数和计算量设定下,性能优于ResNet。此外,相比于增加网络的深度和宽度来提升准确的,增加网络的势可能更有效。

相知

只介绍主要技术,以及提及部分实验

网络设计原则
为了减少网络设计过程中的考虑因素范围,作者参照VGG/ResNet,确定了两条设计原则:① 在同一尺寸的特征图转换过程中,网络块采用相同的模块设计(宽度、卷积和大小等);② 如果特征图进行了2倍下采样,那么宽度增加到2倍。

宽度即为channel

模块构建策略
在这里插入图片描述
关于如何构建,首先图(a)中就是最初始的想法,依据ResNet模块进行改进,将输入送入若干个分支中(每个分支中的模块设计一致),然后对各分支的输出结果进行融合(相加),最后再引入一个残差连接。

图(b)相对于图(a)提前进行了concat操作,再统一进行1x1卷积。但其实图(a)与图(b)其实是等价的,假设势为2时,图(a)中x1,x2分别与w1,w2进行1x1卷积再concat,类似于x1·w1+x2·w2。而图(b)相当于在先拼接[x1,x2]再与[w1; w2]进行卷积,同样也是x1·w1+x2·w2

图(c ) 则进一步采用了分组卷积,将输入通道和输出通道分称C组,然后对每组特征图分别执行卷积操作。相比于(a)(b),这种方式更加有效,也使得实现变得更为简洁,将split-transform-merige用分组卷积实现,组数即为

但这种模块设计的等价转换局限于:每条分支都是相同的模块设计(同构的);模块的深度要大于2(换成basic block就不适用了)

具体设计
文章的目的主要是为了研究的影响,因此网络设计不额外增加参数量与计算复杂度(FLOPs)。

作者分析,在原始的ResNet中,一个block的参数量为:256*64+3*3*64*64+64*256≈70k。假设ResNext的为C,每个分支的宽度为d,参数量为:C*(256*d+3*3*d*d+d*256)。由于两个模块处理的特征图尺寸一致,所以计算量也与之成比例。

为了使得接近一致,Cd的可选取值如下:
在这里插入图片描述
实验
① 与ResNet对比:相同的复杂度和计算量,效果优于ResNet。
在这里插入图片描述
② 深度、宽度、势的对比:控制复杂度和计算量,对这几个维度进行消融实验,证明通过增大会更有效。
在这里插入图片描述

回顾

ResNext发表于CVPR2017,如果不看文章内容,只看网络结构,你可能觉得不就是再ResNet的架构上引入了一个分组卷积嘛。但只有看了文章才体会其中的设计思想,何大佬的工作总是这么简单有效。

这篇文章相比于Inception在同一模块中采用不同的分支提取不同特征(作者认为这提取到不同感受野下的特征),大胆地采用同构设计,从而转换成采用分组卷积实现。取得了不错的效果,并且理论立意上着实高!

代码

关于代码的实现,其实就是将ResNet中的模块改为分组卷积,可以参照Pytorch的官方实现(就是在rennet中添加了相关参数设置)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CVPR17(backbone) - ResNeXt : 引入网络设计中的新维度cardinality 的相关文章

  • Maven中:可以被子模块继承的元素

    即使是长期从事 Maven 工作的开发人员也不能完全掌握聚合 多模块 和 Parent 继承的关系 在使用多模块时 子模块总要指定聚合的 pom 为
  • Linux中如何修改文件或目录的权限?

    在Linux系统中 文件权限是非常重要的一个概念 它能够决定谁可以访问文件 以及可以执行哪些操作 正确地设置文件权限可以确保系统的安全性和稳定性 那么如何设置文件权限呢 以下是详细的内容 在 Linux 系统中 可以使用 chmod 命令来

随机推荐

  • unity中的一些快捷键(齐)

    重命名的快捷键是F2 ALT 鼠标左键点击Hierarchy对象可以展开和收起对象的所有子物体 SHIFT 空格 可以对当前窗口进行放大缩小
  • 部署docker

    1 移除之前安装过的Docker sudo yum y remove docker docker client docker client latest docker common docker latest docker latest l
  • maven怎么引入jdom_如何在Maven项目中引入自己的jar包

    1 一般情况下jar包都可以使用pom xml来配置管理 但也有一些时候 我们项目中使用了一个内部jar文件 但是这个文件我们又没有开放到maven库中 我们会将文件放到我们项目中 以下以java工程为例随便放了个地方 2 jar包的引入和
  • RK3308 Ubuntu16.04移植

    一 概述 本章将介绍Ubuntu在RK平台上的移植以及AP配网 常用的fs为buildroot编译出来的linux文件系统 而本次则是ubuntu文件系统 系统启动后需要手动对WIFI驱动进行加载并配网 二 配置Kernel 为了支持ubu
  • python requests 爬虫--爬取HTML源码不显示正文已解决

    爬虫第一步 获取整个网页的HTML信息 源代码如下 coding UTF 8 import requests if name main target https www biqukan com 1 1094 5403177 html req
  • Wireshark过滤规则及使用方法

    前言 我看到的这篇文章是转载的 但我也不知道他是从哪转载的 o 转自 Wireshark 基本语法 基本使用方法 及包过滤规则 1 过滤IP 如来源IP或者目标IP等于某个IP 例子 ip src eq 192 168 1 107 or i
  • Java基础:常用类Compare

    Compare类 Comparable接口 自然排序 1 像String 包装类等实现了Comparable接口 重写了compareTo 方法 2 String 包装类重写了compareTo 方法后 进行了从小到大的排列 Test pu
  • Linux内核内存管理算法Buddy和Slab

    文章目录 Buddy分配器 CMA Slab分配器 总结 Buddy分配器 假设这是一段连续的页框 阴影部分表示已经被使用的页框 现在需要申请一个连续的5个页框 这个时候 在这段内存上不能找到连续的5个空闲的页框 就会去另一段内存上去寻找5
  • AtCoder Beginner Contest 169 B Multiplication 2 long long竟然不够用

    AtCoder Beginner Contest 169 比赛人数11374 比赛开始后15分钟看到A题 在比赛开始后第20分钟看到所有题 AtCoder Beginner Contest 169 B Multiplication 2 lo
  • OpenGL ES 2.0升级到3.0配置win32环境以及编译所遇bug

    安装win32平台的OpenGL ES 3 0模拟器 一 安装3 0模拟器 一般用32位的 https developer arm com products software development tools graphics devel
  • ctfshow-网络迷踪-初学再练( 一座雕像判断军事基地名称)

    ctf show 网络迷踪第4关 题目中只有一座雕像 需要根据雕像提交军事基地的名称 推荐使用谷歌识图 溯源到一篇博客 答案就在文章标题中 给了一座雕像 看样子不像是国内的风格 扔谷歌识图找找线索 访问谷歌识图 根据图片搜索 https w
  • kubernetes常见异常处理

    一 kubernetes常见Pod异常状态的处理 一 一般排查方式 无论 Pod 处于什么异常状态 都可以执行以下命令来查看 Pod 的状态 kubectl get pod
  • 拉格朗日乘数法

    拉格朗日乘数法
  • attention(注意力机制)原理和pytorch demo

    目录 说明 RNN的局限性 注意力机制原理 注意力机制实现 第一步 编码 第二步 第0次打分并解码 第三步 第1次打分并解码 Demo链接和结果分析 总结 改进 说明 demo源自吴恩达老师的课程 从tensorflow修改为pytorch
  • Selenium成长之路-01如何开始学习

    为什么最近要写selenium 是因为最近有不少同事问我关于selenium的问题 所以觉得有必要来写一篇selenium 从环境搭建到框架构成都写出来 也分享一下我的selenium的点点经验 有不足之处 欢迎吐槽 学习selenium之
  • 区块链技术是如何应用到版权维护上?

    随着视频和音乐行业的迅速发展 数字出版已经形成完整的产业链 带来一些可观的收入 但是也伴随侵权的现象发生 那么区块链技术怎么运用到作品版权保护上呢 1 时间戳 我们知道区块链有一个 时间戳 这个可信时间戳由权威机构签发 能证明数据电文在一个
  • 我的百度经验目录

    百度经验目录 进一步了解基于Mathematica的图像特征检测方法 http jingyan baidu com article a501d80c44a372ec630f5eb4 html 怎么把python代码打包成exe文件 http
  • Obsidian入门

    这里讲一下Obsidian 一款支持markdown语法的笔记软件 软件上手没有难度 会基本的markdown语法可以直接使用 但是Obsidian第三方库插件社区提供了近千种插件以及各种各样的主题 可以帮助用户更好的使用它 相信很多人都跟
  • Python 导出保存 MongoDB上数据到Excel(.xls和.csv)文件

    Python 中使用MongoDB存储数据 若需要导出数据到文件 可以使用pandas或xlwings导出到Excel xls和 csv 文件 本文主要介绍Python 中导出保存MongoDB上数据到Excel xls和 csv 文件的方
  • CVPR17(backbone) - ResNeXt : 引入网络设计中的新维度cardinality

    文章目录 原文地址 论文阅读方法 初识 相知 回顾 代码 论文全称 Aggregated Residual Transformations for Deep Neural Network 原文地址 原文地址 论文阅读方法 三遍论文法 初识