Res2Net网络

Res2Net网络

  • 摘要
  • Abstract
  • 1. Res2Net网络
    • 1.1 文献摘要
    • 1.2 背景
    • 1.3 创新点
    • 1.4 网络结构
    • 1.5 实验
      • 1.5.1 在ImageNet数据集上进行实验
      • 1.5.2 在CIFAR数据集上进行实验
  • 2. Res2Net代码实现
  • 3. 总结

摘要

Res2Net是一种神经网络架构,旨在改善类似ResNet的网络在计算机视觉任务中的性能,特别是在图像分类方面,Res2Net的关键思想是改变网络中特征聚合的方式,从而实现更有效的不同部分之间的信息交换,在标准的ResNet块中,特征在空间维度(高度和宽度)和通道维度上独立地聚合。相比之下,Res2Net引入了一种新的特征图分割操作,沿着通道维度将输入特征图分成多个组。这样可以进行跨组特征聚合,使网络能够捕获更丰富的空间信息。本文将详细介绍Res2Net。

Abstract

Res2Net is a neural network architecture designed to improve the performance of ResNet-like networks in computer vision tasks, especially in image classification.The key idea of Res2Net is to change the way features are aggregated in the network to enable more efficient exchange of information between the different parts of the network.In standard ResNet blocks, features are aggregated in the spatial dimension (height and width) and the channel dimensions are aggregated independently. In contrast, Res2Net introduces a new feature map segmentation operation that divides the input feature map into groups along the channel dimension. This allows cross-group feature aggregation and enables the network to capture richer spatial information. In this paper, we describe in detail the Res2Net.

1. Res2Net网络

文献出处:Res2Net: A New Multi-Scale
Backbone Architecture

1.1 文献摘要

在多个尺度上表示特征对于许多视觉任务非常重要。主干卷积神经网络 (CNN) 的最新进展不断展现出更强的多尺度表示能力,从而在广泛的应用中实现一致的性能提升。 然而,大多数现有方法以分层方式表示多尺度特征。 在本文中,作者提出了一种新颖的 CNN 构建块,即 Res2Net,通过在单个残差块内构建分层的类残差连接,Res2Net 在粒度级别上表示多尺度特征,并增加了每个网络层的感受野范围。 所提出的 Res2Net 模块可以插入最先进的骨干 CNN 模型,例如 ResNet、ResNeXt 和 DLA。

1.2 背景

自然场景中的视觉图案以多尺度出现。

  1. 单个图像中的物体可能会出现不同的尺寸,例如沙发和杯子的尺寸不同。
  2. 对象的基本上下文信息可能占据比对象本身大得多的区域。 例如,我们需要依靠大桌子作为上下文来更好地判断放在上面的黑色小斑点是杯子还是笔架。
  3. 从不同尺度感知信息对于理解细粒度分类和语义分割等任务的部件和对象至关重要。

因此,为视觉认知任务的多尺度刺激设计良好的特征至关重要。在视觉任务中获得多尺度表示需要特征提取器使用大范围的感受野来描述不同尺度的对象/部分/上下文。 卷积神经网络(CNN)通过一堆卷积算子自然地学习从粗到细的多尺度特征,CNN 固有的多尺度特征提取能力可以有效地表示解决众多视觉任务。

1.3 创新点

在这项工作中,我们提出了一种简单而有效的多尺度处理方法,与大多数增强 CNN 分层多尺度表示强度的现有方法不同,我们在更细粒度的级别上提高了多尺度表示能力。

与通过利用不同分辨率的特征来提高多尺度能力不同,作者方法的多尺度是指更细粒度的多个可用感受野 。

作者用一组较小的滤波器组替换了 n 个通道的 3*3 个滤波器,每个滤波器组有 w 个通道。 如图 2 所示,这些较小的滤波器组以分层残差样式连接,以增加输出特征可以表示的尺度数量。

