发布时间:2026/8/26 21:09:47
一篇文章讲明白 Vision Transformer(ViT) 一篇文章讲明白 Vision TransformerViT1. ViT 是什么ViT 全称Vision Transformer视觉 Transformer它是把Transformer 从 NLP自然语言处理迁移到计算机视觉领域的一种模型。传统视觉模型图片 ↓ CNN卷积 ↓ 特征提取 ↓ 分类ViT图片 ↓ 切成Patch ↓ Patch变成Token ↓ Transformer Encoder ↓ 分类核心思想把一张图片看成一段“视觉语言”把图像块Patch当成 NLP 里的单词Token。ViT 最早由 Google 在论文An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale提出。2. 为什么 Transformer 可以处理图片Transformer 原本处理文本例如我 喜欢 AI转换Token1 Token2 Token3然后Transformer ↓ 理解上下文图片怎么办图片224 × 224 × 3不能直接丢进去。因为Transformer 输入需要序列所以 ViT 做了一件事把图片切成很多小块每个小块当成一个 Token。3. 第一步Patchify图片切块假设输入图片224 × 224 × 3使用Patch size 16×16切224 / 16 14所以14 × 14 196 个 Patch每个 Patch16 × 16 × 3展开16×16×3 768个数字所以图片变成Patch1 768维 Patch2 768维 ... Patch196 768维也就是196个Token4. Patch EmbeddingPatch 怎么变成 TokenTransformer 不认识16×16图片块所以需要映射。原始Patch 768维经过 Linear768 ↓ 768得到Patch Token类似 NLP单词 ↓ Embedding ↓ 词向量图片Patch ↓ Embedding ↓ 视觉Token5. 加入 CLS Token现在有Patch1 Patch2 ... Patch196但是分类需要整张图片 → 一个类别怎么办加入CLS Token输入变成CLS Patch1 Patch2 ... Patch196总共197 TokensCLS 的作用汇总所有 Patch 信息代表整张图片。6. 加入 Position Embedding位置编码Transformer 不知道顺序。例如猫在左边 猫在右边Patch内容一样猫但位置不同。所以加入Position Embedding输入Token Position例如CLS pos0 Patch1 pos1 Patch2 pos2这样模型知道这个Patch来自哪里7. ViT整体结构完整流程Image | | Patchify | ----------------------- | | | Patch1 Patch2 Patch196 | | Patch Embedding | | Position Embedding | | [CLS] Patch1 ... Patch196 | | Transformer Encoder | | CLS输出 | | Linear Head | | 分类结果8. Transformer Encoder 在干什么核心Self-Attention假设图片狗在草地上某个Patch狗的眼睛通过 Attention可以关注耳朵Patch 鼻子Patch 身体Patch也就是说Patch之间互相交流。公式Attention(Q,K,V)softmax(QKTd)V Attention(Q,K,V)softmax(\frac{QK^T}{\sqrt d})VAttention(Q,K,V)softmax(d​QKT​)V简单理解当前Patch ↓ 寻找其他Patch ↓ 决定关注谁 ↓ 融合信息9. ViT 和 CNN 最大区别CNNViT基本单位像素Patch核心操作卷积Attention感受野逐渐扩大直接全局先验知识强弱数据需求较少较多扩展能力一般强CNN第一层看附近像素第二层看更大区域慢慢获得全局信息。ViT第一层 AttentionPatch1 直接看到 Patch196天然全局。10. ViT 为什么需要大数据这是 ViT 最大特点。CNN 自带局部性假设 平移不变性 共享卷积核例如猫耳朵在哪里都像猫耳朵。ViT没有这些假设。它需要自己学习什么是边缘 什么是纹理 什么是物体所以小数据CNN ViT大数据ViT CNN11. ViT 参数规模常见版本模型PatchEmbedding维度LayerViT-Base16×1676812ViT-Large16×16102424ViT-Huge14×14128032例如ViT-B/16B Base 16 Patch大小输入224×224产生196 Patch12. ViT 代码结构PyTorch简化版classViT(nn.Module):def__init__(self):super().__init__()# Patch Embeddingself.patch_embednn.Conv2d(3,768,kernel_size16,stride16)# CLS Tokenself.cls_tokennn.Parameter(torch.randn(1,1,768))# Transformerself.encodernn.TransformerEncoder(...)# 分类self.headnn.Linear(768,num_classes)defforward(self,x):# 图片切Patchxself.patch_embed(x)# B,C,H,Wxx.flatten(2)# 转Tokenxx.transpose(1,2)# 加CLSclsself.cls_token.expand(x.size(0),-1,-1)xtorch.cat([cls,x],dim1)# Transformerxself.encoder(x)# CLS分类xx[:,0]returnself.head(x)13. ViT 面试八股总结Q1ViT 如何处理图片答ViT 将图片切分成固定大小 Patch将每个 Patch 展平并通过线性层映射成 Token再加入位置编码和 CLS Token输入 Transformer Encoder 进行特征学习。Q2为什么需要 CLS Token答CLS Token 是一个可学习向量通过 Self-Attention 聚合所有 Patch 信息最终作为整张图片的表示用于分类。Q3Patch Embedding 怎么实现两种方式方法1reshapeLinear方法2Conv2d(kernel_sizepatch_size,stridepatch_size)实际 ViT 常用第二种。Q4ViT 为什么比 CNN 强答ViT 利用 Self-Attention 建模全局关系并且结构天然适合扩大模型规模在大规模数据预训练后具有更强泛化能力。14. 一句话总结 ViTViT 就是把图片切成很多小块把每个小块当成 NLP 里的单词然后交给 Transformer 学习这些视觉 Token 之间的关系最后利用 CLS Token 完成图像理解。记忆口诀图片 ↓ 切Patch ↓ Patch Embedding ↓ 加CLS 位置编码 ↓ Transformer Encoder ↓ CLS分类这就是 ViT 的全部核心思想。

