Vision Transformer:打破CNN垄断,全局注意力机制重塑计算机视觉范式

目录

引言

一、ViT模型的起源和历史

二、什么是ViT?

图像处理流程

图像切分

展平与线性映射

位置编码

Transformer编码器

分类头(Classification Head)

自注意力机制

注意力图

三、Coovally AI模型训练与应用平台 

四、ViT与图像分类

五、CNN与ViT对比

效率

提取特征的方式

数据需求

六、ViT用例和应用

图像分类

目标检测与分割

图像生成

多模态任务

七、ViT的挑战

大规模数据集的依赖

计算复杂度和内存消耗

长距离依赖建模的困难

八、总结


引言

ViT(Vision Transformer)是一种用于图像处理的深度学习模型,基于Transformer架构,该架构最初是为自然语言处理(NLP)任务设计的。ViT的提出打破了传统视觉神经网络(CNN)在计算机视觉中的地位主导,采用了Transformer的自注意力机制来处理图像。

0_Rtb7Jt6378xfe6Z1.png

随着Transformer在自然语言处理(NLP)领域的成功应用。在计算机视觉研究中,人们对视觉转换器 (ViT) 和多层感知器 (MLP) 的兴趣日益浓厚。

ViT的出现标志着计算机视觉模型的一次范式转变,它不再依赖于传统的卷积操作,而是通过Transformer的自注意力机制来处理图像数据。这一创新模型在多个大型图像分类任务中,超越了CNN的表现,并为计算机视觉带来了新的思路。

  • 参考论文:https://arxiv.org/pdf/2010.11929


一、ViT模型的起源和历史

以下是关于视觉转换器(Vision Transformer)和相关模型的表格,涵盖了从2017年Transformer的诞生到2021年ViT及其变种的重要发展:

screenshot_2025-02-10_11-18-27.png

这个表格展示了Transformer架构及其在视觉任务中的发展历程,从最初的NLP模型,到BERT、GPT-3等语言模型,再到DETR、ViT及其变种在计算机视觉领域的成功应用。


二、什么是ViT?

screenshot_2025-02-10_13-59-09.png

Vision Transformer (ViT) 模型架构是在ICLR 2021上作为会议论文发表的一篇研究论文中介绍的,该论文题为“An Image is Worth 16*16 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中,最核心的部分是自注意力机制。它通过计算输入关注之间的相关性来决定每个输入关注对其他关注的程度。简单地说,自注意力机制使得每个图像块不仅可以考虑其自身的信息,还可以从图像中的其他区域获取信息。这种全局依赖的建模对于复杂的视觉任务关系至关重要。

0_0KPEV8QidHkteKeY.png

因此,自注意力机制会计算输入数据的加权和,其中权重是根据输入特征之间的相似性计算的。这使得模型能够更加重视相关的输入特征,从而帮助它捕获输入数据中更具信息性的表示。

所以,自注意力机制(Self-Attention)使得ViT能够在图像中建模各个区域之间的长距离依赖,而这正是ViT相对于传统卷积神经网络(CNN)的一个关键优势。

  • 注意力图

在ViT的多头自注意力(Multi-Head Self-Attention,MHSA)机制中,每个输入的图像块(Patch)都会与其他图像块进行关联,并分配不同的注意力权重。

screenshot_2025-02-10_11-19-24.png

ViT的注意力图通常来自自注意力权重矩阵,该矩阵存储了所有图像块之间的注意力分布。

在ViT的每一层,注意力权重由Softmax(Q·Kᵀ/√d_k)计算得出:

screenshot_2025-02-10_11-25-10.png

计算出的Softmax(Q·Kᵀ/√d_k)形成一个𝑁×𝑁的矩阵,表示每个图像块(Patch)对其他块的注意力分布。

screenshot_2025-02-10_11-24-07.png

注意力图本质上就是这些权重的可视化,我们可以将注意力图可视化为热图网格,其中每个热图代表给定标记与所有其他标记之间的注意力权重。热图中像素的颜色越亮,相应标记之间的注意力权重就越高。通过分析注意力图,我们可以深入了解图像的哪些部分对于手头的分类任务最重要。


三、Coovally AI模型训练与应用平台 

Coovally AI模型训练与应用平台,它整合了整合30+国内外开源社区1000+模型算法。  

screenshot_2025-02-10_14-25-15.png

平台已部署ViT系列模型算法