我们将输入特征图分为几组。 一组过滤器首先从一组输入特征图中提取特征。 然后,前一组的输出特征与另一组输入特征图一起发送到下一组过滤器。 这个过程重复几次,直到处理完所有输入特征图。 最后,来自所有组的特征图被连接并发送到另一组 11 过滤器以完全融合信息。 连同输入特征转换为输出特征的任何可能路径,每当通过 33 滤波器时,等效感受野都会增加,从而由于组合效应而产生许多等效特征尺度。如下图
在这里插入图片描述
作者所提出的方法在更细粒度的级别上利用了多尺度潜力,Res2Net 模块可以轻松插入到许多现有的 CNN 架构中。

1.4 网络结构

上图显示了Bottleneck模块和所提出的 Res2Net 模块之间的差异。 经过 1 * 1 卷积后,将特征图均匀地分割为 s s s个特征图子集,用 x i x_i xi 表示,其中 i ∈ { 1 , 2 , . . . , s } i\in \left \{ 1,2,...,s \right \} i{1,2,...,s}。 每个特征子集 x i x_i xi 具有相同的空间大小,但与输入特征图相比,通道数为 1/s。 除 x 1 x_1 x1 外,每个 x i x_i xi 都有对应的 3 * 3 卷积,记为 K i ( ) K_i() Ki()。 我们用 y i y_i yi 表示 K i ( ) K_i() Ki() 的输出。 特征子集 x i x_i xi K i − 1 ( ) K_{i-1}() Ki1() 的输出相加,然后输入 K i ( ) K_{i}() Ki()。 为了在增加 s 的同时减少参数,我们省略了 x 1 x_1 x1 的 3 * 3 卷积。 y i y_i yi 可以写成
在这里插入图片描述
每个 3 * 3 卷积算子 K i ( ) K_i() Ki() 都可能从所有特征分割 x j , { j < i } x_{j},\left \{ j<i \right \} xj,{j<i} 接收特征信息。 每次特征分割 x j x_j xj 经过 3×3 卷积算子时,输出结果可以具有比 x j x_j xj 更大的感受野。 由于组合爆炸效应,Res2Net模块的输出包含不同数量和不同组合的感受野大小/尺度。
在这里插入图片描述

在Res2Net模块中,分割以多尺度方式处理,这有利于全局和局部信息的提取。 为了更好地融合不同尺度的信息,我们连接所有分割并将它们传递给 1 * 1 卷积。 分割和串联策略可以强制卷积以更有效地处理特征。 为了减少参数数量,作者省略了第一次分割的卷积,这也可以看作是特征重用的一种形式。

1.5 实验

作者使用 Pytorch 框架实现所提出的模型,使用 ResNet、ResNeXt、DLA 以及 bLResNet-50 的 Pytorch 实现,并且仅用提出的 Res2Net 模块替换原始瓶颈块。 与之前的工作类似,在 ImageNet 数据集上,每个图像都是从调整大小的图像中随机裁剪的 224 * 224 像素。使用 SGD 在 4 个 Titan Xp GPU 上训练网络,权重衰减为 0.0001,动量为 0.9,小批量为 256。 学习率最初设置为 0.1,每 30 个 epoch 除以 10。

ImageNet 的所有模型(包括基线模型和提出的模型)均使用相同的训练和数据论证策略训练 100 个 epoch。 在 CIFAR 数据集上,我们使用 ResNeXt-29 的实现。 对于所有任务,作者都使用基线的原始实现,并且仅用建议的 Res2Net 替换主干模型。

1.5.1 在ImageNet数据集上进行实验

