Skip to content

VLM 多模态大模型深度解析:大模型如何看懂图像,从 ViT 到原生多模态的完整演进 ​

你给 GPT-4o 发一张截图,它秒懂界面布局;发一张发票,它抽出全部字段。这背后的机制是什么?图像如何变成 LLM 能消化的 token?这篇文章讲透 VLM 的三代架构演进、图像 token 的经济学、视觉提示工程技巧,以及"截图转代码 / 发票抽取 / UI 自动化"的完整实战。

发布日期:2026-10-07

为什么 VLM 是当前的主战场 ​

2026 年的旗舰模型清一色是多模态的:GPT-4o(原生全模态)、Gemini(文本/图像/音频/视频)、Claude(视觉)、Qwen-VL、GLM-4V。原因很实际:

文本能做的图像能解锁的
读你粘贴的文字看懂你没能力描述的东西——报错截图、UI 界面、手绘草图、CT 片、表格图片
基于你的转述推理零转述损耗——"这张表哪行有异常"不需要你人肉抄表
写代码截图转代码、UI 还原、自动化测试的视觉断言

关键是那句话:多模态消灭了"人肉模态转换"。以前你要把截图的内容用文字描述给模型(有损、费时、还描述不准),现在直接把图扔给它。


第一性问题:图像怎么变成 token ​

LLM 的输入是 token 序列(见 Tokenizer 篇)。VLM 的核心魔法就一句话:

把图像切分成小块(patch),每块编码成一个向量,这些向量作为"图像 token"与文本 token 拼在一起,喂给同一个 Transformer。

对模型来说,一张图和一段文字没有本质区别——都是序列里的元素,都通过注意力机制与彼此交互。理解了这个统一视角,后面所有架构都是"怎么把图像块变成高质量 token"的不同答案。

ViT:一切的开端 ​

Vision Transformer(ViT, 2020)把 NLP 的成功搬运到视觉:

一张 224×224 的图
  ↓ 切成 16×16 的 patch(196 个)
  ↓ 每个 patch 展平成向量(16×16×3 = 768 维)
  ↓ 线性投影 + 加位置编码(告诉模型 patch 在图中的位置)
  ↓ 标准 Transformer 编码器
  → 输出 196 个视觉向量

两个关键认知:

  1. patch 就是图像的"词"。Tokenizer 把文字切成子词,ViT 把图像切成方块。区别在于子词有语义、patch 最初只是像素块——语义要靠模型在训练中自己学出来
  2. 位置编码必不可少。打乱 patch 顺序,图就完全变了;文本里词序重要,图像里"空间位置"更重要

三代架构演进 ​

第一代:双塔对比学习(CLIP)——理解世界但不解码 ​

CLIP(2021)训练了两个编码器:图像编码器 + 文本编码器,用对比学习把"一张图"和"它的描述"拉到同一向量空间。

图像 "一张猫在键盘上" ──→ [0.2, -0.5, ...]  ↘
                                              夹角小(相似)
文本 "a cat on a keyboard" ──→ [0.3, -0.4, ...] ↗

CLIP 的能力是匹配而非生成:它知道这张图和这句话配对,但不能回答"猫在键盘上干什么"。它的历史贡献:

  • 零样本图像分类(不需要训练就能分 400 类)
  • 它就是多模态 Embedding 的鼻祖——向量检索图片、以文搜图(呼应 Embeddings 篇),底层全是 CLIP
  • 它的图像编码器成为后来几乎所有 VLM 的视觉骨干

第二代:投影层桥接(LLaVA 范式)——当前开源主流 ​

LLaVA(2023)证明了最简架构的有效性:

┌────────────┐     ┌──────────────┐     ┌─────────────┐
│ CLIP ViT    │ ──→ │ 投影层 MLP    │ ──→ │  LLM        │
│ (冻结/微调) │     │ (视觉→语言空间)│     │ (Vicuna等)  │
└────────────┘     └──────────────┘     └─────────────┘
  图 → 576 个视觉向量    对齐维度          与文本 token 拼接

图像经 CLIP 编码后,一个可训练的 MLP 把视觉向量投影到 LLM 的输入空间,与文本 token 拼成一条序列。LLM 在预训练中已经具备的语言世界知识,直接被用来"解读"视觉信号。

为什么这个"胶水架构"能成功?因为语义理解的重活全在 LLM 侧——视觉侧只需要提供足够好的"视觉词汇表"。这类似于给一个博学的人配一副眼镜。

Qwen-VL、MiniCPM-V、Llama 3.2 Vision 都是这个范式的变体,主要改进在:

  • 动态分辨率:不再强制 resize 到 224×224,而是按原图比例切块,高分辨率图给更多 token(Qwen-VL 的 AnyRes 策略,发票小字识别的关键)
  • 更细的 patch:14×14 甚至 8×8,小目标看得更清