在Coovally平台上,无需配置环境、修改配置文件等繁琐操作,一键另存为我的模型,上传数据集,即可使用ViT等热门模型进行训练与结果预测,全程高速零代码而且模型还可分享与下载,满足你的实验研究与产业应用。

screenshot_2025-02-10_14-25-46.png


四、ViT与图像分类

图像分类是计算机视觉领域的一项基本任务,涉及根据图像内容为图像分配标签。ViT是专门为了图像分类任务之一而设计的深度学习模型。多年来,像YOLOv7这样的深度CNN一直是用图像分类的SOTA方法。

然而,随着Transformer架构在自然语言处理(NLP)任务中的成功,研究人员将Transformer模型引入图像分类任务,ViT就是其中的重要成果。

图片

计算机视觉研究表明,当使用足够量的数据进行预训练时,ViT模型至少与ResNet模型一样强大。

其他论文表明,Vision Transformer模型在隐私保护图像分类方面具有巨大潜力,并且在抗攻击性和分类准确性方面优于SOTA方法。


五、CNN与ViT对比

与CNN相比,Vision Transformer(ViT)取得了显著的成果,同时获得的预训练计算资源却少得多。与CNN相比,Vision Transformer(ViT)表现出的归纳偏差通常较弱,导致在较小的数据集上进行训练时更加依赖模型正则化或数据增强(AugReg)。

screenshot_2025-02-10_14-14-37.png

  • 效率

CNN通过局部感受野进行特征提取,计算量随着网络层数量的增加而增加。而ViT由于使用自注意力机制,其计算复杂度通常为在2),其中N是输入序列的长度(即图像块的数量)。因此,ViT在处理大图像时,计算量可能会比CNN大,但随着硬件性能的提升,Transformer架构也逐渐能够在大型数据集上训练高效。

  • 提取特征的方式

CNN通过拓扑操作进行特征提取,注重局部特征的学习,尤其擅长捕获空间的局部信息。而ViT则通过自注意力机制进行全局特征的学习,能够捕获图像中不同区域之间的长距离依赖。对于复杂的图像任务,ViT的全局建模能力通常能够超越CNN的局部建模。

screenshot_2025-02-10_14-13-59.png

  • 数据需求

CNN模型一般能够在较小的数据集上取得训练的表现,但ViT通常需要大量的数据才能进行有效的。在数据量较小的情况下,ViT的性能可能不如 CNN。因此,ViT在数据量的任务中表现更为重要。虽然Transformer架构已成为涉及自然语言处理(NLP)的任务的最高标准,但其与计算机视觉(CV)相关的用例仍然很少。在许多计算机视觉任务中,将注意力机制与卷积神经网络(CNN)结合使用,或者在保留CNN整体结构的同时替代CNN的某些方面。流行的图像识别模型包括ResNet、VGG、YOLOv3、YOLOv7或YOLOv8以及Segment Anything(SAM)。

screenshot_2025-02-10_14-10-04.png

然而,这种对CNN的依赖并不是强制性的,直接应用于图像块序列的纯变换器可以在图像分类任务中发挥出色的作用。


六、ViT用例和应用

ViT在流行的图像识别任务中有着广泛的应用,例如物体检测、分割、图像分类和动作识别。此外,ViT在生成建模和多模态任务中也有广泛应用,包括视觉基础任务、视觉问答和视觉推理等。

  • 图像分类

大规模分类:Google的ViT模型在JFT-300M等超大数据集上训练后,分类精度超越ResNet。

细粒度分类:如鸟类或植物物种识别,ViT可区分细微纹理差异(如羽毛颜色、叶片形状)。

  • 目标检测与分割

自动驾驶:ViT用于道路场景中车辆、行人检测,利用全局上下文减少遮挡误判。

医疗影像:分割肿瘤区域时,ViT的长程依赖建模能识别病灶边缘的扩散特征。

  • 图像生成

艺术创作:生成风格化图像时,ViT的自注意力机制能协调全局色彩与局部笔触。

数据增强:为小样本任务生成逼真训练数据(如罕见病医学影像)。

  • 多模态任务

CLIP模型:OpenAI的CLIP利用ViT提取图像特征,与文本编码对齐,支持零样本图像检索。

视频理解:将视频帧序列输入ViT,结合时间建模(如TimeSformer)分析动作时序。

ViT通过其全局建模能力,正在重塑计算机视觉领域,未来或与CNN形成互补,成为多模态智能系统的核心组件。