作者在 ImageNet 数据集上进行了实验,该数据集包含来自 1,000 个类别的 128 万张训练图像和 5 万张验证图像。 我们构建了大约 50 层的模型,用于根据最先进的方法进行性能评估。下表显示了 ImageNet 数据集上的 t o p − 1 top^{-1} top1 t o p − 5 top^{-5} top5 测试误差。
在这里插入图片描述
与 ResNet-50 相比,Res2Net-50 的 t o p − 1 top^{-1} top1 误差降低了 1.84%。 与 ResNeXt-50 相比,Res2NeXt-50 在 t o p − 1 top^{-1} top1 错误方面实现了 0.85% 的改进。 此外,Res2Net-DLA60 在 t o p − 1 top^{-1} top1 错误方面比 DLA-60 高 1.27%。 就 t o p − 1 top^{-1} top1 误差而言,Res2NeXt-DLA-60 的性能比 DLA-X-60 高出 0.64%。 SE-Res2Net-50 比 SENet-50 提高了 1.68%。 bLRes2Net-50 与 bLResNet-50 相比, t o p − 1 top^{-1} top1 错误率提高了 0.73%。

Res2Net 模块进一步增强了 bLResNet 在粒度级别的多尺度能力,即使 bLResNet 被设计为利用不同尺度的特征,ResNet、ResNeXt 、SE-Net 、bLResNet 和 DLA 是最先进的 CNN 模型。 与这些强大的基线相比,那些与 Res2Net 模块集成的模型仍然具有一致的性能增益。

1.5.2 在CIFAR数据集上进行实验

作者也在 CIFAR-100 数据集上进行了一些实验,其中包含 50k 训练图像和 10k 测试图像。
在这里插入图片描述
上表显示了 CIFAR-100 数据集上的 t o p − 1 top^{-1} top1 测试误差和模型大小。 实验结果表明,我们的方法超越了基线和其他参数较少的方法。

2. Res2Net代码实现

import torch
import torch.nn as nn
import torch.nn.functional as function


class Res2NetBlock(nn.Module):
    def __init__(self, inplanes, outplanes, scales=4):
        super(Res2NetBlock, self).__init__()

        if outplanes % scales != 0:  # 输出通道数为4的倍数
            raise ValueError('Planes must be divisible by scales')

        self.scales = scales
        # 1*1的卷积层
        self.inconv = nn.Sequential(
            nn.Conv2d(inplanes, 32, 1, 1, 0),
            nn.BatchNorm2d(32)
        )
        # 3*3的卷积层,一共有3个卷积层和3个BN层
        self.conv1 = nn.Sequential(
            nn.Conv2d(8, 8, 3, 1, 1),
            nn.BatchNorm2d(8)
        )
        self.conv2 = nn.Sequential(
            nn.Conv2d(8, 8, 3, 1, 1),
            nn.BatchNorm2d(8)
        )
        self.conv3 = nn.Sequential(
            nn.Conv2d(8, 8, 3, 1, 1),
            nn.BatchNorm2d(8)
        )
        # 1*1的卷积层
        self.outconv = nn.Sequential(
            nn.Conv2d(32, 32, 1, 1, 0),
            nn.BatchNorm2d(32),
            nn.ReLU(inplace=True)
        )

    def forward(self, x):
        input = x
        x = self.inconv(x)

        # scales个部分
        xs = torch.chunk(x, self.scales, 1)
        ys = []
        ys.append(xs[0])
        ys.append(function.relu(self.conv1(xs[1])))
        ys.append(function.relu(self.conv2(xs[2]) + ys[1]))
        ys.append(function.relu(self.conv2(xs[3]) + ys[2]))
        y = torch.cat(ys, 1)

        y = self.outconv(y)
        
        output = function.relu(y + input)

        return output

3. 总结

本文提出了一个简单而高效的模块,即 Res2Net,以在更细粒度的级别上进一步探索 CNN 的多尺度能力。 Res2Net暴露了一个新的维度,即“尺度”,它是除了现有的深度、宽度和基数维度之外的一个重要且更有效的因素。Res2Net 模块可以毫不费力地与现有的最先进的方法集成。 CIFAR-100 和 ImageNet 基准的图像分类结果表明,这个新的主干网络始终优于最先进的竞争对手,包括 ResNet、ResNeXt、DLA 等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vscode开发 vue3+ts 的 uni-app 微信小程序项目

