当前位置: 首页 > news >正文

Swin Transformer V2 Scaling Up Capacity and Resolution(CVPR2022)


文章目录

  • Abstract
  • Introduction
    • 不稳定性问题
    • 下游任务需要的高分辨率问题
    • 解决内存问题
    • -
  • Related Works
    • Language networks and scaling up
    • Vision networks and scaling up
    • Transferring across window / kernel resolution
  • Swin Transformer V2
    • Swin Transformer简介
    • Scaling Up Model Capacity
      • Post normalization
      • Scaled cosine attention
    • Scaling Up Window Resolution
    • Self-Supervised Pre-training
    • Implementation to Save GPU Memory
  • Experiment
  • Conclusion

原文
代码

Abstract

大规模NLP模型已被证明可以显著提高语言任务的性能,而不会出现饱和的迹象,他们还展示了像人类一样的惊人的few-shot能力.本论文旨在探索计算机视觉中的大规模模型
我们解决了大视觉模型训练和应用中的三个主要问题,包括训练不稳定性、预训练和微调之间的分辨率差距以及对标记数据的饥渴
提出了三种主要技术:
1)残差-后范数法结合余弦注意提高训练稳定性;
2)采用对数空间连续位置偏差方法,将低分辨率图像预训练的模型有效地转移到具有高分辨率输入的下游任务中
3)一种自监督预训练方法SimMIM,以减少对大量分类图像的需求
通过这些技术,本文成功训练了一个30亿个参数的Swin Transformer V2模型,这是迄今为止最大的密集视觉模型,并使其能够使用分辨率高达1,536×1,536的图像进行训练
在ImageNet-V2图像分类、COCO目标检测、ADE20K语义分割、Kinetics-400视频动作分类等4项代表性视觉任务上创造了新的性能记录
我们的训练比b谷歌的十亿级视觉模型更有效,后者消耗的标记数据少了40倍,训练时间也少了40倍

Introduction

为了成功地训练大型和通用的视觉模型,我们需要解决几个关键问题

不稳定性问题

首先,我们对大视觉模型的实验揭示了训练中的不稳定性问题:我们发现,在大型模型中,不同层间的激活振幅差异显著增大,仔细观察原始架构就会发现,这是由直接添加回主分支的剩余单元的输出引起的,结果表明,激活值是逐层累积的,较深层的振幅明显大于早期的
为了解决这个问题,我们提出了一种新的规范化配置,称为res-post-norm,它将LN层从每个剩余单元的开始移动到后端,如图1所示
为了更好地扩展模型容量和窗口分辨率,对原始Swin Transformer架构(V1)进行了一些调整,我们发现,这种新配置在网络层上产生的激活值要温和得多,我们还提出了一种缩放余弦注意来取代之前的点积注意,缩放余弦注意使得计算与块输入的幅度无关,并且注意值不太可能陷入极端。在我们的实验中,这两种技术不仅使训练过程更加稳定,而且提高了训练精度,特别是对于更大的模型
为了更好地扩展模型容量和窗口分辨率,对原始Swin Transformer架构(V1)进行了一些调整:
1)用 res-post-norm 取代前规范配置;2)用缩放余弦方法代替原有的点积方法;3)用对数间隔连续相对位置偏差方法代替之前的参数化方法
(1)和(2)使模型更容易扩展容量。自适应(3)使模型更有效地跨窗口分辨率传输

下游任务需要的高分辨率问题

许多下游视觉任务,如目标检测和语义分割,需要高分辨率的输入图像或大的注意窗口,低分辨率预训练和高分辨率微调之间的窗口大小变化可能相当大
目前常见的做法是对位置偏置图进行双三次插值。这个简单的修复方法有些特别,结果通常不是最优的
我们引入了对数间隔连续位置偏置(Log-CPB),它通过在对数间隔坐标输入上应用一个小元网络来生成任意坐标范围的偏置值,由于元网络采用任意坐标,预训练模型将能够通过共享元网络的权重自由地跨窗口大小转移
我们方法的一个关键设计将坐标转换到对数空间中,这样即使目标窗口大小明显大于预训练的窗口大小,外推率也可以很低

解决内存问题

模型容量和分辨率的扩展导致现有视觉模型的GPU内存消耗过高
为了解决内存问题,我们结合了一些重要的技术,包括零优化器[54],激活检查指向[12]和一种新的自关注计算实现

-

使用这些技术,大模型和分辨率的GPU内存消耗显着降低,对训练速度只有边际影响。

Related Works

Language networks and scaling up

随着容量的增加,各种语言基准测试的准确性得到了显著提高。零样本或少样本性能也得到了显著提高,这是人类通用智能的基础

