Swin Transformer V2

2023-05-16

Swin Transformer V2

论文链接:https://arxiv.org/pdf/2111.09833.pdf
代码链接:https://github.com/microsoft/Swin-Transformer

问题:

作者提出了将Swin Transformer缩放到30亿个参数的技术 ,并使其能够使用高达1536×1536分辨率的图像进行训练。在很多方面达到了SOTA。
目前,视觉模型尚未像NLP语言模型那样被广泛探索,部分原因是训练和应用中的以下差异:
1) 视觉模型通常在规模上面临不稳定性问题;
2) 许多下游视觉任务需要高分辨率图像,如何有效地将低分辨率预训练的模型转换为高分辨率模型尚未被有效探索,也就是跨窗口分辨率迁移模型时性能下降。当图像分辨率较高时,GPU显存消耗也是一个问题。

解决思路:

为了解决这些问题,作者提出了几种技术,并在本文中以Swin Transformer进行了说明:
1)提高大视觉模型稳定性的后归一化(post normalization) 技术和缩放余弦注意力(scaled cosine attention) 方法;
2)一种对数间隔连续位置偏差技术(log-spaced continuous position bias technique) ,用于有效地将在低分辨率图像中预训练的模型转换为其高分辨率对应模型。

在这里插入图片描述

作者发现,在大型模型中,各层之间的激活幅度差异显著增大。仔细观察结构可以发现,这是由直接添加回主分支的残差单元的输出引起的。结果是激活值逐层累积,因此深层的振幅明显大于早期层的振幅。为了解决这个问题,作者提出了一种新的归一化配置,称为post norm,它将LN层从每个残差单元的开始移动到后端 ,如上图所示。作者发现,这种新的配置在网络层上产生了更温和的激活值。作者还提出了一种缩放余弦注意(scaled cosine attention)来取代以前的点积注意(dot product attention) 。缩放余弦注意使得计算与块输入的振幅无关,并且注意值不太可能陷入极端。

具体实现:

Scaling Up Model Capacity

在这里插入图片描述

每个残差块的输出激活值直接合并回主分支,并且主分支的振幅在更深层会越来越大。不同层中的振幅差异过大可能会导致训练不稳定问题。为了缓解这个问题,作者提出使用后归一化(post normalization) 方法。在这种方法中,每个残差块的输出在合并回主分支之前被归一化,并且当层加深时,主分支的振幅不会累积。如上图所示,这种方法的激活幅度比原始预归一化配置中的激活幅度要温和得多。

Scaled cosine attention

作者发现,在使用这种方法进行大型视觉模型时,某些block和head的学习注意力通常由几个像素对控制,特别是在后归一化配置中。为了缓解这个问题,作者提出了一种缩放余弦注意(scaled cosine attention)方法,该方法通过缩放余弦函数计算像素对i和j的注意力:
在这里插入图片描述
Bij表示像素ij之间的相对位置偏移,τ是科学系的标量,在head和层之间不共享,

Scaling Up Window Resolution

在本小节中,作者提出了一种对数间隔连续位置偏差(log-spaced continuous position bias) 方法。以使得相对位置偏差可以在窗口分辨率之间平滑地迁移。

Continuous Relative Position Bias

连续位置偏差方法不是直接优化参数化偏差,而是在相对坐标上引入一个小的元(meta)网络:
在这里插入图片描述
G是一个很小的网络,比如2层MLP。它对任意相对坐标生成偏置参数,因而可以自然地进行任意可变窗口尺寸的迁移。在推理阶段,每个相对位置的偏置可以预先计算并保存,按照原始方式进行推理。

Log-space Coordinates

在这里插入图片描述
在这里插入图片描述
也就是通过log的方式将外插比例缩小了。
在这里插入图片描述

感觉还有很多理解不到位,希望大家可以分享一下自己的想法,一起交流交流。

参考链接:
https://bbs.cvmart.net/articles/5772
https://view.inews.qq.com/a/20211121A03FGF00
https://zhuanlan.zhihu.com/p/436072504

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

Swin Transformer V2 的相关文章

