Swin Transformer V2 Scaling Up Capacity and Resolution(CVPR2022)

news2024/12/25 19:32:16


文章目录

  • 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个代表性视觉基准上创下了新的记录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1120195.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用TensorRT-LLM进行高性能推理

LLM的火爆之后,英伟达(NVIDIA)也发布了其相关的推理加速引擎TensorRT-LLM。TensorRT是nvidia家的一款高性能深度学习推理SDK。此SDK包含深度学习推理优化器和运行环境,可为深度学习推理应用提供低延迟和高吞吐量。而TensorRT-LLM是在TensorRT基础上针对大模型进一步…

LeetCode2409——统计共同度过的日子数

博主的解法过于冗长,是一直对着不同的案例debug修改出来的,不建议学习。虽然提交成功了,但是自己最后都不知道写的是啥了哈哈哈。 package keepcoding.leetcode.leetcode2409; /*Alice 和 Bob 计划分别去罗马开会。给你四个字符串 arriveA…

【每周一测】Java阶段二第四周学习

目录 1、request中的getParameter(String name)方法的功能是 2、request中的getParameter(String name)方法的功能是 3、spring创建bean对象没有以下哪个方式 4、spring依赖注入中没有以下哪个方式 5、RequestParam、RequestBody、PathVariable的应用场景及区别 6、Cooki…

第三章 网络主机扫描

本章是进入渗透测试工作流程的第一步。无论你是高级还是新手,本章都将帮助你成功地进行网络扫描。在开始扫描网络之前,我们将介绍您需要了解的基础知识。之后,我们将深入研究如何扫描网络目标。本章涵盖以下内容: 一、网络基础 二、识别活主…

BUUCTF 大白 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 看不到图? 是不是屏幕太小了 。 密文: 下载附件后解压,发现一张名为dabai.png的图片。 (似乎因为文件被修改过,原图片无法放在这里,这张图片是…

Linux:firewalld防火墙-基础使用(2)

上一章 Linux:firewalld防火墙-介绍(1)-CSDN博客https://blog.csdn.net/w14768855/article/details/133960695?spm1001.2014.3001.5501 我使用的系统为centos7 firewalld启动停止等操作 systemctl start firewalld 开启防火墙 systemct…

怎么去别人的github工程下载

1、网络 确保网络能够顺利访问github,有的地方的公共网络不能访问github,我之前开过科学上网的会员,发现没必要特意开去访问它。可以直接开手机热点,一般是可以顺利访问的。 2、下载 以我的github开源笔记qq-hh/C_review (gith…

砖家预测:腾讯云双11服务器优惠价格表(新鲜出炉)

2023腾讯云双十一服务器优惠价格表多少钱一年?轻量服务器2核2G3M、2核2G4M、2核4G5M、4核8G12M、8核16G18M、16核32G28M和云服务器CVM标准型S5实例优惠价格,腾讯云百科今年双11服务器价格会在当前的价格基础上享受个9折优惠,可领券 https://c…

网站技术查看

当打开一个网页感觉很好奇,他使用了什么框架和什么技术? 常用的网页技术分析网站。 1. w3techs Check web technologies used by a website - Site InfoW3Techs identifies which web technologies such as CMS, programming language, web server an…

Python中的内存管理:深入分析垃圾回收机制

python中有一个名为refchian的环状双向链表,python运行时创建的所有对象都会添加到refchain中。在refchain中的对象PyObject里都有一个ob_refcnt用来保存当前对象的引用计数器,就是该对象被引用的次数,当对象有新引用时ob_refcnt就会增加&…

最简单修改nacos的修改权重修改上线下线报错

前言 我在docker中部署了一个单体的nacos服务,过了一段时间,由于我导入了另外一个nacos的服务配置导致服务注册没问题,但是服务的修改权重和修改服务的上线下线会报错.于是就有了这篇文章,这篇文章主要是解决上面说的问题 正文 1.报错信息展示(这里我已经修复过了已经展示不了了…

【iOS】简单的网络请求

应iOS小组要求,仿写知乎日报需要实现网络请求并解析JSON格式数据,这篇文章仅对基本的网络请求和iOS中的JSON解析作以记录,还涉及到RunLoop的一点小插曲,具体请求过程和原理以后会详细学习!🙏 基本网络流程简…

42915-2023 铜精矿及主要含铜物料鉴别规范

1 范围 本文件规定了铜精矿及主要含铜物料的鉴别特征、鉴别流程、鉴别实施及鉴别报告编写。 本文件适用于进口铜精矿与主要含铜物料的鉴别,主要含铜物料包括冰铜、铜火法冶炼渣、铜火法 冶炼烟尘、铜阳极泥、铜渣精矿等铜火法冶炼工艺产生的物料。 2 规范性引用…

前端Vue框架系列—— 学习笔记总结Day02

❤ 作者主页:欢迎来到我的技术博客😎 ❀ 个人介绍:大家好,本人热衷于Java后端开发,欢迎来交流学习哦!( ̄▽ ̄)~* 🍊 如果文章对您有帮助,记得关注、点赞、收藏、…

VMwarePlayer安装Ubuntu,切换中文并安装中文输入法

1.下载和安装 虚拟机使用的免费版官网链接:VMwarePlayer Ubuntu镜像下载官网链接:Ubuntu桌面版 自己学习使用,不需要考虑迁移之类的。选择单个磁盘IO性能会更高 安装过程中如果出现如下报错,则用系统管理员身份运行 右击VMwa…

造车先做三蹦子220101--机器学习字符(字母、和数字识别)的“小白鼠”与“果蝇”

“0”数字字符零 的图片(16*16点阵): import torch import torch.nn as nn import torch.optim as optim from PIL import Image, ImageDraw, ImageFont from torchvision import transforms import matplotlib.pyplot as pltTimes20001000# 参数设置 font_path &q…

嵌入式实时操作系统的设计与开发(内存资源池存储管理)

内存资源池存储管理 内存资源池存储管理属于固定大小内存管理系统,内存池中内存块的分配和回收是基于第一级内存管理系统的,因为内存池中内存块是由第一级内存管理的算法所确定的。 内存池存储管理系统主要用于操作系统的一些常用结构的内存管理。例如…

位操作符^以及正负数在计算机中的存储

(数据是怎么在计算机中存储的)​ 正数和负数在内存中都是以补码的形式存储的,但不同的是正数的原码,补码,反码都是相同的,而负数的原码,补码和反码是不同的。 负数的原码,补码,反码之间存在什么…

神仙级价格:腾讯云双十一服务器优惠价格表来了

2023腾讯云双十一服务器优惠价格表多少钱一年?轻量服务器2核2G3M、2核2G4M、2核4G5M、4核8G12M、8核16G18M、16核32G28M和云服务器CVM标准型S5实例优惠价格,腾讯云百科今年双11服务器价格会在当前的价格基础上享受个9折优惠,可领券 https://c…

【Java】一只小菜坤的编程题之旅【4】

文章目录 1丶合并两个有序链表2丶栈的压入、弹出序列3丶设计循环队列4丶最小栈 1丶合并两个有序链表 小菜坤的答案: class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode newHeadnew ListNode(0);ListNode tmpnewHead;while…