SwinV2论文解析:CVPR2022顶会|理论部分解析
博客 包括 CVPR2022顶会|SwinV2论文 - 论文解析部分
文章末尾部分 包含 YOLO11、YOLOv8、YOLOv10、RT-DETR、YOLOv7、YOLOv5 等模型 结合 + SwinV2论文 原创改进核心内容
提出了三种主要技术:1) 残差后范数方法结合余弦注意力来提高训练稳定性;2) 一种对数间隔连续位置偏差方法,可有效地将使用低分辨率图像预训练的模型转移到具有高分辨率输入的下游任务;3) 一种自我监督的预训练方法 SimMIM,以减少对大量标记图像的需求。通过这些技术,本文成功训练了一个 30 亿参数的 Swin Transformer V2 模型,这是迄今为止最大的密集视觉模型
论文信息:Swin Transformer V2: Scaling Up Capacity and Resolution
论文链接:https://arxiv.org/abs/2111.09883
文章目录
Swin Transformer V2: Scaling Up Capacity and Resolution论文详解
一、研究背景
在自然语言处理(NLP)领域,大规模模型展现出卓越的性能提升和少样本学习能力。自BERT模型问世以来,语言模型参数规模迅速扩大,性能显著提高,零样本或少样本学习表现也大幅增强,这为通用人工智能奠定了基础。然而在计算机视觉领域,模型规模的扩展相对滞后。尽管大视觉模型在视觉任务中通常表现更好,但目前其绝对模型大小才刚达到10 - 20亿参数级别,且现有大视觉模型大多仅应用于图像分类任务。为成功训练大型通用视觉模型,需解决训练不稳定、预训练与微调时分辨率差异以及对标记数据需求大等关键问题。
二、相关工作
2.1 语言网络与Transformer扩展
Transformer架构已成为语言网络的标准。随着有效自监督学习方法(如掩码或自回归语言建模)的出现,以及缩放定律的发现,语言模型的容量在几年内增长了超1000倍,从BERT - 340M发展到Megatron - Turing - 530B和稀疏Switch - Transformer - 1.6T,推动了语言任务性能的显著提升。
2.2 视觉网络与CNN扩展
CNNs长期以来是计算机视觉的标准网络。从AlexNet开始,架构不断加深、扩大,推动了各种视觉任务的发展。但近年来,CNN架构扩展到约10亿参数时,绝对性能提升并不理想,可能是其归纳偏差限制了建模能力。同时,Transformer开始在视觉领域取得进展,众多视觉Transformer变体被提出以提高精度,但大规模扩展视觉Transformer的工作较少,且大多依赖大量标记图像数据集,仅用于图像分类。
2.3 窗口/内核分辨率转换
对于CNNs,以往工作在预训练和微调时通常固定内核大小。全局视觉Transformer(如ViT)全局计算注意力,注意力窗口大小与输入图像分辨率线性相关。局部视觉Transformer(如Swin Transformer)窗口大小在微调时可固定或变化,常用双三次插值处理预训练和微调间窗口大小的差异。本文提出对数间隔连续位置偏差(Log - CPB)方法,更平滑地转换预训练模型权重以适应更高分辨率窗口。
2.4 偏差项研究
在NLP中,相对位置偏差方法比原始Transformer中的绝对位置嵌入更有益。在计算机视觉中,相对位置偏差方法也被广泛使用,常见做法是直接学习偏差值作为模型权重,也有研究关注如何设置和学习偏差项。
2.5 连续卷积及变体
本文的Log - CPB方法与早期连续卷积及变体相关,这些方法利用元网络处理不规则数据点。Log - CPB方法受其启发,解决了视觉Transformer中任意窗口大小间相对位置偏差转移的问题,并提出对数间隔坐标以减轻大尺寸变化时的外推困难。
三、Swin Transformer V2
3.1 Swin Transformer回顾
Swin Transformer是通用计算机视觉骨干网络,在区域级目标检测、像素级语义分割和图像级图像分类等任务中表现出色。它将层次结构、局部性和翻译不变性等视觉先验引入Transformer编码器,结合了Transformer单元的强建模能力和视觉先验对视觉任务的友好性。
- 归一化配置:原始Swin Transformer采用预归一化配置,这是从语言Transformer和香草ViT继承而来,未进行深入研究。
- 相对位置偏差:是原始Swin Transformer的关键组件,在自注意力计算中引入额外参数化偏差项编码几何关系,公式为:
A t t e n t i o n ( Q , K , V ) = S o f t M a x ( Q K T d + B ) V Attention(Q, K, V)=SoftMax\left(\frac{Q K^{T}}{\sqrt{d}}+B\right) V Attention(Q,K,V)=SoftMax(dQKT+B)V
其中 B ∈ R M 2 × M 2 B \in \mathbb{R}^{M^{2} ×M^{2}} B∈RM2×M2是每个头的相对位置偏差项; Q Q Q, K K K, V ∈ R M 2 × d V \in \mathbb{R}^{M^{2} ×d} V∈RM2×d是查询、键和值矩阵; d d d是查询/键维度, M 2 M^{2} M2是窗口中的补丁数量。相对位置偏差编码视觉元素的相对空间配置,在密集识别任务中至关重要。在Swin Transformer中,沿每个轴的相对位置在 [ − M + 1 , M − 1 ] [-M + 1, M - 1] [−M+1,M−1]范围内,相对位置偏差被参数化为偏差矩阵 B ^ ∈ R ( 2 M − 1 ) × ( 2 M − 1 ) \hat{B} \in \mathbb{R}^{(2 M - 1) \times(2 M - 1)} B^∈R(2M−1)×(2M−1), B B B中的元素取自 B ^ \hat{B} B^。在不同窗口大小转换时,通过双三次插值用预训练中学习的相对位置偏差矩阵初始化微调时不同大小的偏差矩阵。 - 模型容量和窗口分辨率扩展中的问题:在扩展Swin Transformer的容量和窗口分辨率时,发现两个问题。一是模型容量扩展时的不稳定性问题,随着模型从小到大扩展,深层激活值急剧增加,层间激活幅度差异达到 1 0 4 10^{4} 104,进一步扩展到6.58亿参数时无法完成训练。二是跨窗口分辨率转移模型时性能下降,通过双三次插值直接在更大图像分辨率和窗口大小下测试预训练的ImageNet - 1K模型(256×256图像,8×8窗口大小),准确率显著降低,这表明需重新审视原始Swin Transformer中的相对位置偏差方法。
3.2 扩展模型容量
- 后置归一化:原始Swin Transformer(及大多数视觉Transformer)在每个块的开头采用层归一化层,模型容量扩展时,深层激活值显著增加。在预归一化配置中,每个残差块的输出激活值直接合并回主分支,导致主分支幅度在深层不断增大,层间幅度差异大引发训练不稳定。为解决此问题,提出残差后置归一化方法,将每个残差块的输出在合并回主分支前进行归一化,使主分支幅度不会随层数加深而累积。在最大模型训练中,每6个Transformer块在主分支上引入额外层归一化层,进一步稳定训练。
- 缩放余弦注意力:在原始自注意力计算中,像素对的相似性通过查询和键向量的点积计算。在大型视觉模型中,这种方法使一些块和头的学习注意力图常被少数像素对主导,在残差后置归一化配置中更明显。为缓解此问题,提出缩放余弦注意力方法,通过缩放余弦函数计算像素对
i
i
i和
j
j
j的注意力对数几率:
S i m ( q i , k j ) = cos ( q i , k j ) τ + B i j Sim\left(q_{i}, k_{j}\right)=\frac{\cos \left(q_{i}, k_{j}\right)}{\tau}+B_{i j} Sim(qi,kj)=τcos(qi,kj)+Bij
其中 B i j B_{i j} Bij是像素 i i i和 j j j之间的相对位置偏差; τ \tau τ是可学习标量,在头和层间不共享,且 τ > 0.01 \tau > 0.01 τ>0.01。余弦函数自然归一化,可产生更温和的注意力值。
3.3 扩展窗口分辨率
- 连续相对位置偏差:为使相对位置偏差能在窗口分辨率间平滑转移,采用连续位置偏差方法,通过一个小的元网络根据相对坐标生成偏差值:
B ( Δ x , Δ y ) = G ( Δ x , Δ y ) B(\Delta x, \Delta y)=\mathcal{G}(\Delta x, \Delta y) B(Δx,Δy)=G(Δx,Δy)
其中 G \mathcal{G} G是一个小网络,默认是一个2层MLP,中间有ReLU激活函数。元网络 G \mathcal{G} G为任意相对坐标生成偏差值,可自然转移到窗口大小任意变化的微调任务中。推理时,每个相对位置的偏差值可预先计算并存储为模型参数,推理过程与原始参数化偏差方法相同。 - 对数间隔坐标:在跨大变化窗口大小转移时,大量相对坐标范围需外推。为缓解此问题,提出使用对数间隔坐标代替原始线性间隔坐标:
{ Δ x ^ = sign ( x ) ⋅ log ( 1 + ∣ Δ x ∣ ) Δ y ^ = sign ( y ) ⋅ log ( 1 + ∣ Δ y ∣ ) \begin{cases} \hat{\Delta x}=\text{sign}(x) \cdot \log (1+|\Delta x|) \\ \hat{\Delta y}=\text{sign}(y) \cdot \log (1+|\Delta y|) \end{cases} {Δx^=sign(x)⋅log(1+∣Δx∣)Δy^=sign(y)⋅log(1+∣Δy∣)
其中 Δ x \Delta x Δx, Δ y \Delta y Δy和 Δ x ^ \widehat{\Delta x} Δx , Δ y ^ \widehat{\Delta y} Δy 分别是线性缩放和对数间隔坐标。使用对数间隔坐标时,跨窗口分辨率转移相对位置偏差所需的外推比使用原始线性间隔坐标小得多。例如从预训练的8×8窗口大小转移到微调的16×16窗口大小,使用原始坐标,输入坐标范围从 [ − 7 , 7 ] × [ − 7 , 7 ] [-7,7] \times[-7,7] [−7,7]×[−7,7]到 [ − 15 , 15 ] × [ − 15 , 15 ] [-15,15] \times[-15,15] [−15,15]×[−15,15],外推比为 8 7 ≈ 1.14 \frac{8}{7}≈1.14 78≈1.14倍原始范围;使用对数间隔坐标,输入范围从 [ − 2.079 , 2.079 ] × [ − 2.079 , 2.079 ] [-2.079,2.079] \times[-2.079,2.079] [−2.079,2.079]×[−2.079,2.079]到 [ − 2.773 , 2.773 ] × [ − 2.773 , 2.773 ] [-2.773,2.773] \times[-2.773,2.773] [−2.773,2.773]×[−2.773,2.773],外推比为0.33倍原始范围,比原始线性间隔坐标的外推比小约4倍。实验表明,对数间隔CPB方法在转移到更大窗口大小时性能最佳。
3.4 自监督预训练
更大的模型对数据需求更高,以往大视觉模型通常利用如JFT - 3B这样的海量标记数据。本文采用自监督预训练方法SimMIM,缓解对标记数据的需求。通过该方法,仅使用7000万标记图像(JFT - 3B的1/40)就成功训练出30亿参数的强大Swin Transformer模型,并在4个代表性视觉基准测试中达到最先进水平。
3.5 节省GPU内存的实现
当模型容量和分辨率都很大时,常规实现方式的GPU内存消耗过高。为此采用以下优化措施:
- 零冗余优化器(ZeRO):在优化器的一般数据并行实现中,模型参数和优化状态会广播到每个GPU,这对GPU内存消耗不友好。例如,使用AdamW优化器和fp32权重/状态时,30亿参数的模型将消耗48G GPU内存。ZeRO优化器将模型参数和相应优化状态拆分并分布到多个GPU,显著降低内存消耗。实验采用DeepSpeed框架并使用ZeRO stage - 1选项,该优化对训练速度影响较小。
- 激活检查点技术:Transformer层中的特征图也消耗大量GPU内存,在高图像和窗口分辨率时会成为瓶颈。激活检查点技术可显著降低内存消耗,但训练速度会慢30%左右。
- 顺序自注意力计算:在训练高分辨率大模型时,即使采用上述两种优化技术,常规A100 GPU(40GB内存)仍无法满足需求。此时自注意力模块成为瓶颈,因此改为顺序计算自注意力,而非之前的批量计算方法。该优化应用于前两个阶段的层,对整体训练速度影响较小。通过这些实现,成功使用Nvidia A100 - 40G GPU训练30亿参数模型,用于COCO目标检测(输入图像分辨率1536×1536)和Kinetics - 400动作分类(输入分辨率320×320×8)。
3.6 模型配置
Swin Transformer V2保持了原始Swin Transformer的阶段、块和通道设置,有4种配置:
- SwinV2 - T: C = 96 C = 96 C=96, # . b l o c k = { 2 , 2 , 6 , 2 } \#. block =\{2,2,6,2\} #.block={2,2,6,2}
- SwinV2 - S/B/L:
C
=
96
/
128
/
192
C = 96 / 128 / 192
C=96/128/192,
#
.
b
l
o
c
k
=
{
2
,
2
,
18
,
2
}
\#.block =\{2,2,18,2\}
#.block={2,2,18,2},其中
C
C
C是第一阶段的通道数。
进一步扩展Swin Transformer V2为更大规模,分别有6.58亿参数和30亿参数的版本: - SwinV2 - H: C = 352 C = 352 C=352, # . b l o c k = { 2 , 2 , 18 , 2 } \#. block =\{2,2,18,2\} #.block={2,2,18,2}
- SwinV2 - G:
C
=
512
C = 512
C=512,
#
.
b
l
o
c
k
=
{
2
,
2
,
42
,
4
}
\#. block =\{2,2,42,4\}
#.block={2,2,42,4}
对于SwinV2 - H和SwinV2 - G,每6层在主分支上添加额外的层归一化层。为节省实验时间,大规模实验仅使用SwinV2 - G,SwinV2 - H用于另一项关于自监督学习的并行研究。
四、实验
4.1 任务和数据集
在ImageNet - 1K图像分类(V1和V2)、COCO目标检测、ADE20K语义分割和Kinetics - 400视频动作分类任务上进行实验。
- 图像分类:使用ImageNet - 1K V1和V2验证集进行评估,可选ImageNet - 22K进行预训练。对于最大模型SwinV2 - G的预训练,使用私人收集的ImageNet22K - ext数据集(7000万图像),并进行去重处理以排除与ImageNet1K V1和V2验证集重叠的图像。
- 目标检测:使用COCO数据集进行评估,对于最大模型实验,在图像分类预训练和COCO微调阶段之间,使用Object 365 v2数据集进行额外的检测预训练阶段。
- 语义分割:使用ADE20K数据集。
- 视频动作分类:使用Kinetics - 400进行评估。预训练和微调设置详见附录。
4.2 扩展实验
- SwinV2 - G实验设置:为节省训练成本,预训练采用较小的192×192图像分辨率,采用两步预训练方法。首先,使用自监督方法在ImageNet - 22K - ext数据集上预训练20个epoch;然后,在该数据集上使用图像分类任务进一步预训练30个epoch。详细的预训练和微调设置见附录。
- 实验结果
- ImageNet - 1K图像分类结果:SwinV2 - G在ImageNet V2基准上达到84.0%的top - 1准确率,比之前的最佳结果(83.3%)高0.7%;在ImageNet - 1K V1上的准确率略低(90.17%对90.88%),性能差异可能源于数据集过拟合程度不同。SwinV2 - G使用更少的训练迭代次数和更低的图像分辨率,仍表现出色。与原始SwinV1 - B和SwinV1 - L相比,SwinV2 - B和SwinV2 - L分别有0.8%和0.4%的提升,SwinV2 - L的增益缩小可能意味着超过此规模需要更多标记数据、更强的正则化或更先进的自监督学习方法。
- COCO目标检测结果:SwinV2 - G在COCO test - dev上达到63.1/54.4的box/mask AP,比之前的最佳结果(61.3/53.0)高1.8/1.4,表明扩展视觉模型对目标检测这类密集视觉识别任务有益。使用不同窗口大小测试可额外获益,可能归因于有效的Log - spaced CPB方法。
- ADE20K语义分割结果:SwinV2 - G在ADE20K验证集上达到59.9 mIoU,比之前的最佳结果(58.4)高1.5,表明扩展视觉模型对像素级视觉识别任务有益。测试时使用更大窗口大小可额外带来0.2的增益,可能归因于Log - spaced CPB方法。
- Kinetics - 400视频动作分类结果:SwinV2 - G达到86.8%的top - 1准确率,比之前的最佳结果高1.4%,表明扩展视觉模型对视频识别任务也有益。测试时使用更大窗口大小可带来0.2%的额外收益,可能归因于Log - spaced CPB方法。
4.3 消融研究
- 对残差后置归一化和缩放余弦注意力的消融:将提出的残差后置归一化和缩放余弦注意力方法应用于Swin Transformer的消融实验表明,这两种技术在tiny、small和base模型尺寸下均提高了准确率,总体分别提高了0.2%、0.4%和0.5%,对更大模型更有益,对ViT架构也有0.4%的提升。同时,这两种技术的组合稳定了训练,原始Swin Transformer在大尺寸模型时深层激活值几乎爆炸,而Swin Transformer V2的激活值行为更温和。在巨大尺寸模型上,原始Swin Transformer的自监督预训练会发散,而Swin Transformer V2则能正常训练。
- 不同方法扩展窗口分辨率的消融:对比从预训练的256×256分辨率扩展到下游任务更大分辨率时,3种方法在ImageNet - 1K图像分类、COCO目标检测和ADE20K语义分割任务上的性能。结果表明:不同方法在预训练时准确率相似(81.7% - 81.8%);转移到下游任务时,两种连续位置偏差(CPB)方法始终比Swin Transformer V1中使用的参数化位置偏差方法表现更好,对数间隔版本比线性间隔版本略好;预训练和微调之间的分辨率变化越大,对数间隔CPB方法的优势越明显。在不进行微调的情况下,扩大窗口大小,对数间隔CPB方法的识别准确率仍保持较好,而原始方法的准确率显著下降。这表明可通过测试时调整窗口大小提高准确率。
五、结论
本文提出了将Swin Transformer扩展到30亿参数并使其能够处理高达1536×1536分辨率图像的技术,包括残差后置归一化和缩放余弦注意力以扩展模型容量,对数间隔连续相对位置偏差方法以有效跨窗口分辨率转移模型。改进
芒果YOLO系列改进:基于 SwinV2 原创改进内容🚀🚀🚀
5.1 将 SwinV2 改进到 YOLO11 中 - 基于 SwinV2 原创改进核心内容
详情改进内容点击:🚀🚀🚀芒果YOLO11改进:主干篇:结合 Swin Transformer V2结构,Swin Transformer V2:通向视觉大模型之路
5.2 将 SwinV2 改进到 YOLOv8 中 - 基于 SwinV2 原创改进核心内容
详情改进内容点击:🚀🚀🚀芒果YOLOv8改进:主干篇:结合 Swin Transformer V2结构,Swin Transformer V2:通向视觉大模型之路
5.3 将 改进到 YOLOv10 中 - 基于 SwinV2 原创改进核心内容
详情改进内容点击:🚀🚀🚀芒果YOLOv10改进:主干篇:结合 Swin Transformer V2结构,Swin Transformer V2:通向视觉大模型之路
5.4 将 SwinV2 改进到 RT-DETR 中 - 基于 SwinV2 原创改进核心内容
详情改进内容点击:🚀🚀🚀主干篇:结合 Swin Transformer V2结构,Swin Transformer V2:通向视觉大模型之路 适用于 ultralytics 版本的 RT-DETR
5.5 将 SwinV2 改进到 YOLOv7 中 - 基于 SwinV2 原创改进核心内容
详情改进内容点击:🚀🚀🚀芒果YOLOv7改进:主干篇:结合 Swin Transformer V2结构,Swin Transformer V2:通向视觉大模型之路
5.6 将 SwinV2 改进到 YOLOv5 中 - 基于 SwinV2 原创改进核心内容
详情改进内容点击:🚀🚀🚀芒果YOLOv5改进89:主干篇:结合 Swin Transformer V2结构,Swin Transformer V2:通向视觉大模型之路