七、ViT的挑战

虽然ViT在多个任务中取得了优异的成绩,但它也面临一些挑战,包括与架构设计、泛化、鲁棒性、可解释性和效率相关的问题。

  • 大规模数据集的依赖

ViT在训练时大量的数据才能发挥其优势。由于ViT基于Transformer架构,而Transformer模型在自然语言处理(NLP)中表现出色,主要是因为它能够从大量的文本数据中学习到丰富的上下文信息。在任务关系中,ViT也需要大量的图像数据来学习有效的特征,尤其是全局。

  • 计算复杂度和内存消耗

ViT的计算复杂度较高,尤其是在处理大图像时。Transformer的自注意力机制需要计算所有图像块之间的相似程度,这会导致时间和内存的消耗呈平方级增长。特别是在图像分割成更多小块时,计算的成本将显著增加。

  • 长距离依赖建模的困难

虽然ViT的自注意力机制能够建模全局的长距离依赖,但在某些复杂的视觉任务中,ViT可能仍然难以捕捉图像中的长距离空间信息,特别是在较浅的层次中。

总体而言,虽然ViT的Transformer架构是视觉处理任务的一个有前途的选择,但在ImageNet等中型数据集上从头开始训练时,ViT的性能仍然不如类似规模的CNN替代方案(例如ResNet)。


八、总结

ViT模型的提出标志着计算机视觉领域的一次重要突破,展现了Transformer架构在图像处理中的潜力。相比于传统的CNN,ViT通过自注意力机制实现了全局建模,能够捕捉更复杂的图像特征,尤其在大规模数据集上的表现非常优异。尽管ViT在计算复杂度和数据需求上存在一些挑战,但随着硬件的进步和优化算法的提出,ViT无疑会成为未来计算机视觉领域的一个重要方向。

随着研究的深入,我们有理由相信,ViT和Transformer的变种将在未来的视觉任务中发挥更大的作用。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国产编辑器EverEdit - 编辑辅助功能介绍

1 编辑辅助功能 1.1 各编辑辅助选项说明 1.1.1 行号 打开该选项时,在编辑器主窗口左侧显示行号,如下图所示: 1.1.2 文档地图 打开该选项时,在编辑器主窗口右侧靠近垂直滚动条的地方显示代码的缩略图,如下图所示&…

Spring AI 介绍

文章来源:AI 概念 (AI Concepts) _ Spring AI1.0.0-SNAPSHOT中文文档(官方文档中文翻译)|Spring 教程 —— CADN开发者文档中心 本节介绍 Spring AI 使用的核心概念。我们建议仔细阅读它,以了解 Spring AI 是如何实现的。 模型 AI 模型是旨在处理和生成…

Spring MVC 拦截器(Interceptor)与过滤器(Filter)的区别?

1、两者概述 拦截器(Interceptor): 只会拦截那些被 Controller 或 RestController 标注的类中的方法处理的请求,也就是那些由 Spring MVC 调度的请求。过滤器(Filter): 会拦截所有类型的 HTTP …

qt QCommandLineOption 详解

1、概述 QCommandLineOption类是Qt框架中用于解析命令行参数的类。它提供了一种方便的方式来定义和解析命令行选项,并且可以与QCommandLineParser类一起使用,以便在应用程序中轻松处理命令行参数。通过QCommandLineOption类,开发者可以更便捷…

Flink KafkaConsumer offset是如何提交的

一、fllink 内部配置 client.id.prefix,指定用于 Kafka Consumer 的客户端 ID 前缀partition.discovery.interval.ms,定义 Kafka Source 检查新分区的时间间隔。 请参阅下面的动态分区检查一节register.consumer.metrics 指定是否在 Flink 中注册 Kafka…

从Word里面用VBA调用NVIDIA的免费DeepSeekR1

看上去能用而已。 选中的文字作为输入,运行对应的宏即可;会先MSGBOX提示一下,然后相关内容追加到word文档中。 需要自己注册生成好用的apikey Option ExplicitSub DeepSeek()Dim selectedText As StringDim apiKey As StringDim response A…

网络工程师 (29)CSMA/CD协议

前言 CSMA/CD协议,即载波监听多路访问/碰撞检测(Carrier Sense Multiple Access with Collision Detection)协议,是一种在计算机网络中,特别是在以太网环境下,用于管理多个设备共享同一物理传输介质的重要…

WPS中如何批量上下居中对齐word表格中的所有文字

