引言
ViT(Vision Transformer)是一种用于图像处理的深度学习模型,基于Transformer架构,该架构最初是为自然语言处理(NLP)任务设计的。ViT的提出打破了传统视觉神经网络(CNN)在计算机视觉中的地位主导,采用了Transformer的自注意力机制来处理图像。
随着Transformer在自然语言处理(NLP)领域的成功应用。在计算机视觉研究中,人们对视觉转换器(ViT)和多层感知器(MLP)的兴趣日益浓厚。
ViT的出现标志着计算机视觉模型的一次范式转变,它不再依赖于传统的卷积操作,而是通过Transformer的自注意力机制来处理图像数据。这一创新模型在多个大型图像分类任务中,超越了CNN的表现,并为计算机视觉带来了新的思路。
模型算法下载
在 Coovally AI Hub 公众号后台回复 「 模型算法 」, 即可获取!
ViT模型的起源和历史
以下是关于视觉转换器(Vision Transformer)和相关模型的表格,涵盖了从2017年Transformer的诞生到2021年ViT及其变种的重要发展:
这个表格展示了Transformer架构及其在视觉任务中的发展历程,从最初的NLP模型,到BERT、GPT-3等语言模型,再到DETR、ViT及其变种在计算机视觉领域的成功应用。
什么是ViT?
Vision Transformer(ViT)模型架构是在ICLR 2021上作为会议论文发表的一篇研究论文中介绍的,该论文题为"An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale"。它由Neil Houlsby、Alexey Dosovitskiy和Google Research Brain Team的另外10位作者开发和发布。
ViT的设计灵感来源于Transformer架构,最初Transformer的提出是为了处理NLP任务的序列数据(如文本),它通过自注意力捕捉机制来捕捉图像中各部分之间的全局依赖。ViT的关键创新在于,将图像数据也视为一个"序列",而通过Transformer的自注意力机制来捕捉图像中各部分之间的全局依赖。
图像处理流程
ViT将输入图像分解几个固定大小的块(patches),每个块可以视为一个"图像的令牌",然后对每个块进行展平(flatten)操作,将每个块转化为一个保护。这些处理会被形成Transformer模型,通过自注意力机制进行处理,捕获图像各部分的全局关联。
具体流程如下:
图像切分: 将输入图像(例如大小为𝐻×𝑊RGB图像)划分为多个不重叠的小块(patches),小块的尺寸通常设置𝑃×𝑃。
展平与线性映射: 每个𝑃×𝑃块的大小被展平为一个一维,大小为𝑃²×𝑃,其中C是每个图像块的通道数(例如RGB三通道)。接着,通过一个线性层(又称为投影层)进行放大器映射到模型所需的维度(通常是与Transformer模型中隐藏状态相同的维度)。
位置编码: 由于Transformer本身不具备空间信息的处理能力,ViT在图像块的嵌入上加上位置编码(Positional Encoding),以保留图像的空间结构。
Transformer编码器: 这些图像块的处理(包括位置编码)作为输入确定Transformer编码器。Transformer通过自注意力机制最终处理这些输入,生成的特征表示。
分类头( Classification Head ): 通过一个全连接层(Fully Connected Layer)将Transformer输出的特征映射到目标类别空间,完成分类任务。
自注意力机制
在ViT中,最核心的部分是自注意力机制。它通过计算输入关注之间的相关性来决定每个输入关注对其他关注的程度。简单地说,自注意力机制使得每个图像块不仅可以考虑其自身的信息,还可以从图像中的其他区域获取信息。这种全局依赖的建模对于复杂的视觉任务关系至关重要。
因此,自注意力机制会计算输入数据的加权和,其中权重是根据输入特征之间的相似性计算的。这使得模型能够更加重视相关的输入特征,从而帮助它捕获输入数据中更具信息性的表示。
所以,自注意力机制(Self-Attention)使得ViT能够在图像中建模各个区域之间的长距离依赖,而这正是ViT相对于传统卷积神经网络(CNN)的一个关键优势。
注意力图
在ViT的多头自注意力(Multi-Head Self-Attention,MHSA)机制中,每个输入的图像块(Patch)都会与其他图像块进行关联,并分配不同的注意力权重。
ViT的注意力图通常来自自注意力权重矩阵,该矩阵存储了所有图像块之间的注意力分布。
在ViT的每一层,注意力权重由Softmax(Q·Kᵀ/√d_k)计算得出:
通过Softmax(Q·Kᵀ/√d_k)计算得到一个𝑁×𝑁的注意力权重矩阵,表示每个图像块(Patch)对其他块的影响程度。
注意力图本质上就是这些权重的可视化,我们可以将注意力图可视化为热图网格,其中每个热图代表给定标记与所有其他标记之间的注意力权重。热图中像素的颜色越亮,相应标记之间的注意力权重就越高。通过分析注意力图,我们可以深入了解图像的哪些部分对于手头的分类任务最重要。
Coovally AI模型训练与应用平台
Coovally AI模型训练与应用平台,它整合了30+国内外开源社区1000+模型算法。
平台已部署ViT系列模型算法
在Coovally平台上,无需配置环境、修改配置文件等繁琐操作,可一键另存为我的模型 ,上传数据集,即可使用ViT等热门模型 进行训练与结果预测,全程高速零代码! 而且模型还可分享与下载,满足你的实验研究与产业应用。
ViT与图像分类
图像分类是计算机视觉领域的一项基本任务,涉及根据图像内容为图像分配标签。ViT是专门为了图像分类任务之一而设计的深度学习模型。多年来,像YOLOv7这样的深度CNN一直是用图像分类的SOTA方法。
然而,随着Transformer架构在自然语言处理(NLP)任务中的成功,研究人员将Transformer模型引入图像分类任务,ViT就是其中的重要成果。
计算机视觉研究表明,当使用足够量的数据进行预训练时,ViT模型至少与ResNet模型一样强大。
其他论文表明,Vision Transformer模型在隐私保护图像分类方面具有巨大潜力,并且在抗攻击性和分类准确性方面优于SOTA方法。
CNN与ViT对比
与CNN相比,Vision Transformer(ViT)取得了显著的成果,同时获得的预训练计算资源却少得多。相较于CNN,ViT的归纳偏置(inductive bias)较弱,因此在较小数据集上训练时需依赖更强的正则化或数据增强(如AugReg)。
效率
CNN通过局部感受野进行特征提取,计算量随着网络层数量的增加而增加。而ViT由于使用自注意力机制,其计算复杂度通常为在2),其中N是输入序列的长度(即图像块的数量)。因此,ViT在处理大图像时,计算量可能会比CNN大,但随着硬件性能的提升,Transformer架构也逐渐能够在大型数据集上训练高效。
提取特征的方式
CNN通过拓扑操作进行特征提取,注重局部特征的学习,尤其擅长捕获空间的局部信息。而ViT则通过自注意力机制进行全局特征的学习,能够捕获图像中不同区域之间的长距离依赖。对于复杂的图像任务,ViT的全局建模能力通常能够超越CNN的局部建模。
数据需求
CNN模型一般能够在较小的数据集上取得训练的表现,但ViT通常需要大量的数据才能进行有效的。在数据量较小的情况下,ViT的性能可能不如 CNN。因此,ViT在数据量充足的任务中表现优异。尽管Transformer已成为NLP任务的主流架构,但其在计算机视觉(CV)中的应用仍处于早期阶段。在许多计算机视觉任务中,将注意力机制与卷积神经网络(CNN)结合使用,或者在保留CNN整体结构的同时替代CNN的某些方面。流行的图像识别模型包括ResNet、VGG、YOLOv3、YOLOv7或YOLOv8以及Segment Anything(SAM)。
然而,这种对CNN的依赖并不是强制性的,直接应用于图像块序列的纯变换器可以在图像分类任务中发挥出色的作用。
ViT用例和应用
ViT在流行的图像识别任务中有着广泛的应用,例如物体检测、分割、图像分类和动作识别。此外,ViT在生成建模和多模态任务中也有广泛应用,包括视觉基础任务、视觉问答和视觉推理等。
图像分类
大规模分类: Google的ViT模型在JFT-300M等超大数据集上训练后,分类精度超越ResNet。
细粒度分类: 如鸟类或植物物种识别,ViT可区分细微纹理差异(如羽毛颜色、叶片形状)。
目标检测与分割
自动驾驶: ViT用于道路场景中车辆、行人检测,利用全局上下文减少遮挡误判。
医疗影像: 分割肿瘤区域时,ViT的长程依赖建模能识别病灶边缘的扩散特征。
图像生成
艺术创作: 生成风格化图像时,ViT的自注意力机制能协调全局色彩与局部笔触。
数据增强: 为小样本任务生成逼真训练数据(如罕见病医学影像)。
多模态任务
CLIP模型: OpenAI的CLIP利用ViT提取图像特征,与文本编码对齐,支持零样本图像检索。
视频理解: 将视频帧序列输入ViT,结合时间建模(如TimeSformer)分析动作时序。
ViT通过其全局建模能力,正在重塑计算机视觉领域,未来或与CNN形成互补,成为多模态智能系统的核心组件。
模型算法下载
在 Coovally AI Hub 公众号后台回复 「 模型算法 」, 即可获取!
ViT的挑战
虽然ViT在多个任务中取得了优异的成绩,但它也面临一些挑战,包括与架构设计、泛化、鲁棒性、可解释性和效率相关的问题。
大规模数据集的依赖
ViT在训练时大量的数据才能发挥其优势。由于ViT基于Transformer架构,而Transformer模型在自然语言处理(NLP)中表现出色,主要是因为它能够从大量的文本数据中学习到丰富的上下文信息。在任务关系中,ViT也需要大量的图像数据来学习有效的特征,尤其是全局。
计算复杂度和内存消耗
ViT的计算复杂度较高,尤其是在处理大图像时。Transformer的自注意力机制需要计算所有图像块之间的相似程度,这会导致时间和内存的消耗呈平方级增长。特别是在图像分割成更多小块时,计算的成本将显著增加。
长距离依赖建模的困难
虽然ViT的自注意力机制能够建模全局的长距离依赖,但在某些复杂的视觉任务中,ViT可能仍然难以捕捉图像中的长距离空间信息,特别是在较浅的层次中。
总体而言,尽管ViT在视觉任务中前景广阔,但在ImageNet等中型数据集上从头训练时,其性能仍逊于同规模的CNN(如ResNet)。
总结
ViT模型的提出标志着计算机视觉领域的一次重要突破,展现了Transformer架构在图像处理中的潜力。相比于传统的CNN,ViT通过自注意力机制实现了全局建模,能够捕捉更复杂的图像特征,尤其在大规模数据集上的表现非常优异。尽管ViT在计算复杂度和数据需求上存在一些挑战,但随着硬件的进步和优化算法的提出,ViT无疑会成为未来计算机视觉领域的一个重要方向。
随着研究的深入,我们有理由相信,ViT和Transformer的变种将在未来的视觉任务中发挥更大的作用。