2022 年,Vision Transformers(ViT) 已经成为了卷积神经网络 (CNN) 的最具有竞争力替代品。虽然卷积神经网络目前在计算机视觉中处于领先地位,被广泛用于不同的图像识别任务。但是ViT 模型在计算效率和准确性方面比当前的 SOTA算法(CNN) 高出了近 4 倍。
目前Transformers模型在自然语言处理(NLP)中被广泛应用。最近人们对ViT和多层感知器(MLP)也越来越关注。
本文将涵盖以下内容:
虽然Transformer架构已经成为在自然语言处理(NLP)任务中的SOTA算法,但它与计算机视觉(CV)相关的应用仍然很少。在计算机视觉中,注意力机制要么与卷积神经网络(CNN)结合使用,要么用于替换卷积神经网络的某些方面,同时保持其完整构成。主流的图像识别算法包括ResNet、VGG、YOLOv3和YOLOv7。
广受欢迎的卷积神经网络(CNN)结构
然而,这种对CNN的依赖性不是强制性的,直接应用于图像序列的纯Transformer可以在图像分类任务中很好地工作。
最近,Vision Transformers(ViT)在几种计算机视觉应用(如图像分类、目标检测和语义分割)的基准测试中取得了极具竞争力的性能。
Vision Transformers (ViT)模型是在ICLR2021上作为会议论文发表的一篇题为“An Image is Worth 16*16 Words: Transformers for Image Recognition at Scale”研究论文中介绍的。它由Neil Houlsby、Alexey Dosovitskiy和Google研究大脑团队的另外10位作者开发的。
VIT模型预训练代码可以在Github上找到(地址:https://github.com/google-research/vision_transformer);ViT模型在ImageNet和ImageNet-21k数据集上进行了预训练。
机器学习中的Transformer是一种使用注意力机制、以对输入数据的每个部分的重要性进行差异加权的深度学习模型。机器学习中的Transformer是有多个自监督注意层构成的,他们主要用于自然语言处理(NLP)和计算机视觉(CV)领域。
机器学习中的Transformer算法很有可能成为可应用于各种数据模式的通用学习方法,包括最近在计算机视觉方面取得的突破,Transformer算法已经实现了当前最优的标准精度和更好的参数效率。
与CNN相比,ViT在使用较少的预训练计算资源的情况下取得了显著的效果。不过,ViT通常具有较弱的感应偏差,在较小数据集上训练时对模型正则化或数据增强(AugReg)的依赖性增加。
ViT是一个基于最初为基于文本的任务设计的Transformer架构的视觉模型。ViT模型将输入图像表示为一系列图像块并直接预测图像的类标签,就像使用Transformer进行文本处理时使用的一系列单词嵌入一样。当对足够的数据进行训练时,ViT表现出很好的性能,以四分之一的计算资源打破了类似的CNN的性能。
当涉及NLP模型时,这些Transformer具有很高的成功率,并且现在也应用于图像识别任务中的图像。CNN使用像素阵列,而ViT将图像分割为visual tokens。视觉Transformer将图像分成固定大小的块,正确地嵌入每个块,并连同位置嵌入信息一起作为Transformer编码器的输入。此外,在计算效率和准确性方面,ViT模型的性能几乎是CNN的四倍。
ViT中的自注意层(the self-attention)使得在整个图像中全局嵌入信息成为可能。该模型还学习训练数据以编码图像块的相对位置,从而重建图像的结构。
Transformer编码器包括:
此外,在每个块之后还有残差连接(Residual Connection),残差连接允许组件直接流过网络而不经过非线性激活。
在图像分类中,MLP层实现分类Head。它在预训练时使用一个隐藏层,并使用一个线性层进行微调。
原始图像(左)和ViT-S/16模型的注意力图(右)
来源:https://arxiv.org/abs/2106.01548
注意力(更准确地说是自注意力)是机器学习Transformer的重要组成部分之一。它是一种计算基元(computational primitive),用于量化成对实体交互,帮助网络学习输入数据中存在的层次结构和对齐。注意力已被证明是视觉网络实现更高鲁棒性的关键因素。
ImageNet-A源图像上ViT注意力图的可视化
来源:https://arxiv.org/abs/2105.07581
Vision Transformer的总体架构以逐步的方式给出如下:
ViTa架构
来源:https://github.com/google-research/vision_transformer
尽管ViT full-Transformer架构是视觉处理任务的一个很有前景的选择,但当在中等大小的数据集(如ImageNet)上从头开始训练时,ViT的性能仍然不如类似大小的CNN替代方案(如ResNet)。
2021,在ImageNet上从头开始训练时,ViT与ResNet和MobileNet的性能基准比较,来源:https://arxiv.org/abs/2101.11986
ViT模型的性能取决于优化器、网络深度和数据集特定的超参数等。与ViT相比,CNN更容易优化一些。
与一个基础的Transformer不用的是需要将一个Transformer与CNN前端结合起来。通常的ViT主线采用stride=16的16*16卷积。相比之下,stride=2的3*3卷积增加了稳定性并提高了精度。
CNN将基本像素转换为特征图。随后,特征图由tokenizer转换为一系列标记,然后输入到Transformer中。然后,Transformer应用注意力技术创建一系列输出标记。最终,投影仪将输出标记重新连接到特征图。后者允许检查潜在的关键像素级细节。这样就减少了需要研究的token数量,大大降低了成本。
特别是,如果在超过1400万张图像的巨大数据集上训练ViT模型,它可以优于CNN。如果不是很大的数据集,最好的选择是ResNet或EfficientNet。即使在微调过程之前,ViT模型也会在一个巨大的数据集上进行训练。唯一的改变是忽略MLP层并添加一个新的D次KD*K层,其中K是小数据集的类数。
为了以更好的分辨率进行微调,需要完成了预训练位置嵌入的2D表示。这是因为可训练线性层可以对位置嵌入进行建模。
ViTa在诸如目标检测、分割、图像分类和动作识别等主要的图像识别任务中有广泛的应用。此外,ViT还应用于生成建模和多模型任务,包括视觉定位、视觉问答和视觉推理。
视频预测和行为识别都是视频处理中需要ViT的部分。此外,图像增强、着色和图像超分辨率处理也使用ViT模型。此外,ViT在3D分析中也有许多应用,例如分割和点云分类。
Vision Transformer模型在计算机视觉中使用多Head自注意力机制,而不需要图像特定的偏差。该模型将图像分割成一系列位置嵌入块,由Transformer编码器处理。这样做是为了理解图像所具有的局部和全局特征。最后,ViT在训练大数据集时,在减少大量训练时间的同时也具有更高的准确率。
原文链接:https://viso.ai/deep-learning/vision-transformer-vit/