📑 本页目录(点开跳转)
10 · 多模态:视觉理解(VLM)
⏱ 20 分钟 | ⭐ 图片进模型之后变成什么,以及什么时候不该用 VLM
🎯 一句话
多模态的共同思想只有一句:万物皆 token —— 图像、音频、视频都被切成 token 之后, 就都能交给同一个 Transformer 处理。
🧭 先选你要做哪个模态
⚠️ 这三页互不依赖,直接跳到你要的那一页就行,不必顺着读。
| 你要做的东西 | 去哪一页 | 它讲什么 |
|---|---|---|
| 让模型看懂图片、截图、表格、文档 | 本页 | VLM 三段式架构、图片怎么变 token、三个常见误判 |
| 想懂图文为什么能对齐、要自己训 VLM | 10d · CLIP 与对比学习 | InfoNCE、温度系数、LLaVA 两阶段训练 |
| 文生图、图生图、风格控制 | 10b · 图像生成 | 扩散模型:从噪声一步步擦出图像 |
| 语音识别、语音合成、语音对话 | 10c · 语音与视频 | ASR / TTS / 端到端语音,以及视频的 token 爆炸问题 |
| 视频理解或视频生成 | 10c · 语音与视频 | 同上 |
🖼️ 一、视觉理解(VLM)
架构:三段式
💡 核心洞察:图片被翻译成了「视觉单词」,和文字并排放进同一个上下文。 所以做文本应用时的那一整套(上下文管理、提示词、工具,本站《智能体工程教程》讲的就是这些)全部适用。
📌 这张图有名字:这套「ViT → 投影层 → LLM」的结构就是 LLaVA,也是目前开源多模态模型的默认长相。 另一条路线(BLIP-2 的 Q-Former)改的只有中间那一层——两者的差别在 10d · CLIP 与对比学习 那一页。
⚠️ 实用推论:一张高分辨率图可能消耗 1000+ token。多图对话烧 token 极快——上下文预算意识(智能体第 4 章)在这里更重要。
💰 图片的 token 账(做视觉应用前先算这笔)
算一算
图片 token 数 ≈ (宽/patch) × (高/patch),patch 通常 14~16 像素
512×512 → 约 1,000 token
1024×1024 → 约 4,000 token ⭐ 翻倍分辨率 = 4 倍 token
一段 10 张图的对话 → 轻松几万 token
💡 所以主流做法是【先缩放到模型的最优分辨率】再传
盲目传原图 = 白烧几倍的钱
⚠️ VLM 的三个常见误判(知道了能省很多调试时间)
| 场景 | 表现 | 原因 |
|---|---|---|
| 密集小字 / 表格 | 读错数字、串行 | 分辨率被压缩后细节丢失 → 切图分块传 ⭐ |
| 需要精确空间关系 | "左边第三个"经常说错 | ViT 的 patch 化削弱了精确位置感 |
| 需要计数 | 超过 5~6 个就不准 | 和文本模型数字母是同类问题——给工具,别让它数 |
🔑 一条通用建议:VLM 擅长"理解这张图在说什么",不擅长"精确读出图里的每个数"。 需要精确的场景(发票、表格、图纸),用 OCR + VLM 组合,别只靠 VLM。
🔗 和站内其他章的关系
左列有的来自日常用 LLM 的经验,有的在站内别的板块讲过——碰上过哪几条就从哪几条接进来,一条没碰过也不影响读这一章。
| 你可能已经知道的 | 这一章的对应 |
|---|---|
| 上下文预算(智能体第 4 章) | 图像吃 token 极凶,预算意识更重要 |
| 向量检索 ANN(推荐第 10 章) | CLIP 让图文进同一空间,同一套检索设施 |
| LoRA(第 5 章) | 图像生成里的风格 LoRA,同源技术 |
| 多模态 Embedding 做冷启动(推荐第 13 章) | 就是用 CLIP/ViT 提取的特征 |
| 计算机使用(智能体第 9 章) | 那是 VLM 的一个具体应用 |
| 双塔 + in-batch 负采样 + 温度系数(推荐第 8 章) | ⭐ CLIP 的训练方式和它是同一个东西,连坑都一样 |
temperature 怎么改变分布(第 6 章) |
CLIP 的 τ 是同一个式子,只是用在 loss 上 |
想接着深挖,去这几处:
| 去哪 | 为什么 |
|---|---|
| ML基础 12 | 视觉编码器的前身:卷积在看什么、为什么后来被 ViT 取代 |
| ML基础 14 | ⭐ ViT 的关键一步:把图切成 patch 当 token —— 三段式架构的中间那段 |
| 推荐算法 08 | ⭐ 想动手复现 CLIP 的对比学习,就去那一节抄代码——它有一段可跑的「双塔 + In-batch 负采样」,把"用户"换成"图片"、"物品"换成"文字"就是 CLIP 的训练循环;温度系数怎么调、LogQ 校正怎么修热门样本,也都在那里 |
| 推荐算法 10 | CLIP 对齐出来的图文向量,最终要落进向量库才有用 |
| 06c · 解码参数怎么调 | τ 和你调 API 的 temperature 是同一个东西;那一页讲它落在采样上是什么样、以及为什么它和 top_p 不是两个独立开关 |
| 扩散模型(整套 11 页) | ⭐ 图像生成那一支的深挖:从加噪去噪一路到 ControlNet 和 FID 的坑。本页的 10b 是索引,那一套是它点名要外找的正文 |
✅ 检查点
- VLM 的三段式架构是什么?投影层的作用?
- 图片在语言模型看来是什么?分辨率翻倍,token 变几倍?
- VLM 的三个常见误判是什么?需要精确读取时该怎么做?
👀 答案
- 视觉编码器(ViT,把图切 patch 当词)→ 投影层 → 语言模型。投影层把视觉向量翻译成 LLM 能理解的 token 空间。
- 就是一串“视觉单词”,和文字并排放在同一个上下文里。分辨率翻倍 → token 变 4 倍(512×512 约 1000,1024×1024 约 4000)。所以要先缩放到模型最优分辨率再传,盲目传原图是白烧钱。
- ①密集小字/表格读错(分辨率压缩后细节丢失 → 切图分块传)②精确空间关系说不准(patch 化削弱位置感)③计数超过 5~6 个就不准。需要精确时用 OCR + VLM 组合——VLM 擅长“理解图在说什么”,不擅长“精确读出每个数”。
🛑 可以停在这里
到这里你已经能设计一个视觉应用了:知道图片进去变成什么、要花多少 token、以及什么时候不该用 VLM(精确读数交给 OCR)。
⚠️ 什么时候看下一页:你想知道「图片和文字为什么能进同一个向量空间」,或者要自己训 / 微调一个 VLM。那是原理层,做应用不必先看。
⚡ 走神救援
先记住这几件事
- 视觉输入需要经过编码与对接,才能参与语言模型的上下文。
- 识别大意与精确读数是不同任务,小字、计数和空间关系要单独验证。
- 从图像、语音或视频的真实需求分路,并把分辨率、时长与成本一起评估。
下一节 👉 10d-CLIP与对比学习.md