ResNeSt: Split-Attention Networks论文学习笔记


这张图展示了一个名为“Split-Attention”的神经网络结构,该结构在一个基数组(cardinal group)内进行操作。基数组通常指的是在神经网络中处理的一组特征或通道。图中展示了如何通过一系列操作来实现对输入特征的注意力机制。
以下是图中各部分的解释:
输入层:
图中顶部有多个输入(Input 1, Input 2, …, Input r),这些输入的特征维度为 (h,w,c),其中 h 和 w 分别表示特征图的高度和宽度,c 表示通道数。
特征聚合:
这些输入特征通过一个加法操作(+)聚合成一个特征图,其维度仍然是 (h,w,c)。
全局池化:
聚合后的特征图通过全局池化(Global pooling)操作,将其空间维度(即 h 和 w)压缩为一个单一的值,得到一个维度为 (c,) 的向量。
密集层和激活函数:
这个向量通过一个密集层(Dense c′ + BN + ReLU),其中 c′ 是输出维度,BN 表示批归一化(Batch Normalization),ReLU 是激活函数。这一步的目的是生成一个特征表示 (c′,)。
分割注意力:
特征表示 (c′,) 被分割成多个部分,每个部分通过一个密集层(Dense c)进行处理,生成多个特征向量 (ci,)。
Softmax 操作:
这些特征向量通过一个 r-Softmax 操作,生成一组权重。Softmax 操作将这些特征向量转换为概率分布,表示每个特征的重要性。
加权特征:
这些权重与原始输入特征进行逐元素相乘(×),然后将结果相加(+),得到最终的输出特征图,其维度仍然是 (h,w,c)。
这个结构通过全局池化和密集层生成特征表示,然后通过Softmax操作生成权重,最后将这些权重应用于原始输入特征,以实现对输入特征的注意力机制。图中为了方便可视化,使用了 c=C/K 的表示,其中 C 是总通道数,K 是基数组的数量。

这张图比较了三种不同的神经网络块:SE-Net Block、SK-Net Block 和 ResNeSt Block。每种块都旨在通过不同的方法增强网络的特征提取能力。图中详细展示了这些块的结构和操作流程。
SE-Net Block
输入:特征图尺寸为 (h,w,c)。
操作:
通过一个 1×1 卷积层将通道数减少到 c′。
通过一个 3×3 卷积层进一步处理特征。
再次通过一个 1×1 卷积层恢复通道数到 c。
应用 Split Attention 机制。
最后通过一个加法操作将处理后的特征与原始输入特征相加。
SK-Net Block
输入:特征图尺寸为 (h,w,c)。
操作:
通过一个 1×1 卷积层将通道数减少到 c。
分别通过两个不同大小的卷积核(3×3 和 5×5)处理特征,每个卷积核的输出通道数为 c′,且分组数为 32。
应用 Split Attention 机制。
最后通过一个 1×1 卷积层恢复通道数到 c,并与原始输入特征相加。
ResNeSt Block
输入:特征图尺寸为 (h,w,c)。
操作:
将输入特征分成多个基数组(Cardinal groups),每个基数组包含 r 个特征图。
每个基数组内,特征图被进一步分割成 r 个部分,每个部分通过一个 1×1 卷积层将通道数减少到 c′/k,然后通过一个 3×3 卷积层处理特征。
应用 Split Attention 机制。
将处理后的特征图在每个基数组内进行拼接(Concatenate),然后通过一个 1×1 卷积层恢复通道数到 c。
最后通过一个加法操作将处理后的特征与原始输入特征相加。
总结
SE-Net Block:通过减少和恢复通道数,以及应用 Split Attention 机制来增强特征提取能力。
SK-Net Block:通过使用不同大小的卷积核和 Split Attention 机制来处理特征。
ResNeSt Block:通过将特征图分成多个基数组,并在每个基数组内应用 Split Attention 机制,然后将处理后的特征图拼接和恢复通道数,以增强特征提取能力。
图中提到的 Split Attention 机制的详细视图在图 3 中展示,实际实现中使用基数-主视图(cardinality-major view),即具有相同基数组索引的特征图组相邻放置。在补充材料中提到,实际实现中使用基数-主视图可以通过分组卷积和标准 CNN 层进行模块化和加速。

图 4 展示了 ResNeSt 块的 Radix-major 实现方式。Radix-major 实现是将具有相同基数(radix)索引但不同基数组(cardinality)的特征图组物理上相邻放置。这种实现可以使用统一的 CNN 操作符来实现。
以下是图中各部分的解释:
输入层:
输入特征图的尺寸为 (h,w,c)。
特征图分割:
输入特征图被分割成 r 个部分,每个部分对应一个基数组(Cardinal group)。
基数组处理:
每个基数组包含多个特征图,每个特征图通过一个 1×1 卷积层将通道数减少到 c′/kr,然后通过一个 3×3 卷积层进一步处理特征。每个基数组处理后的特征图被拼接(Concatenate)在一起。
全局池化:
拼接后的特征图通过全局池化(Global pooling)操作,将其空间维度(即 h 和 w)压缩为一个单一的值,得到一个维度为 (c′,) 的向量。
密集层和激活函数:
这个向量通过两个密集层(Dense c′′,group = k 和 Dense c7,group = k),其中 c′′ 和 c7 是输出维度,group = k 表示分组数为 k。
Softmax 操作:
这些特征向量通过一个 r-Softmax 操作,生成一组权重。Softmax 操作将这些特征向量转换为概率分布,表示每个特征的重要性。
加权特征:
这些权重与原始输入特征进行逐元素相乘(×),然后将结果相加(+),得到最终的输出特征图,其维度仍然是 (h,w,c)。
输出层:
最后通过一个 1×1 卷积层恢复通道数到 c,并与原始输入特征相加。
这个结构通过将输入特征图分割成多个基数组,每个基数组内进行卷积操作,然后通过全局池化和密集层生成特征表示,再通过Softmax操作生成权重,最后将这些权重应用于原始输入特征,以实现对输入特征的注意力机制。图中展示的 Radix-major 实现方式使得具有相同基数索引但不同基数组的特征图组物理上相邻放置,从而可以使用统一的 CNN 操作符来实现。
相关文章:
ResNeSt: Split-Attention Networks论文学习笔记
这张图展示了一个名为“Split-Attention”的神经网络结构,该结构在一个基数组(cardinal group)内进行操作。基数组通常指的是在神经网络中处理的一组特征或通道。图中展示了如何通过一系列操作来实现对输入特征的注意力机制。 以下是图中各部…...
澳洲硕士毕业论文写作中如何把握主题
每到毕业季时,澳洲硕士毕业论文写作是留学生学业的头等大事。但是经常有留学生在澳洲毕业论文写作过程中会遇到写了一半,但是不知道应该如何继续下去的问题。有时候是在literature review的部分就越写越觉得偏离了方向,有时候是在数据收集阶段…...
STM32 LED呼吸灯
接线图: 这里将正极接到PA0引脚上,负极接到GND,这样就高电平点亮LED,低电平熄灭。 占空比越大,LED越亮,占空比越小,LED越暗 PWM初始化配置 输出比较函数介绍: 用这四个函数配置输…...
Java数据库操作指南:快速上手JDBC【学术会议-2025年数字化教育与信息技术(DEIT 2025】
大会官网:www.ic-deit.org 前言 在现代企业应用中,数据库是数据存储和管理的重要组成部分。Java作为一种广泛使用的编程语言,提供了多种方式与数据库进行交互。本文将介绍 JDBC(Java Database Connectivity)&#x…...
2024年个人总结
序 照例,每年都有的个人年度总结来了,看了很多其他大佬的总结,感觉自己的2024过于单薄,故事也不太丰满,自己就回去比较,自己哪里做的不好 ?但后来发现已经进入了一个思维误区。 年度总结年度总结…...
GitHub 仓库的 Archived 功能详解:中英双语
GitHub 仓库的 Archived 功能详解 一、什么是 GitHub 仓库的 “Archived” 功能? 在 GitHub 上,“Archived” 是一个专门用于标记仓库状态的功能。当仓库被归档后,它变为只读模式,所有的功能如提交代码、创建 issue 和 pull req…...
LeetCode:56.合并区间
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:56.合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti,…...
Vue演练场基础知识(七)插槽
为学习Vue基础知识,我动手操作通关了Vue演练场,该演练场教程的目标是快速体验使用 Vue 是什么感受,设置偏好时我选的是选项式 单文件组件。以下是我结合深入指南写的总结笔记,希望对Vue初学者有所帮助。 文章目录 十五. 插槽插槽…...
进程池的制作(linux进程间通信,匿名管道... ...)
目录 一、进程间通信的理解 1.为什么进程间要通信 2.如何进行通信 二、匿名管道 1.管道的理解 2.匿名管道的使用 3.管道的五种特性 4.管道的四种通信情况 5.管道缓冲区容量 三、进程池 1.进程池的理解 2.进程池的制作 四、源码 1.ProcessPool.hpp 2.Task.hpp 3…...
【Linux】Linux C比较两个 IPv6 网关地址是否相等,包括前缀
功能说明 在 Linux 环境下使用 C 语言比较两个 IPv6 网关地址是否相等,包括前缀 实现步骤 解析 IPv6 地址:使用 inet_pton 将字符串形式的 IPv6 地址转换为二进制形式。解析前缀长度:从地址字符串中提取前缀长度(如 /64…...
【uniapp】uniapp使用java线程池
标题 由于js是性能孱弱的单线程语言,只要在渲染中执行了一些其他操作,会中断渲染,导致页面卡死,卡顿,吐司不消失等问题。在安卓端可以调用java线程池,把耗时操作写入线程池里面,优化性能。 实…...
面试题-Java集合框架
前言 Java集合框架(Java Collections Framework)是Java平台提供的一套用于表示和操作集合的统一架构。它位于java.util包中,并且自Java 1.2(也称为Java 2平台,标准版,即Java SE 2)起成为Java平…...
Java基础教程(007):方法的重载与方法的练习
文章目录 6.5 方法的重载6.6 方法练习数组遍历数组最大值 6.5 方法的重载 在 Java 中,方法的重载是指在同一个类中定义多个方法,这些方法具有相同的名称,但参数列表不同。方法的重载是一种实现多态的方式,允许一个方法名以不同的…...
【ESP32】ESP-IDF开发 | WiFi开发 | TCP传输控制协议 + TCP服务器和客户端例程
1. 简介 TCP(Transmission Control Protocol),全称传输控制协议。它的特点有以下几点:面向连接,每一个TCP连接只能是点对点的(一对一);提供可靠交付服务;提供全双工通信&…...
npm cnpm pnpm npx yarn的区别
npm、cnpm、pnpm、npx、yarn 这几个工具都与 Node.js 项目的包管理和命令执行相关,它们的区别具体如下: 本质与功能定位 npm:是 Node.js 官方的包管理工具,提供了安装、卸载、更新、发布等全方位的包管理功能,还能通…...
debian12.9编译freeswitch1.10.12【默认安装】
服务器操作系统 cat /etc/os-release PRETTY_NAME"Debian GNU/Linux 12 (bookworm)" NAME"Debian GNU/Linux" VERSION_ID"12" VERSION"12 (bookworm)" VERSION_CODENAMEbookworm IDdebian HOME_URL"https://www.debian.org/&quo…...
使用 C/C++ 调用 libcurl 调试消息
在使用 C/C 调用 libcurl 进行 HTTP 请求时,有时我们需要查看请求的/应答消息的内容(包括请求头和请求体)以方便调试。libcurl 提供了多种方法来捕获和输出这些信息,本文介绍具体的使用方式。 1. libcurl 调试工具简介 libcurl 是…...
【愚公系列】《循序渐进Vue.js 3.x前端开发实践》030-自定义组件的插槽Mixin
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…...
大一计算机的自学总结:异或运算
前言 异或运算这个操作看上去很匪夷所思,实际上作用非常大。 一、异或运算的性质 1.异或运算就是无进位相加。 2.满足交换律、结合律。 3.0^nn,n^n0。 4.若集合B为集合A子集,集合A异或和为x,集合B异或和为y,则集…...
通过protoc工具生成proto的pb.go文件以及使用protoc-go-inject-tag工具注入自定义标签
1.ProtoBuf认识,安装以及用法 参考:[golang 微服务] 3. ProtoBuf认识,安装以及golang 中ProtoBuf使用 2. 使用protoc-go-inject-tag工具注入自定义标签 这里有一个案例: syntaxproto3; package test;option go_package ".;test";message MyMessage {int6…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