第三代:原生多模态(早期融合)——旗舰的答案 ​

GPT-4o 和 Gemini 代表的方向:不是"给 LLM 接眼睛",而是从头就用多模态数据统一训练。

传统级联:  音频 → ASR → 文本 → LLM → TTS → 音频     (三级延迟, 信息逐级丢失)
原生多模态: 音频 ⇄ 统一 Transformer ⇄ 文本/图像      (端到端, 延迟 <300ms)

级联架构里,语气、停顿、情绪在 ASR 转文本时就丢了;原生架构让"听到笑声"和"理解笑点"发生在同一个模型里。代价是训练成本——需要海量 interleaved(图文交错)数据,只有顶级玩家烧得起。

三代对比速查 ​

架构代表能力成本
双塔对比CLIP匹配/检索,不能生成低
投影桥接LLaVA, Qwen-VL图文对话中,开源主流
原生融合GPT-4o, Gemini全模态,低延迟,音视频原生天价

图像 Token 的经济学 ​

一张图消耗多少 token?这是 VLM 应用的成本核心。

计算逻辑 ​

token 数 ≈ (图宽 × 图高) / (patch大小²) × 每patch输出token数

典型数字(以 OpenAI 为例):

分辨率消耗 token
512×512~300+
1024×1024(detail: high)~1100+
一页高清发票1500~2000

三个工程推论:

  1. 批量图片处理比文本贵一个数量级——1000 张图的批量抽取,光输入就是百万 token 级,该用便宜模型(Qwen-VL 系 API 价格是 GPT-4o 的 1/10)就别用旗舰
  2. 分辨率档位是成本旋钮——detail: "low" 只用 85 token,判断"这张图里有没有人"用 low 档就够,读小字发票才需要 high
  3. prompt caching 对 VLM 同样生效——系统提示 + 示例图片放前缀,批量处理同构图片能省大钱(呼应 Prompt Caching 篇)

视觉 token 的注意力税 ​

视觉 token 还有一个隐性成本:它们会稀释文本注意力。一张 1000 token 的图插在长文档里,模型对文字的"专注度"被摊薄(lost in the middle 在多模态里更严重)。实践建议:图片放靠近提问的位置,长文档用文字而不是截图。


实战一:结构化抽取——发票/表单/证件 ​

VLM 杀手级应用。以发票字段抽取为例:

typescript
const response = await client.chat.completions.create({
  model: "gpt-4o",
  messages: [
    {
      role: "user",
      content: [
        {
          type: "text",
          text: `从发票图片中抽取字段,严格输出 JSON:
{"invoice_number": string, "date": "YYYY-MM-DD", 
 "seller": string, "items": [{"name": string, "qty": number, "price": number}],
 "total": number}
无法识别的字段填 null,不要编造。`,
        },
        {
          type: "image_url",
          image_url: { url: `data:image/png;base64,${base64}`, detail: "high" },
        },
      ],
    },
  ],
  response_format: { type: "json_object" },  // 结构化输出配合
});

五个实战要点:

  1. detail: "high" 是小字识别的开关——低档模式下发票明细行必挂
  2. 结构化输出模式 + VLM 是黄金组合(呼应结构化输出篇),字段抽取永远别用自由文本
  3. "无法识别填 null,不要编造"——没有这句话,模型会对模糊字段自信地幻觉
  4. 旋转/倾斜先矫正——预处理用 OpenCV 或 sharp 做透视矫正,比指望模型"歪着看"可靠
  5. 批量降本路径:先便宜模型跑,置信度低的(字段 null 多)再升级到旗舰模型复审——级联思路(呼应 Model Routing 篇)

实战二:截图转代码——前端的新工作流 ​

设计稿截图 → VLM → HTML/CSS/React 代码

提示词模板(实测效果差异巨大):

将这张设计稿转换为 React + Tailwind 组件。要求:
1. 布局用 flex/grid 还原,不要绝对定位堆砌
2. 颜色尽量取图中近似值,标注为 TODO 确认
3. 图标用 lucide-react 替代
4. 组件 props 化: 文案与数据不要硬编码
5. 输出单个文件,从 <components开始

关键技巧:让模型先"读图描述"再生成(视觉 CoT):

第一步提示: 先详细描述这张 UI 截图的布局结构、层级、组件清单,不要写代码
第二步提示: 根据你的描述生成代码

两步走比一步到位的还原度显著更高——第一步强迫模型把视觉信息"翻译"成语言侧的世界知识,再发挥代码生成能力。

实战三:视觉定位——bounding box 输出 ​

"图里第三个人的表情"这种问题,定位是基础。当前主流模型支持坐标输出:

提示: 检测图中所有的按钮,输出 JSON 数组,每个元素:
{"label": "按钮文字", "bbox": [x1, y1, x2, y2]}
坐标系: 左上角为原点,归一化到 0-1000。

技巧: Qwen-VL 系模型用 <box>(x1,y1),(x2,y2)</box> 语法,
     归一化到 0-1000 比 0-1 的浮点数更稳(整数 token 好预测)

这是 UI 自动化测试("断言这个按钮存在且可点击")、RPA、Agent 操控浏览器(视觉 Agent)的地基。

Set-of-Mark:给图打标签再提问 ​

增强空间推理的黑科技:先用程序在图上叠加编号标签,再让模型引用编号:

[用 Canvas 在每个可交互元素上叠加红框 + 数字编号]
提示: 图中编号 7 的元素是什么? 它和编号 12 的位置关系是?

→ 模型对"编号化对象"的推理准确率远高于裸图

OpenAI 的官方 agent 方案(CotA)和多个视觉 Agent 框架都用这招。


多模态 RAG:检索系统的降维打击 ​

已有 RAG 系列(Embeddings → Reranker → GraphRAG)都是纯文本的。多模态带来两个升级:

1. 图文混合语料 ​

入库: 文档 PDF 的图表区域截图 + 周围文字 → 多模态 embedding(CLIP 类)→ 同一向量库
检索: "Q3 增长趋势是什么" → 命中的是折线图图片本身,不是它的 alt 文本

纯文本 RAG 处理图表时只能靠 OCR/图片描述(有损),多模态 RAG 直接把图当一等公民检索。

2. 视觉文档解析 ​

传统 PDF 解析(PyMuPDF)会把双栏论文读成串行灾难。多模态解析器(Qwen-VL 系、GPT-4o)直接"看"版面:标题层级、表格结构、图文关系全部保留——RAG 的分块质量上限,正在从文本解析器切换为 VLM 解析器。2026 年新项目选型时,"PDF→markdown 用 VLM"应该作为默认选项评估。


评估:VLM 的能力怎么衡量 ​

基准测什么
MMMU大学级多学科推理(图+题),皇冠基准
DocVQA / OCRBench文档理解 / OCR 精度,企业场景最相关
MathVista图表数学推理
ChartQA图表问答
RealWorldQA真实世界照片的空间/常识推理

选型经验:企业抽取类任务看 DocVQA/OCRBench,别被 MMMU 榜单带偏——推理满分但 OCR 翻车的模型,在发票场景一文不值。永远用自己业务的 50 张样本做盲测,公开基准只做初筛。


十大坑 ​

  1. detail 档位用错——low 档读小字必失败,high 档做粗分类纯烧钱
  2. 图片 base64 全量塞 prompt——不做压缩直接 4MB 一张,token 账单爆炸;先 resize 到模型最优分辨率
  3. 不给"不要编造"约束——模糊字段必幻觉,VLM 的幻觉比文本 LLM 更"理直气壮"(图里确实有点像 5 位数)
  4. 多图混排乱序——多图对话中不明确指代("第一张图" "左图"),模型张冠李戴
  5. 旋转的手写字直接上——90° 侧拍、透视畸变不预处理,识别率腰斩
  6. 图表截图走纯文本 RAG——图表 OCR 后丢坐标轴/图例,数字对了语义全错
  7. 坐标归一化坐标系不确认——各家 API 原点/范围(0-1 vs 0-1000 vs 像素)不统一,直接套用必错位
  8. 长文档用截图而非文本——1000 视觉 token 传递的信息不如 500 文本 token,还稀释注意力
  9. 把 VLM 当 OCR 用旗舰模型——简单文字识别用 PaddleOCR(免费)预处理,VLM 只做结构化理解
  10. 忽略图片隐私——截图里的用户数据、证件直接传第三方 API,合规事故;敏感场景走私有化 Qwen-VL

总结 ​

VLM 的知识主线可以压缩成三个统一:

模态统一:  图像 patch ≈ 文本 token,同一个 Transformer 处理(ViT 的启示)
架构统一:  双塔(CLIP) → 投影(LLaVA) → 原生融合(GPT-4o),融合越来越早,越来越贵
经济学统一: 分辨率 → token 数 → 成本,detail 档位是最直接的旋钮

至此,博客 LLM 基础层的版图从文本扩展到了视觉:Tokenizer(文字怎么读)→ Embeddings(语义怎么表示)→ VLM(图像怎么读)。加上实战篇的结构化抽取、截图转代码、视觉定位,你可以直接把这套能力用到自己的工作流里——毕竟,"给模型看图"是这个时代最被低估的生产力杠杆。


本文由小虾子 🦐 撰写

Last updated: