掌握 ViT(Vision Transformer)模型结构——Transformer 如何征服计算机视觉领域

发布时间:2026/6/17 6:02:21

掌握 ViT(Vision Transformer)模型结构——Transformer 如何征服计算机视觉领域 目录一、前言二、ViT 出现之前的视觉模型一CNN统治时代二CNN的优势三CNN的局限性三、Transformer为什么能用于图像一Transformer的优势二问题来了四、ViT核心思想五、ViT整体结构六、Patch切分原理一为什么要切分二切分过程三结构示意七、Patch Embedding原理一Patch无法直接输入Transformer二展开过程三线性映射八、CLS Token原理一什么是CLS Token二作用三分类阶段九、位置编码原理一为什么需要位置编码二输入结构十、Transformer Encoder结构一Multi-Head Attention二Feed Forward三LayerNorm十一、ViT核心工作流程十二、ViT为什么有效一全局感受野二更强长距离建模能力三结构统一十三、ViT存在的问题一数据需求巨大二小数据集效果一般三计算量较高十四、ViT的重要改进模型一DeiT二Swin Transformer三BEiT四MAE五SAM十五、PyTorch实现ViT核心思想十六、ViT与CNN对比一CNN二ViT三未来趋势十七、ViT对计算机视觉发展的意义十八、总结在计算机视觉领域卷积神经网络CNN长期占据统治地位。从经典的LeNetAlexNetVGGGoogLeNetResNetEfficientNet到后来的各种目标检测和图像分割模型。几乎都建立在 CNN 之上。然而到了2020年。Google Research 提出了一篇轰动整个视觉领域的论文《An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale》即Vision Transformer简称ViT这篇论文首次证明Transformer 不仅能够处理自然语言还能够直接用于图像分类任务。更令人震惊的是在足够大的数据集上训练后。ViT 的性能甚至超越了当时最先进的 CNN 网络。从此计算机视觉正式进入Transformer时代后续诞生的DeiTSwin TransformerBEiTMAEDINOSegment AnythingSAM都建立在 ViT 思想基础之上。可以说理解 ViT就是理解现代视觉大模型的开始。二、ViT 出现之前的视觉模型一CNN统治时代传统图像分类流程图片 ↓ 卷积层 ↓ 池化层 ↓ 全连接层 ↓ 分类结果例如ResNet结构Input ↓ Conv ↓ Residual Block ↓ Pooling ↓ FC ↓ Output二CNN的优势CNN具有局部感知能力。例如3×3卷积核只关注局部区域。同时具备参数共享特点。大大减少模型参数量。三CNN的局限性虽然CNN很成功。但存在一个问题感受野扩展缓慢例如图像左上角目标。与右下角目标。建立联系需要很多层卷积。因此长距离依赖建模能力较弱。三、Transformer为什么能用于图像一Transformer的优势Transformer最大的特点Self-Attention能够实现全局建模即任何两个位置都能直接建立联系。例如图像猫的耳朵。与尾巴即使距离很远。Attention也能直接关联。二问题来了Transformer原本处理文本序列例如我 喜欢 人工智能而图像是二维矩阵例如224×224×3如何转换这就是ViT最大的创新。四、ViT核心思想ViT提出一个大胆想法把图片当作一句话处理。在NLP中一句话 多个Token例如我 喜欢 AIViT认为图片 多个Patch例如224×224图片切成16×16小块然后每个Patch看作一个Token。送入Transformer。五、ViT整体结构ViT总体流程Image ↓ Patch Partition ↓ Patch Embedding ↓ Position Embedding ↓ Transformer Encoder ↓ MLP Head ↓ Classification这是ViT最核心结构。六、Patch切分原理一为什么要切分Transformer只能处理序列数据因此必须将图片转成序列。二切分过程假设输入224×224×3Patch大小16×16那么224 ÷ 16 14得到14 × 14 196个Patch。即196个Token三结构示意原图 ↓ 切分 ↓ Patch1 Patch2 Patch3 ... Patch196七、Patch Embedding原理一Patch无法直接输入Transformer因为每个Patch16×16×3仍然是矩阵。Transformer需要向量输入。因此需要Embedding。二展开过程一个Patch16×16×3展开768维向量因为16 × 16 × 3 768三线性映射然后768 ↓ Linear ↓ 768或768 ↓ 768/1024得到统一维度。最终形成Patch Embedding八、CLS Token原理一什么是CLS TokenViT借鉴BERT设计。增加[CLS]分类Token。二作用用于收集整张图片信息结构CLS Patch1 Patch2 ... Patch196三分类阶段最终仅取CLS Token输出。进行分类。九、位置编码原理一为什么需要位置编码Patch经过切分后。Transformer不知道谁在左上 谁在右下因此加入Position Embedding二输入结构最终输入Patch Embedding Position Embedding形成Token Sequence进入Transformer。十、Transformer Encoder结构ViT采用标准Transformer Encoder结构。整体流程Input ↓ Multi-Head Attention ↓ Add Norm ↓ MLP ↓ Add Norm ↓ Output一Multi-Head Attention负责全局信息建模二Feed Forward负责特征变换三LayerNorm负责稳定训练十一、ViT核心工作流程完整流程Image ↓ Patch Split ↓ Patch Embedding ↓ Add Position ↓ Transformer Encoder ↓ CLS Token ↓ MLP Head ↓ Prediction这是ViT最经典结构。十二、ViT为什么有效一全局感受野CNN局部卷积。ViT全局Attention任意两个Patch都能直接通信。二更强长距离建模能力例如猫头。与猫尾巴。能够直接建立联系。三结构统一与NLP Transformer保持一致。方便跨模态迁移十三、ViT存在的问题一数据需求巨大ViT原论文训练数据JFT-300M约3亿张图片远超ImageNet。二小数据集效果一般数据不足时CNN往往更好。三计算量较高Attention复杂度O(N²)Patch越多计算越大。十四、ViT的重要改进模型一DeiTFacebook提出。解决ViT依赖大数据问题。二Swin Transformer微软提出。引入Window Attention机制。大幅降低计算量。三BEiT借鉴BERT思想。实现视觉预训练四MAEMeta提出。实现自监督学习五SAMSegment Anything。其核心骨干网络仍然基于ViT。十五、PyTorch实现ViT核心思想Patch Embedding示例import torch import torch.nn as nn class PatchEmbedding(nn.Module): def __init__( self, img_size224, patch_size16, in_channels3, embed_dim768): super().__init__() self.proj nn.Conv2d( in_channels, embed_dim, kernel_sizepatch_size, stridepatch_size ) def forward(self,x): x self.proj(x) x x.flatten(2) x x.transpose(1,2) return x输出(Batch,196,768)即196个Patch Token十六、ViT与CNN对比一CNN特点局部感知 参数共享优点小数据集表现好二ViT特点全局Attention优点大规模数据优势明显三未来趋势目前主流视觉模型越来越多采用CNN Transformer混合架构。例如ConvNeXtCoAtNetEfficientFormer十七、ViT对计算机视觉发展的意义ViT最大的贡献首次证明Transformer 可以替代CNN用于图像理解。其思想推动了Swin TransformerDINOCLIPSAMGPT-4V等现代视觉大模型的发展。可以说ViT 是视觉领域从 CNN 时代迈向 Transformer 时代的重要转折点。十八、总结Vision TransformerViT是计算机视觉领域最具影响力的模型之一它成功将 NLP 中的 Transformer 引入图像处理任务并开启了视觉 Transformer 时代。本文重点掌握了1、ViT提出背景2、CNN存在的局限3、ViT核心思想4、Patch切分机制5、Patch Embedding原理6、CLS Token作用7、Position Embedding原理8、Transformer Encoder结构9、ViT优势与不足10、ViT后续改进模型。可以将 ViT 理解为“把图像切成一个个视觉单词Patch然后利用 Transformer 像处理自然语言一样处理图像。”正是这一思想让 Transformer 成功突破 NLP 领域边界进入计算机视觉领域并最终催生出今天的视觉大模型和多模态大模型生态。对于深度学习开发者而言ViT 是学习现代视觉 AI 技术必须掌握的重要基础模型。

相关新闻