这里都是Vision Transformer
#Vision Transformer~1
还是关于 Transformer的搬运啊~~ 勿怪 其实大佬们已经推出一阵了 发点有点晚了
一个简单、渐进、但必须知道的基线:用于Vision Transformer的自监督学习。尽管标准卷积网络的训练方法已经非常成熟且鲁棒,然而ViT的训练方案仍有待于构建,特别是自监督场景下的训练极具挑战。
何恺明团队新推出的自监督学习+Transformer=MoCoV3之前,我想和大家分享下最近我看到一篇目标检测文章,最近因为一直推送目标检测类的,觉得这篇是个不错的idea。
什么是开放世界中的目标检测呢?
A model is tasked to:
- 在没有明确的监督下,能够将没有见过的目标识别为“未知”类;
- 对于这些认定为“未知”的类,当逐步获得对应的标签之后,能够渐进地学习它们,且不遗忘以前学过的那些类别。
这个与以前提出的Open Set和Open World image classification的最大不同在于:在目标检测器的训练过程中,将那些未知的目标当做背景。
深度学习加快了目标检测的研究进展,但目前现有方法都在一个强假设下进行:所有要被检测的种类都需要在训练阶段提供。当我们放宽这一假设,就会出现两个具有挑战性的问题:
- 测试图像可能包含未知类的目标,这些未知目标也需要被归类;
- 当被识别为未知类别的标签已经可用时,模型需要进一步学习新的类别。
论文奉上
论文:https://arxiv.org/pdf/2103.02603.pdf
代码:https://github.com/JosephKJ/OWOD
第一行:在每个增量学习步骤中,模型识别未知对象(用“?”表示),这些对象被逐步标记(蓝色圆圈)并添加到现有知识库(绿色圆圈)中。
第二行:开放世界目标检测模型使用基于能量的分类头和未知感知RPN识别潜在的未知对象。此外,在特征空间中执行对比学习来学习判别集群,并且可以以连续的方式灵活地添加新类而不会忘记以前的类。
对比聚类
基于RPN自动标记机制
框架的核心就是利用RPN的建议框类别无关特性,将RPN提取的置信度最高的前K个背景建议框作为位置对象的建议框位置向后传递。
基于能量的分类头
首先是基于前面提到的对比聚类将不同类别的特征表征尽量的拉开了,研究者选择对不同类别的概率密度函数进行建模,作为不同类别的区分,作者用图进行了说明。
如上所示,已知和未知数据点的能量值表现出明显的分离。研究者在每个样本上拟合Weibull分布,并使用这些分布来识别未知的已知和未知样本。
Alleviating Forgetting
在识别未知数之后,开放世界检测器的一个重要要求是能够学习新的类,当提供一些感兴趣的未知类的标记示例时。重要的是,在此阶段将不存在先前任务的训练数据,因为从头开始重新训练不是可行的解决方案。
仅使用新类实例进行训练将导致灾难性地遗忘之前的类。研究者注意到已经开发了许多涉及的方法来减轻这种遗忘,包括基于参数正则化的方法,示例重放(exemplar replay),动态扩展网络(dynamically expanding networks)和元学习。
检测效果分析
仅在任务 1 上训练的ORE在上图(a)中成功地将风筝定位为未知对象,而在任务3中了解风筝后,它逐渐学习检测上图(b)中的风筝和飞机。
在任务1上训练后来自ORE的预测。“大象”、“苹果”、“香蕉”、“斑马”和“长颈鹿”尚未引入模型,因此成功归类为“未知”。该方法将其中一只“长颈鹿”错误分类为“马”,显示了ORE的局限性。
有关对比聚类的更多详细信息
使用对比聚类来确保潜在空间分离的动机有两个:1)它使模型能够将未知实例与已知实例分开,从而促进未知识别;2)它确保每个类的实例与其他类很好地分离,缓解遗忘问题。
对比损失被添加到Faster R-CNN 损失中,整个网络被端到端的训练。因此,在 Faster R-CNN管道中RoI Head中的残差块之前和包括网络的所有部分都将使用来自对比聚类损失的梯度进行更新。
在学习任务1后,桌子顶部笔记本电脑旁边的几个项目被识别为未知。笔记本电脑、书和鼠标作为任务4的一部分被引入。external-storage和walkman(两者都没有介绍过)最初被识别为未知,但学习任务4后没有被检测到,是ORE的失败案例之一。
最终在任务2中学习到被识别为未知的手提箱,以及对椅子的误报检测。
上图(a)是ORE学习Task 2后产生的结果。由于没有引入Task 3类,如apple和Orange,ORE识别出来并正确标注为unknown。在学习Task 3之后,这些实例在上图(b)中被正确标记。一个未识别的类实例仍然存在,ORE成功地将其检测为未知。
#Vision Transformer~2
如何提高ViT的效率?Vision Transformer在CV任务中的速度如何保证?可以是让模型更容易训练,减少训练时间,也可以减少模型部署在硬件上的功耗等等。本文主要讲inference time的效率问题,简单说就是如何让模型更快,同时性能不掉太多甚至反升。
我的PhD课题是Vision Transformer的efficiency问题,这个topic范围很广,可以是inference efficiency, 力争speed and accuracy trade-off。也可以是training efficiency,让模型更容易训练,如训练时间少,需要的硬件资源不用很多。也可以是energy efficiency,减少模型部署时在硬件上的功耗。当然也有data efficiency,怎么用更少的数据在短时间训练出较好的模型。
本文主要讲inference time的效率问题,简单说就是如何让模型更快,同时性能不掉太多甚至反升。从个人角度来看,如果性能的增长是以巨大的速度牺牲为代价,那么模型的意义便少了许多。
背景
2021开年后,Transformer在CV任务中大放光彩,Google的初版Vision Transformer(ViT)虽然方法简单,但通过大量的实验证明了Transformer在计算机视觉(CV)任务上,特别是image classification上的可能性。论文展示,ViT经过large-scale pretrain之后在ImageNet上可以达到和CNN媲美的性能。
然而,CV的任务可不止image classification,给一个图片预测一个label就结束了。对于大量dense prediction的任务而言, 比如object detection和segmentation,Transformer都有其局限性,而其中最关键的有两点,
- 缺少金字塔特征(Pyramid Feature Map)。 层级特征对物体的检测很重要,特别是小物体,因为feature map的scale如果比较小的话,小物体相当于直接被忽视了。常见的CNN,如ResNet将网络划分四个stage,每个stage处理一种scale的feature map, 如1/4,1/8, 1/16,1/32。这样出来的层级特征可以送入FPN进行处理,然后作为输入给detection或者segmentation的head。而ViT只处理1/16这个scale下的feature map,直观上来看是对dense prediction任务不利的。
- Multi-head Self-attention(MSA)计算开销问题。 MSA是一个quadtic complexity的模块,小图还好,但是遇到分辨率大的时候,无论是显存占用还是计算速度都会大打折扣。然而像detection和segmentation这种任务,图片一般都比较大,如512x512。按照ViT的patch embedding划分,图片会分成 (512/16)x (512/16) = 1024。此时ViT-Base的单层MSA会消耗4G FLOPs。然而整个ResNet-50也才消耗4G FLOPs. 因此MSA的计算开销限制了ViT在高分辨率图像上的效率。
对于第一个问题,一个自然的想法就是给ViT引入pyramid feature map, 这也是ICCV 2021积极涌现的idea,如Swin, PVT。然而,引入结构上的hierarchy造成了前期feature map的scale比较大,此时MSA的计算开销上涨。这使得efficient attention在ViT上成为了必需品,正如Swin用到的local window attention和PVT的spatial reduction attention,当然后面有更多的architecture,更多的attention,在此就不一一举例了。
自此,ViT适配下游任务已经基本没有了大的障碍。大致结构上和CNN保持一致,如划分stage,逐渐对feature map做downsampling。得益于attention的结构, ViT在各个task上性能都保证的不错。那接下来的主要问题就是对ViT在CV任务中进行优化。
什么最影响ViT的速度?
影响一个模型速度的东西无非是两个大方面,一是结构,二是处理的数据规模,剩下基本是工程上的优化。从个人观点来看,对于ViT来说,影响结构效率的有两个,
- Efficient General Architecture. 整体结构上的设计需要变得有效并且scalable
- Efficient Multi-head Self-attention. 注意力机制必须足够efficient
对于处理的数据规模问题,这个CNN也有,但有一个明显区别于CNN的是,ViT对input是permutation-invariant的,只要加入了positional encoding就可以无视2D spatial order。所以针对ViT而言,减少input tokens是可以做推理加速的,如本人在ICCV 2021上的工作HVT: Scalable Vision Transformers with Hierarchical Pooling(https://arxiv.org/abs/2103.10619)。
结构上怎么设计最合理?- LITv1
HVT之后,我们曾经的一个想法是进一步对token做一个dynamic的选取,因为直觉上来讲dynamic要比unifrom的pooling要好,了解这一领域的同学可能有点耳熟,没错,这个思路就是DynamicViT(https://arxiv.org/abs/2106.02034)。
然而,实验过程中的一个发现,使得我们展现给大家的是LIT, Less is More: Pay Less Attention in Vision Transformers(https://arxiv.org/abs/2105.14217) (AAAI 2022)。
和DynamicViT利用pretrained weights和plain ViT不一样,我们直接从hierarchical Vision Transformer入手并且train from scratch,如PVT,用几层FC对前两个stage中每个block的input tokens做一个dynamic的选取,使得前期MSA只需要处理1/4, 1/8 scale下选取的部分token。这个思路听起来感觉没什么问题,可视化效果也确实不错,如下面是去年基于PVT-S做sparse选取token做的一个可视化:
虽然但是,当我们对比random sampling的baseline时,发现性能差距并不大,一番分析之后,我们直接训练了一个完整的基于原始MSA的PVT-Small,通过可视化attention head, 我们发现前期的head只能关注于很小的local区域,尤其是第一个stage的MSA,attention weight基本都在关注自己,我们进一步在论文给出了理论上的解释。
基于这个发现,我们做了一个在当时来看(2021.05)比较大胆的决定,直接拿掉前两个stage的所有MSA layer,这样前期的Transformer block中只剩下了FFN, 而后期的两个stage直接采用最原始的MSA。这使得我们模型的整体结构看起来非常简单,如下面所示。
我们把这种设计原则在Swin Transformer和PVT上做了验证,结果显示这种方案不仅不降性能,还因为避开了前期MSA的计算开销,减小了理论复杂度,大幅度加快了推理速度。
Model | Params (M) | FLOPs (G) | Throughputs (imgs/s) | ImageNet@Top-1 |
PVT-S | 25 | 3.8 | 1,058 | 79.8 |
PVT-S w/ remove early MSAs | 19 | 3.6 | 1,388 | 80.4 |
Swin-Ti | 28 | 4.5 | 960 | 81.3 |
Swin-Ti w/ remove early MSAs | 27 | 4.1 | 1,444 | 81.3 |
另外我们在LIT中提出了一个Deformable Token Merging module (DTM),使得feature map在下采样时可以动态的根据前景信息对token做选取。经过可视化发现学习到的offset十分精准地捕捉到了前景物体信息。相关可视化代码已公开在https://github.com/ziplab/LIT。
上面每张图片中,绿框代表最后一个scale下(1/32)的某个位置的token,红色点表示DTM在downsample时最终选取的1/4 scale的token
阶段总结: LIT在结构上主要陈述了一个事情,backbone前期采用MSA的效益并不高。即使是擅长global attention的MSA也依然重点关注local区域,何况前面的feature map比较大,MSA处理高分辨图像的开销很大,即使采用efficient attention也难以避开这部分计算。
所以我们看到后来的Uniformer, MobileViT,EfficientFormer都是这种前面local后面global的结构。想要快,前面还是得尽量避开MSA。
Architecture和Attention一起优化 - LITv2
在前期的工作中,我们定下了ViT的Architecture设计原则,但第一版LIT有两个问题影响实际推理速度,
- RPE虽然能涨点,但对于LIT来说,由于后面需要动态根据input大小做插值,所以对速度影响很大。
- 后两个stage的原始MSA针对高分图像还是会有很大的计算开销。
基于此,我们提出了LITv2:Fast Vision Transformers with HiLo Attention(https://arxiv.org/abs/2205.13213) (NeurIPS 2022), 主要对LIT做了两点改进,
- 去掉了relative positional encoding (RPE), FFN中加入depthwise convolution来引入conditional positional embedding。通过引入depthwise conv不仅能引入positional encoding, 还能同时增大网络前期的receptive field。(因为LIT前面两个stage只有FFN)
- 换上了全新的attention方法,HiLo。
Attention还能更快
直接影响ViT在高分辨率图像上的效率的还是attention。从21年到现在,这一领域已经针对ViT提出了不少attention的变种,如SRA(https://arxiv.org/abs/2102.12122)(ICCV-21),local window(https://arxiv.org/abs/2103.14030)(ICCV-21), focal attention(https://arxiv.org/abs/2107.00641)(NeurIPS-21), QuadTree(https://arxiv.org/abs/2201.02767) (ICLR-22)。和MSA相比,这些方法都能保证更优的理论复杂度。但是我们注意到FLOPs只能反映理论复杂度,而真正想在CV任务中beat过纯CNN的话,除了性能,实测速度也十分关键,因为理论复杂度并不能反应GPU和CPU上的实际速度。影响实测throughput/latency的还有memory access cost和其他难以被统计进FLOPs的因素,如for-loop。
以实测速度为核心,我们在LITv2中提出了HiLo。HiLo的设计理念很简单: 在信号处理中,高频关注local detail, 因此就用部分head做local window attention去捕获,而低频关注global structure,对local detail并不太在乎,所以另一部分head只需处理average pool的低频信号,这样高低频同时捕捉,实现单层MSA同时抓取local和global信息。相对应的branch,我将它命名为Hi-Fi和Lo-Fi,如下图所示。
为了保证实际速度,HiLo避开了一些不能算到FLOPs但损害速度的运算,如overlapping window和interpolation。基于此,HiLo在实测速度,memory占用,以及性能上都超越了SOTA方法。
在CPU和GPU上,单层HiLo的推理速度非常快
上图的测试结果可以参考我的vit-attention-benchmark(https://github.com/HubHop/vit-attention-benchmark)仓库。
又快,又好,又容易训练的LITv2
LITv2共推出了三个变种,small, medium, base, 为了公平对比,三个模型的宽度和深度和Swin Transformer一样,超参seed一点没调。LITv2整体在ImageNet-1K上效果占优,同时降低了训练显存要求,推理速度更快。
由于资源实在有限,对比Swin-Large和ImageNet-22k上的setting确实没法跑。。。。
另外我们在多个GPU平台上测试了推理速度(来自reviewer的意见)。对比ResNet-50和其他11个最近的ViT模型,相似参数量下,LITv2-S在速度和理论复杂度上实现了全面超越,同时ImageNet的Top-1 accuracy在第一梯队。
上面关于LITv2的Speed测试和运行示例都已公开在:https://github.com/ziplab/LITv2,欢迎大家尝试。
未来还能做什么
Vision Transformer的故事还在继续,今年NeurIPS投稿也能看到大家陆续也在关注实测速度了,如TRT ViT,EfficientFormer, 但实际上ViT的工业落地相比CNN可能还是会有障碍。如量化上,ViT还是在低bit上还有很大提升空间。除此之外,我们组(https://ziplab.github.io/)也在探索Transformer的其他efficiency问题,比如
ViT的Training efficiency还有很大的空间。 ViT普遍难训练,需要的显存大,训练时间长。特别是backbone的公认setting是1024的batch size + 8 GPUs,使得很多小组连ViT跑都跑不起来(8卡 32GB V100不是所有人都有的),针对这一问题我们提出了一个针对Transformer的一个memory-efficient的训练框架: Mesa: A Memory-saving Training Framework for Transformers(https:arxiv.org/abs/2111.11124). 和普通训练相比,Mesa可以做到显存节省一半,同时与checkpointing和gradient accumulation等技术方案不冲突。
Transformer的能源消耗也是一个问题,特别是当下很多大组在跑以Transformer为backbone的大模型,训练时所造成的电力损耗,碳排放对Green AI这一长远目标不利。针对Energy efficiency,我们组在NeurIPS 2022最新的工作 EcoFormer: Energy-Saving Attention with Linear Complexity(https://arxiv.org/abs/2209.09004) 提出了一个Transformer二值化的全新方案,全新设计的EcoFormer是一个general的efficient attention, 性能和功耗上都优于一众线性复杂度的Linformer, Performer等,同时在45nm CMOS microcontroller上能耗更低,速度更快。
至于CNN和Transformer哪个好的问题,这个答案其实不必再过多讨论了,因为两者互补。通过合理地配置CNN和MSA在Backbone中的位置,可以让网络得到双倍的快乐。更不用说Convolution和MSA两者之间本身存在一种联系,比如我们组的另一篇工作:Pruning Self-attentions into Convolutional Layers in Single Path(https://arxiv.org/abs/2111.11802), 巧妙地通过参数共享将计算复杂度较高的attention layer剪成更为efficient的convolutional layer,工程细节可以参考:https://github.com/ziplab/SPViT。
#Vision Transformer~3
神器啊 到29了 这次还是谷歌的 ,谷歌用「钞」能力放大招:扩展到220亿参数的巨大视觉 Transformer
这里提出了迄今为止最大的密集视觉 ViT 模型 ViT- 22B,具有220亿参数。并发现超大 ViT 病态训练的不稳定性,这种不稳定性组织了模型尺度的进一步扩展。作者通过仔细设计模型,以较高的效率实现模型并行训练。
ransformer 是 Google 的团队在 2017 年提出的一种 NLP 经典模型,现在比较火热的 Bert 也是基于 Transformer。Transformer 模型使用了 Self-Attention 机制,不采用 RNN 的顺序结构,使得模型可以并行化训练,而且能够拥有全局信息。
扩展到220亿参数的巨大视觉 Transformer
论文名称:Scaling Vision Transformers to 22 Billion Parameters
论文地址:
https://arxiv.org/pdf/2302.05442.pdf
与自然语言处理类似,视觉预训练大模型也提高了在各种视觉任务的性能。这不仅依赖于更大的数据集,更大的可扩展的视觉架构,也同样依赖于新的训练策略。
但尽管如此,视觉模型从规模和效果上而言,远远落后于语言模型。迄今为止最大的密集视觉模型只有 4B 参数 ViT[1],而入门级的语言模型通常包含超过 10B [2][3]个参数以上,最大的密集语言模型有 540B 个参数。稀疏模型也展示出同样的趋势,其中语言模型的参数超过了一万亿[4],但最大的稀疏视觉模型只有约 15B[5]。
本文提出了迄今为止最大的密集视觉 ViT 模型 ViT-22B,并发现超大 ViT 病态训练的不稳定性,这种不稳定性组织了模型尺度的进一步扩展。作者通过仔细设计模型,以较高的效率实现模型并行训练。ViT-22B 的质量通过分类和下游任务实验进行评估,在这些任务中它达到或提高了当前的最先进水平。
通过多模态训练一个 text tower 来匹配视觉特征,ViT- 22B 在 ImageNet 上实现了 85.9% 的 zero-shot 精度。此外,该模型是一个很好的老师——用作蒸馏目标,作者训练了一个 ViT- B 学生模型,其在 ImageNet 上达到了88.6% 的 SOTA 精度。
除了分布的改进、ViT-22 的可靠性、不确定性估计和公平性都取得了提升。更重要的是,ViT-22 的特征更好地与人类的感知保持一致,实现了之前未见过的 87% 的形状偏差 (shape bias)。
三句话概括 ViT-22B 模型的架构
ViT-22B 是一种基于 Transformer 的模型,其架构的设计类似于原始 ViT,但包含以下3个修改,以提高效率和大规模训练的稳定性。如下图1所示,用三句话概括分别是:
并行设计
Query 和 Key 的归一化
省略 bias
图1:ViT-22B 模型的架构
第1句话,把 ViT 中的 Self-Attention 层换成了一个 Self-Attention 层加一个 MLP 层的并行设计,公式如下:
注意这里作者不是简单地将两个模块相加,而是使用了一个并行化技巧,即:用于 Self-attention 中的 Query,Key,Value 计算的矩阵乘法和 MLP 的第1个线性层被融合到一个单独的操作中;用于 Self-attention 中的输出投影和 MLP 的第2个线性层也被融合到一个单独的操作中。这种方法最初是由 PaLM[6] 提出的,该技术在不降低性能的情况下将最大模型的训练速度提高了 15%。
第2句话,Self-Attention 中 Query 和 Key 的计算过程添加了归一化。在以往 ViT 扩展的工作中,作者观察到了在训练了几千步之后,training loss 发散了的情况,这毫无疑问使得我们无法训练大型 ViT 模型,尤其是在 8B 参数左右的模型中观察到这种不稳定性。
出现这种现象的原因是:注意力矩阵的值异常 (近似于 one-hot,有的地方注意力很大,其他位置几乎为零) 引起的,这导致注意力权重的熵接近于零。为了解决这个问题,作者采用[7]的方法,将 LayerNorm 应用于 Self-Attention 中 Query 和 Key 的计算过程。具体可以写成:
图2:Self-Attention 中 Query 和 Key 的计算过程添加归一化对 8B 参数模型的影响
第3句话,省略 bias。遵循 PaLM 的做法,从 QKV 投影中去除 bias,并使用没有 bias 项和 centering 的 Layer Normalization[8]。这在不影响训练质量的前提下提升了训练速度。但是,与 PaLM 不同的是,作者对所有 MLP 层使用了 bias 项,因为观察到质量得到了改善,且训练速度没有下降。
ViT-22B 使用 14×14 大小的 Patch,输入图像分辨率为 224×224。类似于原始 ViT,ViT-22B 也采用了可学习的位置编码。在对高分辨率图像 (不同数量的 Patch) 进行微调期间,也对预训练的位置编码执行二维插值。ViT-22B和 ViT-G,ViT-e 的超参数对比如下图3所示。
图3:ViT-22B和 ViT-G,ViT-e 的超参数对比
ViT-22B 的 model card 如下图所示。
图4:ViT-22B 的 model card
ViT-22B 的实现方法:异步并行线性操作计算
ViT-22B 基于 JAX 框架和 FLAX,Scenic 库,它同时利用了模型和数据的并行性。作者使用了 jax.xmap 这个 API,其对所有中间体的分片 (例如权重和激活) 以及芯片间通信提供了明确的控制。
这个高效的实现如下图5和6所示。该怎么理解这个过程呢?
图5:矩阵 A 在不同设备之间按行切分
图6:矩阵 A 在不同设备之间按列切分
数据集和超参
ViT-22B 在 JFT的一个版本上训练,训练集包含大约 4B 图像,并采用 Sigmoid 交叉熵损失以多标签分类方式使用所有分配的标签。
图像分类迁移性能
Linear Probing 实验结果
作者在 ImageNet 上使用了10个周期的动量 SGD,分辨率为 224px,使用 mild random cropping 和 horizontal flipping 作为唯一的数据增强策略,而没有进一步的正则化措施。
如下图7所示是 ViT-22B 的 Linear Probing 实验结果,虽然收益不高,但在这个尺度上仍有显著的改善。而且图7还说明,,像 ViT-22B 这样的大模型的 Linear Probing 可以接近或超过具有小模型的高分辨率完全微调的性能,而 Linear Probing 通常成本更低。
图7:ImageNet 上 ViT-22B 的 Linear Probing 实验结果
作者进一步在细粒度分类数据集 iNaturalist 2017 上测试线性可分性。iNaturalist 2017 有5,089个细粒度类别,属于13个大类。与 ImageNet 不同,不同类别的图像数量是不平衡的。概念的长尾分布对分类更具挑战性。作者将 ViT- 22B 与其他 ViT 变体进行比较,并测试了 224px 和 384px 的输入分辨率。结果如图8所示,可以观察到 ViT- 22B 明显优于其他变体,特别是在标准的 224px 输入分辨率下,这表明 ViT-22B 中大量的参数对于从图像中提取详细信息是有用的。
图8:iNaturalist 2017 上 ViT-22B 的 Linear Probing 实验结果
Out-of-distribution 实验结果
定义: 在分类任务中,给定测试图片,若模型在训练阶段模型见过或类似的图片,则能正确分类;但如果与训练集完全不相关,也会被强制判定为训练集类别中的一种,这种情况是不合理的。OOD 算法希望能判断的分布状况是否与训练集一致,若一致,则称为 in-distribution (ID),否则称为 out-of-distribution (OOD)。使用场景举例: 在 MNIST 上训练的一个分类模型,然后,输入一张“马”的图片,会被归类为数字 0~9,这是错误的。此时,MNIST 数据集就是 in-distribution,相对于 ID 而言,“马”是 out-of-distribution。
作者构建了从 JFT 到 ImageNet 的标签映射,以及从 ImageNet 到不同分布外数据集的标签映射,即 ObjectNet ,ImageNet-v2,ImageNet-R 和 ImageNet-A。ImageNet-R 和 ImageNet-A 使用相同的 ImageNet 的200个标签子空间,而 ObjectNet 有313个类别,其中只考虑与 ImageNet 标签空间重叠的113个类别。那么这样以后,JFT 上面训练出的模型的预测结果就可以转化到其他数据集上面了,这就为模型的 Out-of-distribution 能力提供了一种验证手段。
Out-of-distribution 的评估一般是首先在一个较大的数据集上面 (比如 ImageNet) 做预训练,然后在 ImageNet-R ,ImageNet-A 等数据集上直接评估其性能。实验结果如下图9所示。作者做了两种实验,其一 (图9上半部分) 是首先将 ViT-22B 模型在 JFT 数据集上做预训练,然后在 ObjectNet ,ImageNet-v2,ImageNet-R 和 ImageNet-A 数据集上评估性能。其二 (图9下半部分) 是首先将 ViT-22B 模型在 JFT 数据集上做预训练,然后在 ImageNet 数据集上微调,最后在 ObjectNet ,ImageNet-v2,ImageNet-R 和 ImageNet-A 数据集上评估性能。
图9:OOD 实验结果。标注 "ema" 的模型使用 Polyak 平均进行微调
把图9中 ObjectNet 的实验结果画出来就是图10.
图10:OOD 中 ObjectNet 实验结果
从图9和10中可以得出结论:把模型做大可以增加 Out-of-distribution 的性能。这适用于只看过 JFT 图像的 ViT-22B 模型,以及在 ImageNet 上做了微调过之后的模型。在这两种情况下,ViT-22B 在更大的模型上都延续了 OOD 性能更好的趋势。即使 ImageNet 的性能饱和,但从图10中也可以看到 ObjectNet 上的精度从 ViT-e/14 到 ViT-22B 的显著提升。
密集预测性能
密集预测任务的迁移性能也是评价一个 Backbone 模型的关键因素。作者通过语义分割和单目估计任务评价 ViT-22B 捕获的几何和空间信息的质量。
语义分割任务使用 ViT-22B 作为骨干模型,UperNet 作为分类头,在 ADE20K, Pascal Context 和 Pascal VOC 三个数据集上进行评测。如下图11所示,作者将 ViT-22B 与 DeiT-III ,ViT-G 进行了比较,且只使用了一部分的训练数据。作者使用线性解码器和端到端微调。从图11中可以观察到,当只使用少量的数据时,ViT-22B 骨干更好。例如,当只对1200张图像 (即1/16) 的 ADE20K 训练数据进行微调时,ViT-22B 达到了 44.7 mIoU 的性能,比 DeiT-III Large 提高了8.6 mIoU,比 ViT-G 提高了 2.3 mIoU。当数据量较大时,ViT-G 和 ViT-22B 的性能趋于一致。
图11:ADE20K Fewshot 语义分割实验结果
单目估计任务使用 ViT-22B 作为骨干模型,Dense Prediction Transformer (DPT) 作为单目估计头,或者仅仅使用一个简单的线性解码器作为估计头。实验在 Waymo Open real-world driving 数据集上进行评测。如下图12所示,上半部分 (DPT解码器) 的结果可以观察到,与不同的主干相比,使用 ViT-22B 骨干网络得到了最好的性能。通过将 ViT-22B 骨干与 ViT-e 进行比较,发现扩展架构可以提高性能。使用线性解码器,可再次观察到使用 ViT-22B 骨干模型可获得最佳性能。DPT 和线性解码器之间的差距表明,虽然在 ViT 特征中保留了足够的几何信息,但只有一部分可被普通的线性解码器利用到。
图12:Waymo Open dataset 单目估计实验结果
在研究规模的影响时,除了下游任务性能之外,还有一些重要的方面需要考虑。比如一个主干网络的与人类感知的一致性。
ViT-22B 与人类感知的一致性
ViT-22B 分类决策与人类分类决策的一致性如何?通过这篇论文 "Partial success in closing the gap between human and machine vision" 的方法,作者评估了在 ImageNet 上以不同分辨率 (224,384,560) 微调的三个 ViT-22B 模型。在所有指标中,ViT-22B-224 具有最高的 OOD 稳健性 (图13 (a)), ViT-22B -384 与人类分类精度最接近(图13(b)), ViT-22B-560 具有最大的错误一致性 (即大多数类似人类的错误模式,图13(d))。ViT-22B 模型在视觉模型中有最高的 shape bias 记录:而大多数模型都有很强的 texture bias (20-30% 的 shape bias + 70-80% 的 texture bias),人类的 shape bias 为 96% + 4%,而 ViT-22B -384 达到了前所未见的 87% shape bias + 13% texture bias。总体而言,ViT-22B显著改善了人类视觉物体识别的对齐。
图13:ViT-22B 与人类感知的一致性
除此之外,作者还对 ViT-22B 的公平性,鲁棒性,可靠性和校准。进行了相关实验,详细细节读者可以参考原始论文。作者发现,随着模型尺寸的增加,会出现有利的特性。
总结
本文提出了 ViT-22B,目前最大的视觉 Transformer 模型,有220亿个参数。作者证明,通过对原始架构进行三点修改,可以实现出色的硬件利用率和训练稳定性,从而产生一个在几个基准上实现 SOTA 的模型。作者的评估进一步表明,与现有模型相比,ViT-22B 在形状和纹理偏差方面更符合人类,并在公平性和稳健性方面具有优势。