ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

Torch版本主要分为四部分,ResNet、ResNeSt、split-attention和ablation
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

split-attention模块也就是下面的图:
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

上图对应论文中的:
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

ResNet就是基本的resnet的编码:
class Bottleneck(nn.Module):
就是对ResNet的bottleneck的编写,需要说的是,全局平均池化没有采用之前的网络采取对池化函数进行编码的方式,如下所:
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

而是采用的一个函数:
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

与此同时,split-attention也是放在了bottleneck函数中,如下:
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

由上可知放在了bottleneck的第二层,bottleneck一共三层。

然后进行ResNet网络的编写,也就是下面这一部分:
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

了解这些参数就不难读懂写的结构:
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

网络的结构如下:
第一层conv1
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

conv2-4-x
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

ResNeSt就是预训练成为对应的网络,代码中有四种:
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

下面是ResNeSt-200的网络结构
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

3,24,36,3是对应的ResNet的bottleneck的数量,bottleneck在ResNet文件中有定义,四个网络的实验结果如论文中所示:

ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

ablation就是消融实验,对应文章中的table2
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

0s表示使用ResNet-D中的标准残差块

实际上代码里有七个数据,如下图所示,也就是说实际实验有八个,即下图的七个和一个标准的。
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks

网络的相关设置就是名称所代表的含义。下面是一个例子:
ResNeSt的代码阅读(pytorch版本)ResNeSt Split-Attention Networks