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…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
python读取SQLite表个并生成pdf文件
代码用于创建含50列的SQLite数据库并插入500行随机浮点数据,随后读取数据,通过ReportLab生成横向PDF表格,包含格式化(两位小数)及表头、网格线等美观样式。 # 导入所需库 import sqlite3 # 用于操作…...

数据挖掘是什么?数据挖掘技术有哪些?
目录 一、数据挖掘是什么 二、常见的数据挖掘技术 1. 关联规则挖掘 2. 分类算法 3. 聚类分析 4. 回归分析 三、数据挖掘的应用领域 1. 商业领域 2. 医疗领域 3. 金融领域 4. 其他领域 四、数据挖掘面临的挑战和未来趋势 1. 面临的挑战 2. 未来趋势 五、总结 数据…...
window 显示驱动开发-如何查询视频处理功能(三)
D3DDDICAPS_GETPROCAMPRANGE请求类型 UMD 返回指向 DXVADDI_VALUERANGE 结构的指针,该结构包含特定视频流上特定 ProcAmp 控件属性允许的值范围。 Direct3D 运行时在D3DDDIARG_GETCAPS的 pInfo 成员指向的变量中为特定视频流的 ProcAmp 控件属性指定DXVADDI_QUER…...