一句话定义:Vision Transformer(ViT)是一种把图像切成固定大小的小块(patch),再像处理句子里的词一样,用 Transformer 来理解图像的视觉模型。
它是怎么工作的?
可以打个比方:把一张照片剪成很多小卡片,每张卡片就是一个 patch。ViT 先把每个 patch 拉直、压成一个向量,也就是 token embedding;再给每个 token 加上位置编码,告诉模型“你原来在图片的哪个位置”。然后,这些 token 被送进标准的 Transformer 编码器,通过 self-attention(自注意力)互相交流。
这意味着,图片左上角的一块和右下角的一块,即使离得很远,也能直接建立联系。比如判断“这是一只猫”时,耳朵、胡须、尾巴这些 patch 可以彼此印证,而不是只靠层层局部卷积慢慢扩大视野。最后,ViT 可以用一个额外的分类 token,或者把各 patch 的特征聚合起来,完成分类、检测、分割等任务。
和 CNN 有什么区别?
| 对比项 | CNN(卷积神经网络) | ViT |
|---|---|---|
| 看图方式 | 局部卷积,逐层扩大感受野 | 所有 patch 从一开始就能全局注意力 |
| 归纳偏置 | 较强,天生假设局部相关、平移不变 | 较弱,更依赖数据自己学 |
| 数据需求 | 相对少也能工作 | 通常更依赖大规模预训练和正则 |
| 与 LLM 衔接 | 需要额外适配 | 天然是 token 序列,容易接入 |
简单说,CNN 像拿着放大镜逐层看局部,再把局部拼成整体;ViT 像读文章,一开始就让所有“词”互相参照。
为什么它重要?
大语言模型(LLM)处理的是 token 序列。ViT 把图片也变成 token 序列,于是视觉编码器可以接到 LLM 前面,形成图文问答、看图说话、文档理解等多模态系统。这也是视觉模型接入 LLM 的常见做法。
对从业者来说,ViT 让视觉和语言共享 Transformer 架构、训练范式和部署经验;对普通人来说,相册搜索、图文客服、内容审核、自动驾驶感知等场景背后,可能都有 ViT 或其变体。具体实现细节和性能表现,以官方页面和论文为准。
