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 是一回事吗」

相关术语

和本术语关联紧密的其他词条,便于串联理解。

🎯 考点练习

含该术语的高频面试题,含标准答案与追问。

延伸阅读

从知识库精选 2 篇文章,帮助深入理解该术语。

  1. 1

    CNN 卷积神经网络(进阶):从 LeNet 到 ResNet

    卷积神经网络完整指南。从卷积操作的数学原理出发,系统讲解 LeNet、AlexNet、VGG、GoogLeNet、ResNet 等经典架构的演进,包含 Python 从零实现 CNN 和迁移学习实战。

  2. 2

    卷积操作详解(实战):卷积核、步长、填充

    深入理解卷积运算的每一个细节,掌握 CNN 的基石

外部参考

维基百科:查看「ViT」词条

本页内容为本站原创撰写;维基百科链接仅作延伸参考。