创建uni-app项目&#xff1a; # 创建用ts开发的uni-app npx degit dcloudio/uni-preset-vue#vite-ts 项目名称 # 创建用js开发的uni-app npx degit dcloudio/uni-preset-vue#vite 项目名称VS Code 配置 为什么选择 VS Code &#xff1f; HbuilderX 对 TS 类型支持暂不完善VS…

unity记一下如何播放动画

我使用的版本是2022.3.14fc 展开你的模型树&#xff0c;是会出现这个三角形的东西的 然后在资源面板创建一个animation controller 进去之后&#xff0c;把三角形拖进去&#xff0c;就会出现一个动画&#xff0c;然后点击他 在左侧给他创建这么个状态名字&#xff0c;类型…

AskManyAI:一个GPT、Claude、Gemini、Kimi等顶级AI的决斗场

一直以来很多人问我能不能有个稳定&#xff0c;不折腾的全球AI大模型测试网站&#xff0c;既能够保证真实靠谱&#xff0c;又能够保证稳定、快速&#xff0c;不要老动不动就挂了、出错或者漫长的响应。 直到笔者遇到了AskManyAI&#xff0c;直接就惊艳住了&#xff01; 话不多…

第17天:信息打点-语言框架开发组件FastJsonShiroLog4jSpringBoot等

第十七天 本课意义 1.CMS识别到后期漏洞利用和代码审计 2.开发框架识别到后期漏洞利用和代码审计 3.开发组件识别到后期漏洞利用和代码审计 一、CMS指纹识别-不出网程序识别 1.概念 CMS指纹识别一般能识别到的都是以PHP语言开发的网页为主&#xff0c;其他语言开发的网页识…

springboot-tomcat冲突

maven tomcat版本冲突异常 记录一个错误 在项目启动时报错&#xff1a; java.lang.AbstractMethodError: org.apache.tomcat.websocket.server.WsSessionListener.sessionCreated(Ljavax/servlet/http/HttpSessionEvent;)V 引入Session报错。 原因&#xff1a;Springboot默…

数据仓库—维度建模—维度表设计

维度表 维度表(Dimension Table)是数据仓库中描述业务过程中各种维度信息的表,用于提供上下文和描述性信息,以丰富事实数据的分析 维度表是维度建模的灵魂所在,在维度表设计中碰到的问题(比如维度变化、维度层次、维度一致性、维度整合和拆分等)都会直接关系到维度建模…

基于R语言实现的负二项回归模型【理解与实现】-理解负二项回归模型和泊松回归模型之间的区别

前言 我们可以在R语言中使用MASS包中的glm.nb函数来拟合负二项模型&#xff0c;以及使用glm函数来拟合泊松模型。以下是一个详细的过程&#xff0c;包括模拟数据的生成、模型的拟合、结果的比较和解释。 需要的包 if (!require("MASS")) install.packages("M…

【Leetcode每日一题】 分治 - 颜色分类(难度⭐⭐)(57)

1. 题目解析 题目链接&#xff1a;75. 颜色分类 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 算法思路解析 本算法采用三指针法&#xff0c;将数组划分为三个区域&#xff0c;分别用于存放值为0、1和2的元素。通过…

CentOS 7安装Zookeeper

说明&#xff1a;本文介绍如何在CentOS 7操作系统下使用Zookeeper 下载安装 首先&#xff0c;去官网下载所需要安装的版本&#xff0c;我这里下载3.4.9版本&#xff1b; 上传到云服务器上&#xff0c;解压 tar -xvf zookeeper-3.4.9.tar.gz修改配置 进入Zookeeper目录下的co…

3. 安装arrach结构的Mysql

提示&#xff1a;arm的centos上面安装arrach结构的Mysql 文章目录 前言一、查看已经安装过的并卸载mysql二、创建mysql用户组1.设置用户组2. 安装3.设置启动4.查看密码5.修改登录密码6.授权7.修改连接8.设置参数 常见问题排查1. 启动失败查看&#xff1a;2. 用户操作3. 踩坑解决…

【已开源】​基于stm32f103的爬墙小车

​基于stm32f103的遥控器无线控制爬墙小车&#xff0c;实现功能为可平衡在竖直墙面上&#xff0c;并进行移动和转向&#xff0c;具有超声波防撞功能。 直接上&#xff1a; 演示视频如&#xff1a;哔哩哔哩】 https://b23.tv/BzVTymO 项目说明&#xff1a; 在这个项目中&…

Unity 2D让相机跟随角色移动

相机跟随移动 最简单的方式通过插件Cinemachine 在窗口/包管理器选择全部找到Cinemachine&#xff0c;导入。然后在游戏对象/Cinemachine创建2D Camera。此时层级中创建一个2D相机。选中人物拖入检查器Follow。此时相机跟随人物移动。 修改相机视口距离 在检查器中Lens下调正…

linux学习:文件属性

在操作文件的时候&#xff0c;经常需要获取文件的属性&#xff0c;比如类型、权限、大小、所有者等等&#xff0c; 这些信息对于比如文件的传输、管理等是必不可少的&#xff0c;而这些信息 这三个函数的功能完全一样&#xff0c;区别是&#xff1a;stat( )参数是一个文件的名字…

UI设计/交互设计/视觉设计项目汇报/作品集Figma/PPT模板

作为UI设计/交互设计/视觉设计师&#xff0c;创建作品集对于向潜在客户或雇主展示您的技能、创造力和风格至关重要。以下分步指南可帮助您创建令人印象深刻的作品集&#xff1a; 选择您的最佳作品&#xff1a;选择您最强大且最相关的设计项目&#xff0c;将其纳入您的作品集。…

Java应用中文件上传安全性分析与安全实践

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 一. 文件上传的风险 二. 使用合适的框架和库 1. Spr…

CCF区块链论文录用资讯--ICDE 2024

ICDE是CCF A类会议 (数据库&#xff0f;数据挖掘&#xff0f;内容检索) 其2024录用了8篇区块链论文 Database technology for Blockchains I Efficient Partial Order Based Transaction Processing for Permissioned Blockchains &#xff08;针对许可区块链的高效的基于偏序…

Niobe开发板OpenHarmony内核编程开发——事件标志

本示例将演示如何在Niobe Wifi IoT开发板上使用cmsis 2.0 接口使用事件标志同步线程 EventFlags API分析 osEventFlagsNew() /// Create and Initialize an Event Flags object./// \param[in] attr event flags attributes; NULL: default values./// \return e…

openstack安装dashboard后登录网页显示404错误

1. 2.进入该目录vim /etc/httpd/conf.d/openstack-dashboard.conf 增加这一行 WSGIApplicationGroup %{GLOBAL} 重启httpd后就可以访问了

Devin AI: The World’s First AI Software Engineer

Devin AI是Cognition AI团队推出的一款名为Devin的人工智能软件工程师&#xff0c;它被誉为世界上第一个完全自主的AI软件工程师。Devin AI在2024年3月12日发布&#xff0c;并在SWE-bench编码基准测试中设立了新的技术标杆。 Devin AI具备多项强大的能力&#xff0c;包括学习如…

数据结构与算法——20.B-树

这篇文章我们来讲解一下数据结构中非常重要的B-树。 目录 1.B树的相关介绍 1.1、B树的介绍 1.2、B树的特点 2.B树的节点类 3.小结 1.B树的相关介绍 1.1、B树的介绍 在介绍B树之前&#xff0c;我们回顾一下我们学的树。 首先是二叉树&#xff0c;这个不用多说&#xff…