ViT(Vision Transformer)
ViT把图片切成 patch 当 token
亦作、亦称:Vision Transformer
ViT(Vision Transformer)是将图像切割成固定大小的图块(patch),以 token 序列方式送入标准 Transformer 编码器处理的视觉模型,由 Google Brain 团队于 2020 年提出。凭借在大规模数据上的强大拟合能力,ViT 已成为图像分类、多模态理解等任务的核心骨干架构。
概述
ViT 的核心思路是「把图片当成 token 序列」,直接将 NLP 中的标准 Transformer 平移到视觉领域,无需卷积操作。
- Patch 分块 :将输入图像(如 224×224)切成若干 16×16 的小块,每块展平后线性投影为一个 token 向量。
- 位置编码: 为每个 patch token 加上可学习的一维位置编码,保留空间位置信息。
-[CLS] token 200: 在序列头部插入一个可学习的分类 token,其最终隐向量送入分类头输出预测结果。
-纯 Transformer 编码 :整个编码过程不含卷积操作,依赖多头自注意力(MHSA)捕捉全局关系。
- 数据需求高: ViT 在 ImageNet-1K 上从头训练时表现不如 ResNet;需在 JFT-300M 等超大规模数据集预训练后方能充分发挥优势。
工作原理
ViT 的前向计算分为图像嵌入、Transformer 编码、分类输出三个阶段。
- 图像嵌入:将 H×W 图像切成 N = (H×W)/P² 个 patch(P 为 patch 大小),每个 patch 经线性层映射到 D 维向量,加可学习位置编码后构成输入序列。
- Transformer 编码器:L 层堆叠,每层包含多头自注意力(MHSA)和前馈网络(FFN),并使用 LayerNorm 和残差连接稳定训练。
- 全局注意力:自注意力无感受野限制,每个 patch 可直接关注序列中任意其他 patch,天然捕捉长程依赖。
- 分类输出:[CLS] token 的最终表示送入 MLP 分类头,完成图像分类;也可做全局平均池化替代 [CLS]。
- 计算复杂度:自注意力对序列长度 N 的复杂度为 O(N²),分辨率越高、patch 越小,计算量越大,是主要性能瓶颈。
主要变体
围绕 ViT 的效率和性能问题,学界衍生出大量改进变体。
- DeiT(2020,Meta/Facebook):通过蒸馏 token 和强数据增强,让 ViT 无需超大规模预训练数据也能在 ImageNet 上达到竞争力水平。
- Swin Transformer(2021,Microsoft):引入层级窗口注意力,在局部窗口内计算自注意力并跨层移动窗口,将复杂度降至 O(N),成为密集预测任务的主流骨干。
- MAE(2022,Meta):基于掩码自编码的自监督预训练方法,随机遮挡 75% 的 patch 并让模型重建,大幅提升数据效率。
- ViT-22B:通过规模扩展验证了 ViT 的 scaling 能力,是已公开的最大视觉 Transformer 之一。
- Efficient ViT 系列:如 EfficientViT、TinyViT,专注轻量化部署,通过线性注意力或蒸馏压缩参数量。
应用场景
ViT 已从图像分类扩展到几乎所有主流视觉和多模态任务。
- 图像分类:在 ImageNet 等标准基准上,经充分预训练的 ViT 系列(如 ViT-L/16)已超越经典 CNN 基线。
- 目标检测与分割:以 ViT 或 Swin 为骨干的框架(如 ViTDet、Mask2Former)在 COCO 等基准上取得顶尖结果。
- 多模态预训练:CLIP、ALIGN 等对比学习模型以 ViT 作为图像编码器,支撑图文匹配、零样本分类等任务。
- 视觉语言模型(VLM):GPT-4V、LLaVA 等多模态大模型均以 ViT 提取视觉特征后与语言模型对接。
- 医学影像:TransUNet、Swin-Unet 等将 ViT 引入医学图像分割,利用全局注意力捕捉远距离组织关系。
与 CNN 的对比
ViT 与 CNN 是当前视觉领域的两大主流范式,各有侧重。
- 归纳偏置:CNN 依赖局部卷积核,具有平移不变性和局部归纳偏置;ViT 全局注意力无内置归纳偏置,需更多数据才能学习空间规律。
- 数据效率:小数据集场景下,CNN 通常仍优于原始 ViT;大规模预训练后,ViT 上限更高。
- 可扩展性(Scaling):ViT 的性能随模型规模和数据量增长更为平滑,符合 Scaling Law,CNN 在超大规模下扩展较难。
- 高分辨率任务:全局自注意力在高分辨率下计算代价高,Swin Transformer 等层级结构在密集预测(检测、分割)上更实用。
- 混合架构:将 CNN 特征提取前置与 Transformer 结合的「Hybrid ViT」,在中等数据规模下兼顾局部归纳偏置与全局建模能力。
局限与常见误区
ViT 并非万能,有几个常见误区值得注意。
- 误区:ViT 总是优于 CNN:仅在 ImageNet-1K 无额外预训练时,轻量 CNN 通常仍优于原始 ViT,因局部卷积归纳偏置在小样本时更有效。
- 计算成本高:全局自注意力的 O(N²) 复杂度使高分辨率输入训练代价极大,Swin 等局部注意力方案是常见缓解手段。
- 对预训练数据量敏感:若只在 ImageNet-1K 从头训练,性能明显落后于同等规模 CNN;必须配合大规模预训练或强正则化(如 DeiT 的蒸馏)。
- 位置编码局限:标准 ViT 使用固定分辨率可学习位置编码,迁移到不同分辨率时需插值,可能引入性能损失;RoPE 等改进方案已被引入视觉领域。
发展脉络
ViT 的演进折射出视觉与语言模型深度融合的趋势。
- 2017:Transformer 在 NLP 领域提出(「Attention Is All You Need」,Google),为 ViT 奠定基础。
- 2020(10 月):Google Brain 在 arXiv 发布 ViT 论文(「An Image is Worth 16x16 Words」,arXiv 2010.11929)。
- 2020(12 月):Meta/Facebook 提出 DeiT,通过蒸馏让 ViT 在 ImageNet 上无需 JFT 数据即可训练,推动普及。
- 2021:ViT 论文正式发表于 ICLR 2021;Microsoft 发布 Swin Transformer,成为密集预测任务的新骨干标准。
- 2022:Meta 提出 MAE(Masked Autoencoders),用掩码重建自监督预训练 ViT,大幅提升数据效率。
- 2023 至今:ViT 成为多模态大模型(GPT-4V、Gemini、LLaVA 等)的标准视觉编码器,视觉与语言的统一 Transformer 架构趋势持续强化。
常见误解
日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。
- 「把图片切成 patch 当 token」
- 「计算机视觉常见词」
- 「跟 ViT 是一回事吗」
相关术语
和本术语关联紧密的其他词条,便于串联理解。
🎯 考点练习
含该术语的高频面试题,含标准答案与追问。
- 中级概念高频查看详解 →
Vision Transformer(ViT)如何把 Transformer 用于图像?
图像切 patch → 线性嵌入 + 位置编码 → Transformer 编码器,全局自注意力建模,需大数据预训练。
- 中级概念查看详解 →
计算机视觉中的图像分割是什么?
[图像分割](/glossary/semantic-segmentation) 为每个像素分配类别标签。语义分割不区分同类实例;实例分割区分个体;全景分割统一 stuff+thing。是自动驾驶场景理解、医学影像与工业质检的核心技术。
- 高级概念查看详解 →
图像分析中的边缘检测是如何工作的?
边缘检测找图像中灰度/颜色突变的位置,常用一阶导(Sobel、Prewitt)或二阶导(Laplacian)。[Canny](/tools/opencv) 是经典多步算法:高斯平滑 → 梯度幅值方向 → 非极大抑制 → 双阈值滞后连接。边缘是轮廓与 [CNN](/glossary/cnn) 浅层特征的基础。
- 中级概念查看详解 →
多模态模型如何把图像转成 Token?
两条路:ViT 把图像切 patch 做线性投影成连续 token;VQ-VAE 把图编码后量化到离散码本得到离散 token。
延伸阅读
从知识库精选 2 篇文章,帮助深入理解该术语。
外部参考
维基百科:查看「ViT」词条本页内容为本站原创撰写;维基百科链接仅作延伸参考。
