文章目录

  • 一、背景
  • 二、动机
  • 三、方法
  • 四、效果

论文链接:https://arxiv.org/abs/2110.09408
代码链接:https://github.com/HRNet/HRFormer

一、背景

ViT 的提出让人们看到了 Transformer 在 图像分类任务上的潜力,紧随其后还有很多相关的改进,如知识蒸馏、更深的网络结构、引入卷积等方法,但 ViT 及其类似的方法都缺失了局部空间的信息,难以用于密集预测。还有一些方法聚焦在了使用 Transformer 来实现分割、检测等密集预测任务。

二、动机

由于 ViT 等方法使用 16x16 作为输入 patch 的大小,且网络是单个分辨率的,缺失了处理多尺度目标的能力,所以作者提出了一个 High-Resolution Transformer (HRFormer),来提出丰富的空间信息并且为密集预测提供多分辨率的特征表达。

三、方法

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∈RN×DX \in R^{N \times D}X∈RN×D 切分为大小为 K×KK\times KK×K 的不重叠的 windows X→{X1,X2,...,XP}X \to \{X_1, X_2, ..., X_P\}X→{X1​,X2​,...,XP​}。

然后,作者在每个 window 内使用 multi-head self-attention (MHSA),假设在第 p 个 window 使用,方式如下:

  • HHH 是 heads 的个数
  • DDD 是 channel 的个数
  • NNN 是输入分辨率
  • X^p\hat {X}_pX^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、图像分类

【Transformer】HRFormer:High-Resolution Transformer for Dense Prediction相关推荐

  1. 【自然语言处理】【多模态】UniT:基于统一Transformer的多模态多任务学习

    UniT:基于统一Transformer的多模态多任务学习 <UniT:Multimodal Multitask Learning with a Unified Transformer> ...

  2. 【CV】SwinIR:使用 Swin Transformer 进行图像恢复

    论文名称:SwinIR: Image Restoration Using Swin Transformer 论文下载:https://arxiv.org/abs/2108.10257 论文年份:ICC ...

  3. 【自然语言处理】【多模态】CLIP:从自然语言监督中学习可迁移视觉模型

    从自然语言监督中学习可迁移视觉模型 <Learning Transferable Visual Models From Natural Language Supervision> 论文地址 ...

  4. 【自然语言处理】【多模态】OFA:通过简单的sequence-to-sequence学习框架统一架构、任务和模态

    OFA:通过简单的sequence-to-sequence学习框架统一架构.任务和模态 <Unifying Architectures, Task, and Modalities through ...

  5. 【自然语言处理】【多模态】BLIP:面向统一视觉语言理解和生成的自举语言图像预训练

    BLIP: 面向统一视觉语言理解和生成的自举语言图像预训练 <BLIP: Bootstrapping Language-Image Pre-training for Unified Vision ...

  6. 【NLP】GPT:第一个引入Transformer的预训练模型

    目前两种最重要的预训练语言模型,一种是前面介绍过的BERT,另外一种就是GPT. GPT出了两个版本,GPT1.0和GPT2.0,GPT2.0相对于GPT1.0差别不大,可以认为是它的增强版.本篇介绍 ...

  7. 论文笔记 |【CVPR2021】Uformer: A General U-Shaped Transformer for Image Restoration

    论文笔记 |[CVPR2021]Uformer: A General U-Shaped Transformer for Image Restoration 文章目录 论文笔记 |[CVPR2021]U ...

  8. 【NLP】XLnet:GPT和BERT的合体,博采众长,所以更强

    前面介绍过BERT,作为一种非常成功的预训练模型,取得了非常不错的成绩,那么,他还有改进的空间吗? 本文介绍BERT的改进版,XLnet.看看它用了什么方法,改进了BERT的哪些弱点. 作者& ...

  9. 【计算机视觉】MAE:Masked Autoencoder

    有任何的书写错误.排版错误.概念错误等,希望大家包含指正. 在阅读本篇之前建议先学习: [自然语言处理]Transformer 讲解 [自然语言处理]BERT 讲解 [计算机视觉]ViT:Vision ...

最新文章

  1. R语言ggplot2可视化箱图(boxplot)时忽视异常值(outlier)并重新分配坐标轴的范围是的可视化的箱图可以有效显示箱体实战
  2. mysql备份命令和还原命令_mysql数据备份和还原命令
  3. greenPlum资源隔离
  4. css怎么把背景图片拉伸至100%
  5. java前言_Java Web前言
  6. linux加入微软,微软正式加入Linux基金会
  7. java statement 存储过程_Java+sql server+CallableStatement调用存储过程三种情况 (转)...
  8. if/else if多分支语句(JS)
  9. WinSCP无法连接linux,而secureCRT却可以
  10. 操作系统—内存的连续分配管理方式
  11. mybatis同时查询未知个数的表中数据(表名做为参数传递,联合查询union)
  12. 【软考软件评测师】2011年下案例分析历年真题
  13. 直播技术原理:CDN技术详解
  14. 安装丰桥(顺丰)电子面单自助打印SDK踩的坑
  15. hspace在表格中无效吗html,HTML代码汇总详解
  16. MNE-Python | 开源生理信号分析神器(一)
  17. 怎样快速制作GIF动图?教你一分钟在线制作GIF
  18. BroadcastReceiver插件化
  19. RGB 无限立方体(高级版)
  20. h5 使用canvas实现电子签名和图片的保存

热门文章

  1. Django学习(第四天:ORMModel)
  2. [Java] 实现多线程的两种方法
  3. 重新想象 Windows 8 Store Apps (59) - 锁屏
  4. HDU 2993 MAX Average Problem(斜率优化DP)
  5. 安装oracle解压版,oracle11g压缩解压版图文安装详细教程
  6. js 正则 显示千分号 支持整数和小数
  7. Hibernate配置数据源,数据库连接池
  8. oracle导入报错39002,oracle impdp ORA-39002
  9. model模型php,thinkphp的model模型的设计经验总结
  10. python输入一个数组输出24进制式的时间_【翻译】《利用Python进行数据分析·第2版》第4章(下)NumPy基础:数组和矢量计算...