随机推荐

  • 进度条(CSS)

    效果 xff08 实际有动态效果 xff09 html span class token tag span class token tag span class token punctuation lt span div span span
  • 终端命令行打开vscode

    在指定文件夹内 xff0c 使用终端命令行打开vscode 在当前目录打开vscode code 如果code命令无法使用 xff0c 需要配路径 xff0c 如下 xff1a 打开bash或者zsh配置文件 bash 用户请使用 vi b
  • 串口缓冲区管理分析

    一 概述 xff1a 串口使用时一般包含两个缓冲区 xff0c 即发送缓冲区和接收缓冲区 发送数据时 xff0c 先将数据存在发送缓冲区 xff0c 然后通过串口发送 xff1b 接收数据时 xff0c 先将接收的数据存在接收缓冲区 xff
  • array element has incomplete type

    http stackoverflow com search q 61 luaL reg 43 incomplete 43 type libs edje lua2 o edje lua2 c 183 error array type has
  • rt-thread学习记录(一)--内核的移植

    rt thread学习记录 xff08 一 xff09 内核的移植 1 基本选择 在rt thread官网上 xff0c 看到其对stm32芯片的支持 xff0c 因此选择stm32c8t6最小系统来进行移植内核 xff0c rt thre
  • rt-thread内核启动分析

    1 项目准备 上一节的基本环境 如rh thread 基本环境的搭建 硬件材料stm32f103C8T6 以及st link rt thread 内核启动官网分析 在分析rt thread代码的时候 由于rt thread的代码是十分优秀的
  • 达梦数据库sql语句记录

    登入 在ubuntu上安装好达梦数据 xff0c 并且生成实例 xff0c 在ubuntu上进行安装目录 xff0c 采用在tools目录下 xff0c 使用 disql进行命令行模式 xff0c 连接服务器 xff1a Conn sysd
  • vertx web开发(一)

    vertx web开发 最近在开发中 xff0c 由于spring 的大而全 xff0c 反而不实用于一下小项目 xff0c 因为spring boot在空载的情况 xff0c 至少其内存占用超过150M 而对于一些简单的项目反到不适用 而
  • kotlin协程实现原理

    传统runnable接口实现 在java中 xff0c 很多耗时的行为通过实现runnable接口 xff0c 并且通过线程运行下这些耗时的任务 xff0c 例如 xff1a span class token keyword public
  • PCL---RANSAC随机采样一致性算法

    前言 通过前面的文章 xff0c 我们基本上代建的相关环境 本文将继续基于此继续学习PCL相关采样一致性算法 基础代码下载 1 准备 1 1 Ransac算法介绍 RANSAC从样本中随机抽选出一个样本子集 xff0c 使用最小方差估计算法
  • PCL-使用potree可视化

    前言 在几篇文章中 xff0c 基本实现了对PCL相关操作 xff0c 最近在github上找到了Web端对点云数据可视化兼容很好的项目 Potree 对此本文将介绍如何使用Potree来进行web端的可视化 1 Potree 官方运行 P
  • PCL- Las文件处理

    前言 在对点云数据处理的时候 xff0c 很多时候激光雷达扫描的文件不一定是 pcd文件 xff0c 这个时候需要进行相关文件处理 xff0c 如Las xff0c laz e57等文件格式 xff0c 本文将介绍las文件的读写 1 引入
  • PCL-Window下安装

    1 安装编译工具链MSVC MSVC工具链是visual studio 自带的工具链 xff0c 因此安装visual studio社区版即安装完成相应的MSVC工具链 2 安装Clion 相比与Visual studio的界面来说 xff
  • STM32 串口详细讲解

    什么是串口 UART Universal Asynchronous Receiver Transmitter 通用异步收发器 USART Universal Synchronous Asynchronous Receiver Transmi
  • ubuntu 修改pip指定路径

    参考这篇文章 还有 这篇文章 第二篇更好一点 xff0c 亲测成功
  • CrowdHuman数据集介绍

    CrowdHuman数据集是旷世发布的用于行人检测的数据集 xff0c 图片数据大多来自于google搜索 CrowdHuman 数据集数据量比较大 xff0c 训练集15000张 xff0c 测试集5000张 xff0c 验证集4370张
  • CityPersons数据集介绍

    CityPersons数据集是cityscape的一个子集 xff0c 它只包含个人注释 有2975张图片用于培训 xff0c 500张和1575张图片用于验证和测试 一幅图像中行人的平均数量为7人 xff0c 提供了可视区域和全身标注 C
  • CUHK-SYSU数据集介绍

    该数据集是一个大规模的人员搜索基准 xff0c 包含18184张图像和8432个身份 根据图像来源 xff0c 数据集可以分为两部分 xff1a 街道捕捉和电影 xff1a 在街拍中 xff0c 图像通过手持摄像机收集 xff0c 跨越数百
  • ETHZ数据集介绍

    Ess等构建了基于双目视觉的行人数据库用于多人的行人检测与跟踪研究 该数据库采用一对车载的AVT Marlins F033C摄像头进行拍摄 xff0c 分辨率为640 480 xff0c 帧率13 14fps xff0c 给出标定信息和行人
  • Swin Transformer V2

    Swin Transformer V2 论文链接 xff1a https arxiv org pdf 2111 09833 pdf 代码链接 xff1a https github com microsoft Swin Transformer