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 操作符来实现。


相关推荐
是翎1 小时前
深度长文|2026产品经理AI实践手册
人工智能·深度学习·学习·自然语言处理·数据挖掘
Linux-lucky1 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
知识分享小能手2 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
马可家的菠萝3 小时前
你收藏的资料,有多少真的被你第二次打开过?
笔记·知识管理·效率提升·个人知识库
小刘在重生~4 小时前
Java Lock 显式锁案例|ReentrantLock 解决多线程安全问题(超详细实战)
java·笔记·面试
职豚求职小程序4 小时前
中国人寿27秋招笔试[特殊字符]北森机考|备考攻略
笔记
江湖人称菠萝包4 小时前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter9-Qt Charts
笔记·qt·qt5
乐橙开放平台4 小时前
从「多套客户端」到一套开放能力:乐橙视频监控能力复盘
笔记·物联网·自动化·音视频·智能家居
AI职业加油站5 小时前
数据要素价值释放年:大数据治理工程师,站上职业新风口
人工智能·学习·职场和发展·数据分析·职场发展
啄缘之间5 小时前
1.【SVA】什么是SVA?
经验分享·学习·测试用例·verilog·sva