Skip to content

了解 ViT(Vision Transformer)吗? ​

  • 标签:Vision Transformer

🏛 业务架构师 ​

ViT(Vision Transformer)是把 Transformer 从 NLP 搬到视觉的开山之作(Google 2020)——证明"注意力机制通吃模态"。

核心思路:

  1. 图像切块(Patch):把图片切成 16×16 像素的小块(如 224×224 图片切 196 块),每块展平成向量——这是把二维图像"翻译"成 NLP 风格的 token 序列(视觉界的"词");
  2. 线性嵌入+位置编码:每块经线性投影成 embedding,加上位置编码(注意力本身不知道块的空间位置);
  3. 标准 Transformer Encoder:块与块之间做自注意力——每块都能关注全图任意位置,全局建模能力天然优于卷积的局部感受野;
  4. 分类头输出:加个 [CLS] token 的表征接分类器。

与 CNN 的对比(业务视角的关键差异):CNN 靠局部卷积核归纳偏置(平移不变、局部感知),小数据集占优;ViT 无局部先验、靠数据量堆出全局理解,大数据+大规模预训练后全面超越 CNN——这背后是"规模换先验"的范式转移。代价:ViT 注意力对图像分辨率的计算量是平方级,高分辨率场景要窗口注意力等改良(Swin Transformer 的层次化设计)。

在 2026 年的位置:ViT 是多模态大模型的视觉编码器事实标准——CLIP、GPT-4V、Qwen-VL 等的"眼睛"都是 ViT 系。理解它就理解了多模态应用的视觉入口:图文检索、图像理解 Agent、视频分析,底层都是"切块→注意力→与语言对齐"这条链路。

🏗 系统架构师 ​

ViT = Vision Transformer:把 Transformer Encoder 原样搬到图像领域(2020 Google),是视觉 backbone 从 CNN 向 Transformer 迁移的里程碑。机制三点:

  • 图像 token 化:图像切成 16×16 patch,每个 patch 展平 + 线性投影成 token embedding(相当于图像的“词”),加位置编码(可学习,图像无天然顺序)+ [CLS] 分类 token;
  • Encoder 处理:标准多头自注意力对全部 patch 建模——每个 patch 按相关性聚合全图信息(全局感受野从第一层就有,对比 CNN 需堆叠层数才扩大感受野);
  • 输出:[CLS] token 或平均池化接分类头。

与 CNN 的架构对比(关键权衡):

  • 归纳偏置:CNN 内置局部性 + 平移不变性(先验强,小数据友好);ViT 几乎无视觉先验(先验弱,依赖大数据——JFT-300M 级预训练才发力,小数据不如 CNN,这个差距后续被 MAE 自监督缓解);
  • 长程依赖:ViT 天然建模全局关系,大分辨率下性能上限高;
  • 计算:patch 数 = (H/16)²,复杂度随分辨率平方涨——高分辨率成本高(后续 Swin 等层级化改进解决)。

2026 视角的意义:ViT 统一了视觉与语言的架构基座——CLIP(图文对齐)、多模态 LLM(Qwen-VL/LLaVA:ViT 做视觉编码器 + LLM)、视频理解、具身智能感知全建立在它之上。架构统一的工程价值:一套 Transformer 工具链(训练 infra、attention 优化、硬件加速)通吃多模态,生态复用最大化。

💻 全栈开发专家 ​

ViT(Vision Transformer):把图像当成「句子」处理——2020 年 Google 提出,证明了纯 Transformer 架构在视觉上能打甚至超越 CNN。

核心做法:

  1. 切 Patch:图像按 16×16 像素切块(224×224 图 → 196 块),每块展平成向量(16×16×3=768 维),过线性投影成 patch embedding——对应 NLP 里的「token」;
  2. 加位置编码:patch 位置可学习嵌入(图像也有语序:左上/右下);
  3. [CLS] token:前面拼一个可学习的分类 token,最后取它的输出做分类(沿用 BERT 套路);
  4. 标准 Transformer Encoder 堆叠:多头自注意力让每个 patch 与所有 patch 交互——全局感受野一步到位,不像 CNN 要堆很多层才能扩大视野。

关键结论:

  • 数据量小时不如 CNN(归纳偏置弱:CNN 天生懂「局部性+平移不变」,ViT 全靠数据学);数据上到 JFT-300M 级别后反超——这是「规模换先验」的经典案例;
  • 后续演进:DeiT(数据高效训练)、DINOv2(自监督视觉特征,检索/分类直接用)、SigLIP(对比学习,多模态模型的视觉编码器主力)、以及现代多模态模型(GPT-4o、Qwen-VL)的 vision tower 基本都是 ViT 变体。

工程视角:现在做图像特征提取,默认考虑 ViT/DINOv2 预训练模型当 backbone,就像 NLP 用 BERT 一样自然;部署时注意 patch 化的预处理要和训练严格一致(resize 策略不一致是效果骤降的常见坑)。