ResNeSt 2020 论文阅读笔记

ResNeSt: Split-Attention Networks
Github: https://github.com/zhanghang1989/ResNeSt
Detectron2版本Github: https://github.com/zhanghang1989/detectron2-ResNeSt

1. Introduction

主要谈了一下目前一些ResNet的变体网络存在的问题

最近大部分的下游应用还是在使用ResNet,或者ResNet的一些变体作为网络的backbone。作者认为ResNet本身是为了“图片分类”任务而设计的,它不再适用于一些下游应用,因为两个缺点:

  • 有限的感受野尺寸 (limited receptive-field size)
  • 缺少跨channel的交互 (lack of cross-channel interaction)

一些网络在ResNet的基础上做了一些改动,以使其在某些特定任务上更高效。比如,有一些网络加入了金字塔模块
Encoder-decoder with atrous separable convolution for semantic image segmentation (2018)
Pyramid scene parsing network (CVPR 2017)

有些加入了long-range connections
Non-local neural networks (2018)

有的加入了cross-channel feature-map attention:
Dual attention network for scene seg- mentation (2018)
Context encoding for semantic segmentation (CVPR 2018)

包括之前比较常见的group / depth-wise convolution --> 缺点是他们的representations都是孤立的,无法捕捉到跨channel的关系。(想到之前shuffelNet也是为了缓解这一点)

这些改进都在特定的task上表现良好,放到别的下游任务上就不一定好了。那么我们能不能有一以贯之的网络结构来提升feature representations来达到在多个任务上提升表现的效果呢?

本文提出的ResNeSt 网络主要有两个贡献:

  1. 引入了feature-map split attention block。每一个这样的block都把feature-map分成不同的groups(沿着channel dimension 分割),在每个组内又进行更细致的分组(splits)。每个group(第一次分出来的groups)内的splits进行加权组合,最后得到每一个group的feature representation。把这些Split-Attention block堆叠起来,形成了ResNet形式的变体。这样的网络架构不会比ResNet增加多余的计算量。
  2. Benchmark (不在这里多做介绍了)

2. Related Work

Multi-path首次在GoogleNet(Inception v1)中提出,主要是网络中的每个block都由几个不同大小的conv kernel组成。
ResNeXt在ResNet bottle block里面应用了group convolution,把multi-path的结构转变成了统一的操作(kernel size用的一样,但是对不同的group进行conv)。
SE-Net 引入了channel attention的机制,adaptively recalibrating the channel feature responses
SK-Net在两个network分支之间引入了feature map attention。

在前人的基础上,本文将channel-wise attention融入feature-map group representation。

3. Split-Attention Networks

3.1 Split-Attention Block

图一是SE-Net block,SK-Net block 和 ResNeSt block的对比。


ResNeSt block

Feature-map group

如图一所示,input feature 会被分成 1~k, K个组(cardinal groups)(沿着channel维度的方向分组),在每一个cardinal group里,又会被分成Rsplits,于是feature groups的数量一共有G = KR 对于每一个组,我们都可以再加上一系列transformations(从图中看应该是一系列conv操作,具体再看代码) \{\mathcal{F}_1, \mathcal{F}_2, ... \mathcal{F}_G\},于是就得到了每个组的intermediate representation U_i = \mathcal{F}_i(X), for i \in \{1,2, ... G\}

Split Attention in Cardinal Groups

Split-Attention Block

图一中每一个cardinal group里面最底下那个split attention block的内部图就是图二所示的样子了。

  1. 先对每个splits经过transformation之后得到的intermediate representations进行element-wise加和。E.g.对于第k个cardinal group来说,加和公式为:\hat{U}^k = \sum_{j=R(k-1)+1}^{Rk}{U_j}
    where \hat{U}^k \in \mathbb{R}^{H\times W\times C / K} for k \in 1,2, ...K
    H, W, C是ResNeSt block之前input feature的维度。

  2. 全局的上下文信息可以用Global Average Pooling在不同的spatial dimension间收集起来,第c个component(c \in \{1,2, ... C/K\})的计算方式为:
    s_c^k = \frac{1}{H\times W}\sum_{i=1}^{H}\sum_{j=1}^{W}{\hat{U}^k_c(i, j)}
    公式解读:每一个channel单独拿出来,都是一个H\times W的矩形,对这个矩形所有元素加和求平均,就得到了s_c^k, 而整个的s^k是一个维度为\mathbb{R}^{(C/K)}的列向量。
    这个s^k相当于是一个channel-wise attention的作用,它每一列上的数字,就对应着这个channel上的feature-map的重要程度(也不完全是,后面还有一个softmax的过程)。

  3. 最终,当前cardinal group里面的每一个splits都会按照一定的权重加起来,输出的feature map V^k \in \mathbb{R}^{H\times W\times C/K}就是当前cardinal group的特征图。对于V^k中第c个channel的计算,有:
    V^k_c = \sum_{i=1}^{R}{a_i^k(c) U_{R(k-1)+i}}

  • a_i^k(c)是soft assignment weight:
    \begin{equation} a_i^k(c) = \left\{ \begin{array}{lr} x=\dfrac{\exp(\mathcal{G}_i^c(s^k))}{\sum_{j=1}^{R}{\exp(\mathcal{G}_j^c(s^k))}} & if \space R > 1 \\ z=\dfrac{1}{1+\exp(-\mathcal{G}_i^c(s^k))} & if \space R=1 \end{array} \right. \end{equation}

  • mapping \mathcal{G}_i^c 是基于全局上下文representations^k 来决定每一个split的第c个channel的权重。

ResNeSt Block

最后再让我们回到图一的ResNeSt block. 经过Split-Attention Block之后得到的输出V^k会被简单地Concat起来V=Concat\{ V^1, V^2, ...V^K \}。最后加上ResNet经典的跳接,最终的输出则是Y = V+X

Relation to Existing Attention Methods

  • 利用global context来预测channel-wise attention factors 是首次在SE-Net(Squeeze-and-Excitation)中提出来的。区别是:ResNeSt的squeeze-and-attention操作是对每一个cardinal group来做的,而SE-Net是在整个block上操作,而不管多个groups。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354