Vision networks and scaling up

可能是由于CNN架构中的归纳偏差限制了建模能力,绝对的性能并不是那么好
只有少数作品试图扩大ViT的规模[17,56,80]。然而,它们依赖于一个巨大的带有分类标签的图像数据集,即JFT-3B,并且仅用于图像分类问题

Transferring across window / kernel resolution

允许可变窗口大小在使用上更方便,以便被可能变化的整个特征映射所整除,并调整接受域以获得更好的交流精度
在本文中,我们提出了同间距连续位置偏差方法(Log-CPB),该方法可以更平滑地将低分辨率下的预训练模型权重转移到处理高分辨率窗口

Swin Transformer V2

Swin Transformer简介

Swin Transformer是一个通用的计算机视觉骨干,在区域级目标检测、像素级语义分割和图像级图像分类等各种粒度识别任务中取得了较强的性能。Swin Transformer的主要思想是在普通Transformer编码器中引入几个重要的视觉先验,包括层次、局部性和平移不变性,它结合了两者的优势:Transformer基本单元具有强大的建模能力,并且视觉先验使其对各种视觉任务友好

Scaling Up Model Capacity

当我们扩大模型容量时,在更深的层上观察到激活值的显著增加
事实上,在预归一化配置中,每个残差块的输出激活值直接合并回主支路,并且主支路的振幅在更深的层上变得越来越大。各层振幅差异大,导致训练失稳

Post normalization

为了缓解这个问题,我们建议使用残差后归一化方法,如图1所示
这种方法的激活幅度比原始的预归一化配置要温和得多,如图2

Scaled cosine attention

我们提出了一种缩放余弦注意方法,该方法通过缩放余弦函数计算像素对I和j的注意对数

Scaling Up Window Resolution

我们引入了一种对数间隔的连续位置偏置方法,使得相对位置偏置可以在窗口分辨率之间平滑地传递

Self-Supervised Pre-training

在这项工作中,我们利用了一种自我监督的预训练方法,SimMIM[72],以减轻对标记数据的需求

Implementation to Save GPU Memory

为了解决内存问题,我们采用了以下实现
Zero-Redundancy Optimizer (ZeRO)
Activation check-pointing
Sequential self-attention computation

Experiment

我们在ImageNet-1K图像分类(V1和V2)[18,55]、COCO目标检测[44]和ADE20K语义分割[85]上进行了实验。对于3B模型实验,我们也报告了kinect -400视频动作识别的准确性

Conclusion

我们已经提出了将Swin Trans- former缩放到30亿个参数的技术,并使其能够使用高达1,536×1,536分辨率的图像进行训练,包括res-post-norm和缩放余弦注意,使模型更容易在容量上缩放,以及对数间隔连续相对位置偏差方法,使模型更有效地跨窗口分辨率传输。
对改编后的体系结构进行命名Swin Transformer V2,通过扩大容量和分辨率,它在4个代表性视觉基准上创下了新的记录

相关文章:

Swin Transformer V2 Scaling Up Capacity and Resolution(CVPR2022)

文章目录 AbstractIntroduction不稳定性问题下游任务需要的高分辨率问题解决内存问题- Related WorksLanguage networks and scaling upVision networks and scaling upTransferring across window / kernel resolution Swin Transformer V2Swin Transformer简介Scaling Up Mod…...

rust学习——字符串、字符串字面量、切片(slice)、字符串 slice

文章目录 字符串、字符串字面量、切片(slice)、字符串 slice01、字符串02、字符串字面量03、切片 (slice)04、字符串 slice 字符串 slice注意要点String 与 &str 的转换字符串深度剖析字符串 slice 作为函数参数例子001例子00…...

SolidWorks模型导入到Gazebo中

首先建立好solidworks模型,然后另存为stl格式, 导出为STL文件时,文件名最好不要是中文,并且要将后缀STL改为stl,否则Gazebo无法识别 这是我创建好的机器人充电桩模型: 尺寸是单位是mm: 135mm …...

使用CMake构建一个简单的C++项目

文章目录 一. 构建一个简单的项目二. 构建过程1. 创建程序源文件2. 编写CMakeList.txt文件3. 构建项目并编译源代码 附件 一. 构建一个简单的项目 最基本的CMake项目是从单个源代码文件构建的可执行文件。对于像这样的简单项目,只需要一个包含三个命令的CMakeLists…...

图论06-【无权无向】-图的遍历并查集Union Find-力扣695为例

文章目录 1. 代码仓库2. 思路2.1 UF变量设计2.2 UF合并两个集合2.3 查找当前顶点的父节点 find(element) 3. 完整代码 1. 代码仓库 https://github.com/Chufeng-Jiang/Graph-Theory 2. 思路 2.1 UF变量设计 parent数组保存着每个节点所指向的父节点的索引,初始值为…...

什么是卷积神经网络?解决了什么问题?

什么是卷积神经网络? 卷积神经网络(Convolutional Neural Network,CNN)是一种深度神经网络模型,主要用于图像识别、语音识别和自然语言处理等任务。它通过卷积层、池化层和全连接层来实现特征提取和分类。 解决了什么问…...

Golang数组:全面指南与实际示例

揭示Golang数组的威力:从基础到高级技巧 Golang数组是数据存储的基本构建块,为开发人员提供了多种可能性。在这篇正式的博客文章中,我们将探讨Golang数组,从基础知识到高级技巧。通过实际示例和正式的语气,我们将揭示…...

程序连接oracle查询数据的环境配置

连接oracle 数据库真麻烦,还是MySQL方便 Oracle Instant Client 这个东西的版本跟oracle的版本是有讲究的,引用文档的说明 Oracle 标准的客户端-服务器网络互操作性允许不同版本的 Oracle 客户端和 Oracle 数据库之间的连接。有关经过认证的配置&#…...

【BIGRU预测】基于双向门控循环单元的多变量时间序列预测(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

RDD算子操作(基本算子和常见算子)

目录 一、基本算子 1.map算子 2.flatMap算子 3.filter算子 4.foreach算子 5.saveAsTextFile算子 6.redueceByKey算子 二、常用Transformation算子 1.mapValues算子 2.groupBy算子 3.distinct算子 4.union算子 5.join算子 6.intersection算子 7.glom算子 8.groupByKey算…...

互联网Java工程师面试题·Java 面试篇·第五弹

目录 79、适配器模式和装饰器模式有什么区别? 80、适配器模式和代理模式之前有什么不同? 81、什么是模板方法模式? 82、什么时候使用访问者模式? 83、什么时候使用组合模式? 84、继承和组合之间有什么不同&#…...

常见的测试理论面试问题

请解释软件生存周期是什么? 软件生存周期是指从软件开发到维护的过程,包括可行性研究、需求分析、软件设计、编码、测试、发布和维护等活动。这个过程也被称为“生命周期模型”。 软件测试的目的是什么? 软件测试的目的是发现软件中的错误…...

把JS中的map方法玩出花来

一 map是什么 map(callbackFn) map(callbackFn, thisArg)map() 方法是一个迭代方法。它为数组中的每个元素调用一次提供的 callbackFn 函数,并用结果构建一个新数组。 参数 callbackFn 数组中的每个元素执行的函数。它的返回值作为一个元素被添加为新数组中。该…...

液晶显示计算器(延时程序)

#include "delay.h" /*------------------------------------------------ uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请…...

线性代数2:梯队矩阵形式

图片来自 Europeana on Unsplash 一、前言 欢迎阅读的系列文章的第二篇文章,内容是线性代数的基础知识,线性代数是机器学习背后的基础数学。在我之前的文章中,我介绍了线性方程和系统、矩阵符号和行缩减运算。本文将介绍梯队矩阵形式&#xf…...

【JavaEE】网络编程(网络编程基础、Socket套接字)

一、网络编程基础 1.1、什么是网络编程? 网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输) 注意:我们只要满足进程不同就行;所以即便是同一…...

Node学习笔记之模块化

一、介绍 1.1 什么是模块化与模块 ? 将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为 模块化 其中拆分出的 每个文件就是一个模块 ,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他 模块使用 1…...

用matlab求解线性规划

文章目录 1、用单纯形表求解线性规划绘制单纯形表求解: 2、用matlab求解线性规划——linprog()函数问题:补充代码:显示出完整的影子价格向量 1、用单纯形表求解线性规划 求解线性规划 m i n − 3 x 1 − 4 x 2 x 3 min -3x_1-4x_2x_3 min−…...

antd获取/更改form表单数据(表单域数据)

创建ref引用 formRef React.createRef();表单和ref绑定 //ref{this.formRef} 先给Form <Form ref{this.formRef} name"control-ref" onFinish{this.onFinish}><Form.Item name"name" label"Name" rules{[{ required: true }]}>…...

Go学习第三章——运算符与进制

Go学习第三章——运算符与进制 1 算术运算符2 关系运算符3 逻辑运算符4 赋值运算符5 其他运算符5.1 位运算符5.2 跟指针有关的运算符 6 运算符的优先级7 获取用户终端输入8 进制转换8.1 进制基本使用8.2 进制之间的转换8.3 原码 反码 补码8.4 位运算符详解 运算符是—种特殊的符…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...