一、先建立一张完整地图
对于初学者,可以先把完整视觉侧理解成:
最重要的是理解:
Vision Encoder 不是某一个 Transformer,而是一条“把像素变成高质量视觉表示”的流水线。
其中真正的核心可以归成以下几层。
| 层级 | 模块 | 最简单的理解 |
|---|---|---|
| ① | 图像预处理(Image Preprocessing) | 先把图片整理好 |
| ② | 视觉 Token 化(Visual Tokenization) | 把图片切成机器能处理的小块 |
| ③ | 位置编码(Positional Encoding) | 告诉模型每块在哪里 |
| ④ | 特殊 Token(Special Tokens) | 给模型增加特殊“记事本” |
| ⑤ | 主干网络(Backbone) | 真正理解图片 |
| ⑥ | 多尺度表示(Multi-scale Representation) | 同时看大物体和小物体 |
| ⑦ | 颈部网络(Neck) | 整理 Backbone 的不同层特征 |
| ⑧ | 特征融合(Feature Fusion) | 让不同信息互相交流 |
| ⑨ | 特征聚合(Feature Aggregation) | 把很多局部信息总结起来 |
| ⑩ | Token 压缩(Token Compression) | 减少 Token 数量 |
| ⑪ | 输出归一化(Output Normalization) | 把特征数值整理稳定 |
| ⑫ | 输出投影(Output Projection) | 改变特征维度 |
| ⑬ | 视觉-语言连接器(Vision-Language Connector) | 把视觉特征交给 LLM |
下面逐个来看。
二、① 图像预处理(Image Preprocessing)
这一层没有所谓“五大网络”,因为它不是神经网络主体,而是一组输入处理方法(Input Processing Methods)。
1. Resize
最简单:
I∈RH×W×3→I′∈RH′×W′×3I\in\mathbb{R}^{H\times W\times3}\rightarrow I'\in\mathbb{R}^{H'\times W'\times3}I∈RH×W×3→I′∈RH′×W′×3
例如:
1920×1080→224×2241920\times1080\rightarrow224\times2241920×1080→224×224
优点是简单。
缺点也明显:一张包含很小文字的高清图片压成224×224224\times224224×224后,小文字可能直接看不清。
经典 ViT 就主要工作在固定输入尺寸和固定 Patch 网格之上。
2. Center Crop
先缩放,再从中间裁剪。
Original Image ↓ Resize ↓ Center Crop ↓ 224 × 224这是传统 ImageNet 分类模型中非常经典的处理方式。
适合:
图像分类(Image Classification)
但不特别适合:
OCR、文档、GUI、图表。
原因很简单:裁掉的区域可能刚好包含重要信息。
3. Random Resized Crop
训练时随机:
- 选择区域;
- 裁剪;
- 缩放。
相当于告诉模型:
“同一个东西大小、位置发生变化,你都应该认识。”
这是经典的数据增强(Data Augmentation)。
4. Image Tiling
高分辨率视觉大模型常见思路:
例如一张:
2048×20482048\times20482048×2048
图片可以被切成多个:
448×448448\times448448×448
区域分别编码。
优点是保留细节。
缺点是:
Ntokens↑N_{\text{tokens}}\uparrowNtokens↑
导致 LLM 计算成本增加。
5. Dynamic / Native Resolution
到了 2024–2026,这已经成为非常重要的一条路线。
Qwen2-VL 引入动态分辨率(Dynamic Resolution),让不同尺寸图片产生不同数量的 Visual Tokens;Qwen2.5-VL 延续了这一设计。
SigLIP 2 也训练了支持多分辨率并保留原始宽高比的模型。
所以到 2026 年,你可以把输入方案理解为:
固定 Resize → Tiling → Dynamic Resolution → Native Resolution
这是一条明显的演进路线。
三、② 视觉 Token 化(Visual Tokenization)
这是第一个真正值得系统研究的模型模块。
假设图片大小:
H×WH\times WH×W
Patch Size:
P×PP\times PP×P
那么 Token 数量大致为:
N=HPWPN=\frac{H}{P}\frac{W}{P}N=PHPW
例如:
224×224,P=16224\times224,\quad P=16224×224,P=16
得到:
N=14×14=196N=14\times14=196N=14×14=196
五个经典代表
| 模型 | Tokenization 方法 | 核心特点 |
|---|---|---|
| ViT | Linear Patch Embedding | 最经典的 Patchify |
| T2T-ViT | Tokens-to-Token | 逐渐聚合邻域 |
| CvT | Convolutional Token Embedding | 用卷积生成 Token |
| PVT v2 | Overlapping Patch Embedding | Patch 相互重叠 |
| Swin Transformer | Patch Partition + Linear Embedding | 为层次化 Transformer 准备 Token |
1. ViT
ViT 是最经典的方法。
先切 Patch:
xpi∈RP2Cx_p^i\in\mathbb{R}^{P^2C}xpi∈RP2C
然后线性变换:
zi=xpiEz_i=x_p^iEzi=xpiE
其中:
E∈RP2C×DE\in\mathbb{R}^{P^2C\times D}E∈RP2C×D
高中生可以把它理解成:
把一张图片切成 196 张“小卡片”,然后把每张小卡片翻译成一个DDD维数字向量。
ViT 证明了直接把图像 Patch 当成序列输入 Transformer 是可行的。
2. T2T-ViT
ViT 的问题是:
一刀切 Patch 太粗暴。
例如一条猫耳朵的边缘可能刚好跨过两个 Patch。
T2T-ViT 提出:
Tokens-to-Token(Token 到 Token)
不断让相邻 Token 先交流,再进行聚合: