【Transformer】10、HRFormer:High-Resolution Transformer for Dense Prediction

2023-10-30


在这里插入图片描述

论文链接: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} XRN×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、图像分类

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Transformer】10、HRFormer:High-Resolution Transformer for Dense Prediction 的相关文章

随机推荐

  • Java面试题(1)-J2SE基础

    最近在为自己实习准备 看了网上各种面试经验贴 也和身边的小伙伴一起参加了不少牛逼IT企业的面试 这篇文章就将面试遇到的一些比较常见的问题整理一下 给大家一些参考 也为自己整理整理 J2SE基础 1 九种基本数据类型的大小 以及他们的封装类
  • 猿创征文

    猿创征文 国产数据库实战 使用docker部署PolarDB X云原生分布式开源数据库 一 PolarDB X介绍 1 PolarDB X简介 2 PolarDB X特点 二 检查docker版本 三 检查docker配置信息 四 下载Po
  • redis集群原理

    redis是单线程 但是一般的作为缓存使用的话 redis足够了 因为它的读写速度太快了 官方的一个简单测试 测试完成了50个并发执行100000个请求 设置和获取的值是一个256字节字符串 结果 读的速度是110000次 s 写的速度是8
  • MySQL高频面试题

    文章目录 1 什么是MySQL 2 关系型数据库和非关系型数据库 3 数据库三大范式是什么 4 一条 SQL 查询语句是如何执行的 5 引擎 MySQL存储引擎MyISAM与InnoDB区别 MyISAM索引与InnoDB索引的区别 Inn
  • 哈夫曼树带权路径长度

    一 长什么样 左边是普通树 右边是哈夫曼树 图a WPL 5 2 7 2 2 2 13 2 54 图b WPL 5 3 2 3 7 2 13 1 48 可见 图b的带权路径长度较小 我们可以证明图b就是哈夫曼树 也称为最优二叉树 二 怎么生
  • Vue实现swiper轮播组件

    目前市面上有很多轮播组件 但是有的不满足业务需求 因此也需要自己首先轮播组件 以下是一个用vue实现的轮播组件 带动画效果 可以自行设置轮播速度 选择是否需要分页器等 效果如下 思路 结构 一个轮播组件应该由三部分组成 一是轮播的元素 如图
  • 如何在内存中执行二进制代码之win平台

    大家可能会很好奇 我们的任意exe程序 不就是在内存中执行的二进制机器码吗 不 今天我要说的是 我们如何把实现指定功能的一段二进制机器码 放到我们的程序中 然后在需要的时候 直接调用它 当然 这段代码也有其他用途 故而有了shell cod
  • 公众号分享

    配置 gt 登录公众号 gt 设置与开发 gt 公众号设置 gt 功能设置 gt js安全域名域名 gt 网页授权域名 1 先拿集成微信 js 路径写自己的 import wxshare from common js wxShareModu
  • 【树莓派之旅】第01期:一根网线搞定树莓派可视化界面

    一次偶然的机会接触到了树莓派 于是就购了一个板子 入手快两个月了 由于一直忙于工作的事情 所以也就没折腾 今天拿出来的时候发现要想把树莓派运行起来还需要一些其他外接设备 一时也没去某宝或某东上采购 就利用手头现有的资源玩一下 于是就有了此文
  • Sentinel实现动态配置的集群流控的方法

    这篇文章主要介绍了Sentinel实现动态配置的集群流控 本文给大家介绍的非常详细 对大家的学习或工作具有一定的参考借鉴价值 需要的朋友可以参考下 介绍 为什么要使用集群流控呢 相对于单机流控而言 我们给每台机器设置单机限流阈值 在理想情况
  • 部署 - 前端部署https服务,并配置安全证书

    项目中要实现跨tab复制 剪切 粘贴 所以涉及到操作剪切板的操作 选用了navigator clipboard 但是该api有必须在https的服务下才能用 所以就需要把项目部署城https服务 vue cli中可以配置webpack达到启
  • Android OkHttp源码阅读详解一

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到教程 前言 源码阅读基于okhttp 3 10 0 Android中OkHttp源码阅读二 责任链模式 implementation com
  • 注解实现CRUD

    CRUD 我们可以在工具类创建的时候实现自动提交事务 这个是在MybatisUtils工具类里面的弄的 public static SqlSession getSqlSession return sqlSessionFactory open
  • react 加粗_React入门的家庭作业(1-2)

    作业前准备 React在他的官网上挂了一个入门教程 是做一个xxoo棋的小游戏 在教程的最后留下了6个作业题 现在就来完成一下 准备材料 作业是在已完成教程的基础上做的 所以这里预设已经做好了环境部署 写好了游戏代码 如果没有 可以把这个复
  • 深聊性能测试,从入门到放弃之:性能测试技术栈,看完这篇,保证刷新你对性能测试的认知~~

    性能测试技术栈 1 引言 2 性能测试基础 2 1 性能测试理论 2 2 测试开发技能 3 性能监听诊断 3 1 前端监听诊断 3 2 服务器监听诊断 3 2 1 Linux 3 2 2 Windows Server 3 3 中间件监听诊断
  • 实现http到https的重定向

    vim etc httpd conf httpd conf DocumentRoot var www html redirect temp https www a com RewriteEngine on RewriteRule https
  • tensorflow笔记【9】深度学习-几个经典网络的基本结构

    tensorflow笔记 9 深度学习 几个经典网络的基本结构 文章目录 前言 一 卷积神经网络 二 经典网络结构 1 自制CNN 2 LeNet 3 AlexNet 4 VGGNet 5 InceptionNet 6 ResNet 总结
  • Java - Java基础(一)

    一 计算机基础知识 1 计算机简介 第一台通用计算机 ENIAC 2 数据的存储和运算 计算机中对于数据的存储和运算 都是通过二进制数据来完成 3 人机交互方式 图形化界面 DOS命令行 D 切换盘符 dir 查看当前路径下的文件信息 cd
  • Android中的drawable像素密度适配详解

    本文大纲 1 为什么要分drawable xxx目录 2 Bitmap的介绍 3 不同drawable xxx中的图片内存测试 1 为什么要分drawable xxx目录 android项目资源中对于drawable文件夹可以分为以下类型的
  • 【Transformer】10、HRFormer:High-Resolution Transformer for Dense Prediction

    文章目录 一 背景 二 方法 三 效果 论文链接 https arxiv org abs 2110 09408 代码链接 https github com HRNet HRFormer 一 背景 ViT 的提出让人们看到了 Transfor