大家好,我是小鱼。 在日常制作Word表格时,经常需要对表格中的内容进行排版。经常会把文字设置成左对齐、居中对齐或者是右对齐,这些对齐方式都比较好设置,有时制作的表格需要把文字批量上下居中对齐,轻松几步就可以搞…

GeekPad智慧屏编程控制

前面通过homeassistant和emqx一番折腾,已经可以控制GeekPad智慧屏的开关了。但是这中间用到的软件对环境依赖非常高,想再优化一下,把这两个工具都装到手机上,最后勉强实现了,但是还得借用模拟器和容器,稳定…

【DeepSeek】在本地计算机上部署DeepSeek-R1大模型实战(完整版)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能(AI)通过算法模拟人类智能,利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络(如ChatGPT&…

可编程网卡芯片在京东云网络的应用实践【BGW边界网关篇】

目录导览 文章背景 一.网关问题分析 BGW专线网关机器运维变更困难 BGW专线网关故障收敛链路复杂且长 BGW专线网关不具备异构架构下的灾备能力 BGW专线网关硬件资源成本居高不下 二.技术方案设计实现 网络拓扑规划与VIP架构升级 硬件实现与N-Tb流量平滑迁移 三.落地…

接口测试Day12-持续集成、git简介和安装、Gitee远程仓库、jenkins集成

持续集成 概念: 团队成员将自己的工作成果,持续集成到一个公共平台的过程。成员可以每天集成一次,也可以一天集成多 次。 相关工具: 本地代码管理:git远程代码管理:gitee(国内)、github(国外)、gitlib(公司…

前端快速生成接口方法

大家好,我是苏麟,今天聊一下OpenApi。 官网 : umijs/openapi - npm 安装命令 npm i --save-dev umijs/openapi 在根目录(项目目录下)创建文件 openapi.config.js import { generateService } from umijs/openapi// 自…

三角测量——用相机运动估计特征点的空间位置

引入 使用对极约束估计了相机运动后,接下来利用相机运动估计特征点的空间位置,使用的方法就是三角测量。 三角测量 和对极几何中的对极几何约束描述类似: z 2 x 2 R ( z 1 x 1 ) t z_2x_2R(z_1x_1)t z2​x2​R(z1​x1​)t 经过对极约束…

WPS计算机二级•文档的文本样式与编号

听说这是目录哦 标题级别❤️新建文本样式 快速套用格式🩷设置标题样式 自定义设置多级编号🧡使用自动编号💛取消自动编号💚设置 页面边框💙添加水印🩵排版技巧怎么分栏💜添加空白下划线&#x…

【编程实践】vscode+pyside6环境部署

1 PySide6简介 PySide6是Qt for Python的官方版本,支持Qt6,提供Python访问Qt框架的接口。优点包括官方支持、LGPL许可,便于商业应用,与Qt6同步更新,支持最新特性。缺点是相比PyQt5,社区资源较少。未来发展…

soular基础教程-使用指南

soular是TikLab DevOps工具链的统一帐号中心,今天来介绍如何使用 soular 配置你的组织、工作台,快速入门上手。  1. 账号管理 可以对账号信息进行多方面管理,包括分配不同的部门、用户组等,从而确保账号权限和职责…

访问Elasticsearch服务 curl ip 端口可以 浏览器不可以

LINUX学习 在虚拟机上面的linux上面用docker 部署Elasticsearch项目后,在linux系统内部用curl ip 端口地址的形式可以访问到Elasticsearch。可以返回数据。 但是在本机的浏览器中输入ip 端口,会报错,找不到服务。 ping 和 trelnet均不通。 …

防火墙安全综合实验

防火墙安全综合实验 一、拓扑信息 二、需求及配置 实验步骤 需求一:根据下表,完成相关配置 设备接口VLAN接口类型SW2GE0/0/2VLAN 10AccessGE0/0/3VLAN 20AccessGE0/0/1VLAN List:10 20Trunk 1、创建vlan10和vlan20 2、将接口划分到对应…

通过客户端Chatbox或OpenwebUI访问识别不到本地ollama中的模型等问题的解决

Chatbox和Open WebUI 等无法获取到 Ollama里的模型,主要是由以下原因导致: Ollama 服务未正确暴露给 Docker 容器或客户端模型未正确下载或名称不匹配网络配置或权限问题 排查以上问题的思路首先排查ollama服务是否启动,然后再看端口号 使…