date: 2020/04/25

七月七日晴 - 许慧欣:又捡到一首旋律熟悉但不记得名字的老歌


参考:《计算机视觉中attention机制的理解 | 知乎, 托尼小白


注意力机制看起来还是NLP领域用的比较多,CV领域的注意力主要考虑空间和通道两个维度。


空间注意力

Spatial Transformer

论文:《Spatial Transformer Networks (NIPS2015)

参考:《论文笔记:空间变换网络(Spatial Transformer Networks) | cnblog, PilgrimHui

代码:https://github.com/fxia22/stn.pytorch


image.png

(图片来自PilgrimHui的博文)


空间变换网络(Spatial Transformer Networks, STN)通过设计一个可训练插件,能够对图像甚至特征图进行空间上的变换,使得网络能够学习如何通过缩放、裁剪、旋转等空间变换将图像变换到正确的状态。该插件不仅可以提供空间域的Attention机制(通常U和V的shape是一致的),还可以提供一种更加复杂的上采样或下采样策略。


image.png

(空间变换模块的整体设计)


ST包含三个部分:

  1. LocalisationNet由全连接和卷积构成的网络(论文里没有给出具体的设计),输入特征图U,生成相应的一系列参数
  2. GridGenerator根据变换参数构筑特征图U上坐标到特征图V上的映射关系
  3. Sampler根据映射关系在特征图U上按一定规则采样和组合,最终得到变换后的特征图V


空间变换通常可以通过坐标的仿射变换实现,比如

缩放

偏移

旋转

推广到一般情况,

此时我们可以让LocalsationNet为特征图回归出这六个变换参数(既可以让每个通道各自使用一套变换参数,也可以让所有通道共享同一套变换参数)


注意到坐标在映射后得到的都是小数表示的坐标,Sampler在采样时可以采用最邻近或其他插值的形式。

如果用最邻近,则

其中


如果使用双线性插值,则


该组件及其变种经常运用在文本的识别上,因为OCR要求文字不能旋转太大的角度,而ST模块可以学习如何将文字扭正,以有助于后续的OCR识别;对细粒度识别也有很大帮助,比如ST模块可以学习如何从特征图上裁切出关键区域,以帮助细粒度识别。

image.png

(应用举例:文本识别)


image.png

(应用举例:细粒度识别)


Deformable Convolution

论文:《Deformable Convolutional Networks (ICCV2017)

标准卷积在进行计算时对输入特征图是规则采样的,而变形卷积提出用一个小模块回归出实际采样的位置,以实现空间注意力机制。

image.png

(图1是标准卷积的采样点;     图2/3/4是变形卷积的采样点)


image.png

(实际检测中变形卷积的关注区域)


image.png

(Deformable Convolution结构)


先定义标准卷积的采样过程,以3x3卷积(dilation=1)为例,

其中,

是输入特征图上采样的中心点

是对应位置上的输入值、权重值、输出值;


对于变形卷积,则通过卷积和全连接回归出一张大小的特征图(其中分别是最终输出特征图的高和宽),为输出特征图空间上每个点为值回归个偏移量来对卷积采样过程产生偏移,此时卷积公式变为


考虑到回归出来的偏移量一般是小数,所以采用双线性插值来计算出实际参与卷积运算的输入值


除了Deformable Convotluion,论文还提出了Deformable RoI Pooling和Deformable Position-Sensitive RoI Pooling。

image.png

(Deformable RoI Pooling结构)


image.png

(Deformable PS RoI Pooling结构)


通道注意力

Squeeze and Excitation

论文:《Squeeze-and-Excitation Networks (CVPR2018)

详细解析参见《分类网络速览 - SENet | Hey~YaHei!

image.png

SE模块根据输入特征图回归出各通道的权重并应用到原特征图上进行Rescale。


Selective Kernel

论文:《Selective Kernel Networks (CVPR2019)

详细解析参见《分类网络速览 - SKNet | Hey~YaHei!

image.png

分别用两个不同的卷积核对同一个特征图进行特征提取,SK模块根据两个输出特征图对通道做出选择(软选择),将挑选出来的通道组合得到最终的输出。


Split Attention

论文:《ResNeSt: Split-Attention Networks (2020.04)

详细解析参见《分类网络速览 - ResNeSt | Hey~YaHei!

image.png

SK模块的一个多分支版本。分别用多个不同的卷积核对同一个特征图进行特征提取,SA模块根据多个输出特征图对通道做出选择(软选择),将挑选出来的通道组合得到最终的输出。


空间与通道混合

Attention Augmented

论文:《Attention Augmented Convolutional Networks (ICCV2019)

这……看不懂啊QAQ好像用了好些transformer的东西,唉以后再回来看。