相关新闻

2026/8/24 22:16:15

CANN/PyPTO:kernel出参未写回问题

kernel函数出参未写回导致计算不生效 【免费下载链接】pypto PyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。 项目地址: https://gitcode.com/cann/pypto 问题现象描述 当前PyPTO框架用pypto.frontend.jit装饰的k…

2026/8/27 10:37:10

不锈钢面板电脑食品车间选型指南:IP69K防护与防腐关键要点

有一次我去一家肉制品加工厂做设备巡检,看到操作间角落的一台普通触控一体机被员工用保鲜膜裹了三层,屏幕边缘还用透明胶带贴了一圈。这台机器离冲洗工位其实只有两三米远,每次高压水枪一扫,保鲜膜里照样渗进水,触摸屏…

2026/8/27 10:37:10

C++11核心特性深度解析:从auto到移动语义的现代编程实践

1. 项目概述:为什么C11是必须跨越的进阶门槛 如果你已经写了一段时间的C,感觉语法都会了,项目也能做,但总觉得代码写出来又长又笨重,看到别人的现代C代码简洁优雅,自己却无从下手,那说明你正站在…

2026/8/27 10:37:10

TrafficMonitor股票插件:3步在任务栏显示实时股票行情

TrafficMonitor股票插件:3步在任务栏显示实时股票行情 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 它是什么,给你省了什么事 TrafficMonitor股票插件…

2026/8/27 10:32:09

图生3d img2threejs 相机3d重建

目录 LingBot-Map 图生3d img2threejs LingBot-Map LingBot-Map 是一个面向流式三维重建的前馈式基础模型,由蚂蚁集团旗下具身智能公司"蚂蚁灵波科技"(Robbyant 团队)于 2026 年 4 月开源,采用 Apache License 2.0 协…

2026/8/26 9:13:28

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 11:48:27

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/27 7:46:21

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/27 0:01:16

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

1. 项目概述:从零构建一个企业级的AI服务网关 最近在帮一个做内容审核的团队做技术架构升级,他们原来的业务里,每天有几十万张图片和短视频需要过审,最初是接了几个开源的AI模型自己部署,但效果和性能一直不太稳定。后…

2026/8/27 0:01:16

LeetCode Hot100(51-60)算法精解与面试技巧

1. 题目背景与核心价值"hot100(51-60)"这个标题看起来像是某个编程题库或算法练习集中的一组题目编号。在技术社区中,类似命名通常指向LeetCode、牛客网等平台的热门题目集合。作为刷过300题的算法老手,我理解这类题目的核心价值在于&#xff…

2026/8/27 0:01:16

CRC校验实战:从模2除法到HJ212协议排错

1. 为什么一个“校验码”能扛住工业现场90%的数据 corruption? 你有没有遇到过这样的场景:嵌入式设备通过RS-485上传温湿度数据,上位机偶尔收到一帧乱码——温度显示成-273℃,湿度跳到999%,但串口波形看起来完全正常&a…

2026/8/26 19:34:06

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/26 19:17:08

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/26 19:34:05

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…