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


相关推荐
shandianchengzi4 小时前
【小白向】错位排列|图文解释公考常见题目错位排列的递推式Dn=(n-1)(Dn-2+Dn-1)推导方式
笔记·算法·公考·递推·排列·考公
浅念-4 小时前
C语言编译与链接全流程:从源码到可执行程序的幕后之旅
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
ZH15455891314 小时前
Flutter for OpenHarmony Python学习助手实战:API接口开发的实现
python·学习·flutter
爱吃生蚝的于勒4 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
奶茶精Gaaa4 小时前
工具分享--F12使用技巧
学习
The森4 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
tq10864 小时前
Skills 的问题与解决方案
笔记
三水不滴4 小时前
有 HTTP 了为什么还要有 RPC?
经验分享·笔记·网络协议·计算机网络·http·rpc
久邦科技4 小时前
奈飞工厂中文官网入口,影视在线观看|打不开|电脑版下载
学习
三块可乐两块冰5 小时前
【第二十九周】机器学习笔记三十
笔记