
论文链接:https://arxiv.org/abs/2110.09408
代码链接:https://github.com/HRNet/HRFormer
一、背景
ViT 的提出让人们看到了 Transformer 在 图像分类任务上的潜力,紧随其后还有很多相关的改进,如知识蒸馏、更深的网络结构、引入卷积等方法,但 ViT 及其类似的方法都缺失了局部空间的信息,难以用于密集预测。还有一些方法聚焦在了使用 Transformer 来实现分割、检测等密集预测任务。
由于 ViT 等方法使用 16x16 作为输入 patch 的大小,且网络是单个分辨率的,缺失了处理多尺度目标的能力,所以作者提出了一个 High-Resolution Transformer (HRFormer),来提出丰富的空间信息并且为密集预测提供多分辨率的特征表达。
HRFormer 的特点:
- 还是使用 HRNet 的多层级融合(concat)的结构,把每个分辨率分支中的 conv+bn+relu 这种标准卷积操作,变成了如图 1 所示的 HRFormer block
- HRFormer block:图 1 所示的整体都是 block 内部的结构,图 1 的整体结构就是图 2 中的一个小方块(也就是一个特征图)
- 分块 MHSA:类似于 swin transformer 中的 windows 机制,HRFormer 也将输入分为了四个小块,每个小块内部做多头自注意力,降低计算量,然后将四个小块的注意力结果再整合起来(即恢复输入的放置形状,恢复成一幅图的样子)
- 1x1 conv + 3x3 DW conv + 1x1 conv:1x1 conv 可以进行通道间的信息交互,3x3 的可分离卷积可以进行不同小块的信息交互(可分离卷积就是一个特征图使用一个卷积)
二、方法
HRFormer 的结构类似于 HRNet,其结构如图 1,图 1 的左半部分表示了 local-window self-attention 如何更新 2D 输入表达,每个 window 内部的 attention 是独立进行的:
- 首先,在 stem 和第一个 stage 都使用了卷积,类似于 [11,49],它们也证明了在浅层使用卷积的效果是比较好的
- 接着,通过并行的使用 medium 和 low resolution 的 streams 来加强高分辨率 stream,从而提升高分辨率特征的表达。使用多分辨率特征后,HRFormer 能够进行多尺度的建模。
- 最后,HRFormer 通过 multi-scale fusion module 进行了 multi-resolution feature 交换,同时实现了对短距离信息和长距离信息的 attention。
如何减少计算量:
- 在每个分辨率特征图内部,作者都使用了 local-window self-attention 来减少计算量,作者将特征图无重叠的划分为小的 windows,然后在每个 window 内部分别使用 self-attention
- 并且,为了进行不同 window 间的信息交互,作者在 local-window self-attention 后面的前传网络 FFN 中引入了 3x3 的可分离卷积,有助于提高感受野
和不同方法的效果对比:
- DeiT:在 ImageNet 上,HRFormer-B 比 DeiT-B 的 top-1 acc 高了 1.0%,参数量下降了 40%,FLOPs 下降了 20%
- HRNet:在 COCO-val上, HRFormer-B 比 HRNet-W48 高了0.9% AP,参数量下降了 32%,FLOPs 下降了 19%
- HRNet-OCR:在 PASCAL-Context test 和 COCO-Stuff test 分别提高了 1.2% 和 2.0% 的 mIoU,参数量下降了 25%。
1、Multi-resolution parallel transformer
图2展示了 HRFormer 的结构,每个 transformer block 的结构细节如图 1。
2、Local-window self-attention
首先,将特征图 X ∈ R N × D X \in R^{N \times D} X∈RN×D 切分为大小为 K × K K\times K K×K 的不重叠的 windows X → { X 1 , X 2 , . . . , X P } X \to \{X_1, X_2, ..., X_P\} X→{X1,X2,...,XP}。
然后,作者在每个 window 内使用 multi-head self-attention (MHSA),假设在第 p 个 window 使用,方式如下:
- H H H 是 heads 的个数
- D D D 是 channel 的个数
- N N N 是输入分辨率
- X ^ p \hat {X}_p X^p 是 MHSA 的输出特征
- 同时,在每个 window 内部,都使用了相对位置编码(T5 model)
在获得了每个 window 的特征之后,将所有的输入 merge 起来:
3、FFN with depth-wise convolution
由于所有的 self-attention 只在 window 内部做,所以 window 之间没法进行信息交换。所以作者在 FFN 中的 MLP 之间加了 3x3 的可分离卷积,如图1右边所示。
4、Representation head designs
如图 2 所示,HRFormer 的输出包含了 4 种不同分辨率的特征图,对于不同的任务,作者罗列了不同的 head 设计方法:
- 分类任务:把 4 个特征图送入 bottleneck,输出通道变化为 128、256、512、1024,然后使用卷积将它们聚合起来,输出一个最低维的特征图,最后使用avgpooling。
- 姿态估计任务:仅仅使用最高维度的特征图
- 语义分割任务:将所有的特征图上采样到相同的大小,然后concat起来
5、Instantiation
HRFormer 的整体结构如表1所示:
- M:每个 stage 的modules 数量
- B :每个 stage 的 blocks 数量
- C:transformer block 中的 channel 个数
- H:transformer block 中的 heads 个数
- R:transformer block 中的 MLP expansion ratios (4,4,4,4 for all models)
- 第一个 stage 使用 HRNet 的结构
- 每个 transformer block 的组成:一个 local-window self-attention (7,7,7,7 for each resolution) + FFN (with 3x3 depth-wise conv)
6、分析
3x3 depth-wise convolution 的益处:
- 加强局部特征
- 在不同 window 间进行信息交换
三、效果
1、姿态识别
2、语义分割
3、图像分类