当前位置: 首页 > news >正文

掌握 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)长期占据统治地位。

从经典的:

  • LeNet

  • AlexNet

  • VGG

  • GoogLeNet

  • ResNet

  • EfficientNet

到后来的各种目标检测和图像分割模型。

几乎都建立在 CNN 之上。

然而到了2020年。

Google Research 提出了一篇轰动整个视觉领域的论文:

《An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale》

即:

Vision Transformer

简称:

ViT

这篇论文首次证明:

Transformer 不仅能够处理自然语言,还能够直接用于图像分类任务。

更令人震惊的是:

在足够大的数据集上训练后。

ViT 的性能甚至超越了当时最先进的 CNN 网络。

从此:

计算机视觉正式进入:

Transformer时代

后续诞生的:

  • DeiT

  • Swin Transformer

  • BEiT

  • MAE

  • DINO

  • Segment Anything(SAM)

都建立在 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

例如:

我 喜欢 AI

ViT认为:

图片 = 多个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×3

Patch大小:

16×16

那么:

224 ÷ 16 = 14

得到:

14 × 14 = 196

个Patch。

即:

196个Token

(三)结构示意

原图 ↓ 切分 ↓ Patch1 Patch2 Patch3 ... Patch196

七、Patch Embedding原理

(一)Patch无法直接输入Transformer

因为:

每个Patch:

16×16×3

仍然是矩阵。


Transformer需要:

向量

输入。

因此:

需要Embedding。


(二)展开过程

一个Patch:

16×16×3

展开:

768维向量

因为:

16 × 16 × 3 = 768

(三)线性映射

然后:

768 ↓ Linear ↓ 768

或:

768 ↓ 768/1024

得到统一维度。


最终形成:

Patch Embedding

八、CLS Token原理

(一)什么是CLS Token

ViT借鉴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的重要改进模型

(一)DeiT

Facebook提出。

解决:

ViT依赖大数据

问题。


(二)Swin Transformer

微软提出。

引入:

Window Attention

机制。


大幅降低计算量。


(三)BEiT

借鉴BERT思想。

实现:

视觉预训练

(四)MAE

Meta提出。

实现:

自监督学习

(五)SAM

Segment Anything。

其核心骨干网络:

仍然基于ViT。


十五、PyTorch实现ViT核心思想

Patch Embedding示例:

import torch import torch.nn as nn class PatchEmbedding(nn.Module): def __init__( self, img_size=224, patch_size=16, in_channels=3, embed_dim=768): super().__init__() self.proj = nn.Conv2d( in_channels, embed_dim, kernel_size=patch_size, stride=patch_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

混合架构。

例如:

  • ConvNeXt

  • CoAtNet

  • EfficientFormer


十七、ViT对计算机视觉发展的意义

ViT最大的贡献:

首次证明:

Transformer 可以替代CNN

用于图像理解。

其思想推动了:

  • Swin Transformer

  • DINO

  • CLIP

  • SAM

  • GPT-4V

等现代视觉大模型的发展。

可以说:

ViT 是视觉领域从 CNN 时代迈向 Transformer 时代的重要转折点。


十八、总结

Vision Transformer(ViT)是计算机视觉领域最具影响力的模型之一,它成功将 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 技术必须掌握的重要基础模型。

http://www.gsyq.cn/news/1539841.html

相关文章:

  • 有实力的开袋真空吸盘品牌有哪些?聚昌利怎么样 - mypinpai
  • 猫抓浏览器插件:5分钟学会免费资源嗅探终极指南
  • Harmonyos pc实战之ArkUI 组件详解
  • 豆包2.0+扣子编程:零成本AI Bot开发实战指南
  • 端侧Qwen3轻量化部署与Skill开发实战
  • 联想超级文件全解析!跨设备传输 + 云备份一站式文件管理方案
  • Saga 分布式事务:你以为的最终一致性,其实是个慢动作炸弹
  • 华硕笔记本性能优化神器的惊艳体验:G-Helper深度评测与效率革命
  • 如何解决趋势线的滞后问题(下):LLT 实战法则与 8 年回测表现
  • ControlNet-v1-1_fp16_safetensors终极指南:精准控制AI图像生成的艺术
  • 镜像视界(浙江)科技有限公司耿文海个人简介
  • PIC单片机驱动LCD模块:从硬件连接到驱动编程的嵌入式入门实践
  • 暮云南壹府多少钱?价格与口碑综合考量 - mypinpai
  • OneReward:基于多任务人类偏好学习的统一掩码引导图像生成
  • WebRTC AV1视频编码介绍:下一代编码格式在实时通信中的应用
  • 2026年靠谱过炉治具清洗机怎么选?官方甄选与行业分析指南 - 优质品牌商家
  • mysql数据库应用②
  • 从 0 到 1 入门 Web 渗透测试 学习复盘精简总结
  • 如何快速上手MediaInfo:视频音频文件信息检测的完整教程
  • 2026年做高效送风口的靠谱公司有哪些 - 品牌排行榜
  • 业务流程自动化怎么落地?企业从0搭建完整路径(RPA+智能体全流程解析)
  • 2026年五金表面处理服务商甄选指南:靠谱的滚喷漆与电泳加工怎么选? - 优质品牌商家
  • 如何快速掌握开源计时工具LiveSplit:新手完全指南
  • 2026年工业型瓜果削皮机生产商甄选:哪些品牌值得关注? - 优质品牌商家
  • 分组聚合不是代码操作,而是业务认知手术
  • 青岛漏水检测维修权威推荐:卫生间-厨房-阳台-屋顶天花板漏水维修:靠谱防水补漏公司团队TOP5推荐(2026最新深度调研实测榜单) - 即刻修防水
  • GLM-5自主Agent实战:上下文切片与工具调度的工程化实现
  • SecureCRT连接Linux文件无颜色?终端颜色显示原理与配置全解析
  • 嵌入式测试学习第 37 天:异常场景测试:断电、拔插、干扰、非法指令
  • 告别无效监测!这款 GEO 工具,同时满足新手入门 + 企业专业运营