ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks
Torch版本主要分为四部分,ResNet、ResNeSt、split-attention和ablation
split-attention模块也就是下面的图:
上图对应论文中的:
ResNet就是基本的resnet的编码:
class Bottleneck(nn.Module):
就是对ResNet的bottleneck的编写,需要说的是,全局平均池化没有采用之前的网络采取对池化函数进行编码的方式,如下所:
而是采用的一个函数:
与此同时,split-attention也是放在了bottleneck函数中,如下:
由上可知放在了bottleneck的第二层,bottleneck一共三层。
然后进行ResNet网络的编写,也就是下面这一部分:
了解这些参数就不难读懂写的结构:
网络的结构如下:
第一层conv1
conv2-4-x
ResNeSt就是预训练成为对应的网络,代码中有四种:
下面是ResNeSt-200的网络结构
3,24,36,3是对应的ResNet的bottleneck的数量,bottleneck在ResNet文件中有定义,四个网络的实验结果如论文中所示:
ablation就是消融实验,对应文章中的table2
0s表示使用ResNet-D中的标准残差块
实际上代码里有七个数据,如下图所示,也就是说实际实验有八个,即下图的七个和一个标准的。
网络的相关设置就是名称所代表的含义。下面是一个例子: