easy-vibe 多模态模型原理指南:给 LLM 装上“眼睛“的完整技术拆解
2026/9/24 17:43:48 网站建设 项目流程
  • 教程
  • 文档

【免费下载链接】easy-vibe

从 0 到 1 学会 vibe coding,项目制学习

项目地址:https://gitcode.com/datawhalechina/easy-vibe
点击查看免费下载

本文基于 docs/de-de/appendix/8-artificial-intelligence/multimodal-models.md 整理扩展。该章节是 easy-vibe 项目附录《人工智能基础》中的核心篇章,面向无计算机视觉背景的读者,通过交互式演示(<VlmQuickStartDemo /><PatchifyDemo />等)揭示 GPT-4V、Qwen-VL 等视觉语言模型(VLM)背后的原理。读完本文,你将掌握:图像如何被"切成单词"、跨模态翻译官 Projector 的三大流派、VLM 的"三段式"架构、两阶段训练法,以及动态高分辨率等进阶工程技巧,并能将其与 easy-vibe 实战章节中的图片理解 API 集成方法(如 图片理解能力集成)衔接起来。


0. 引言:给大脑装上眼睛

在 大语言模型入门 中我们已经知道:LLM 本质上是一个被关在黑盒子里、只能通过文字(准确说是 Token ID)来了解世界的"大脑"。

多模态大模型(VLM,Vision-Language Model)的出现,相当于给这个大脑装上了一双眼睛

但这并不容易,因为存在两个完全不同的世界:

  • 大脑(LLM)只懂文字——更精确地说,只懂 Token ID 这样的数字序列;
  • 眼睛(摄像头)看到的是像素——RGB 颜色数值。

VLM 的核心任务,就是把"像素信号"翻译成"文字信号",让 LLM 觉得"看图"就像"读文章"一样自然。整篇文档的全部内容,都是围绕这条翻译流水线的四个环节展开的:视觉分词 → 跨模态投影 → 架构组装 → 两阶段训练。


1. 第一步:把图片变成"单词"(Visual Tokenization)

想象你正在电话里向朋友描述一幅拼图——你不可能一口气说完,必须一块一块地描述。计算机"看"图也是同样的道理:它无法一次性吞下整张图片,只能逐块理解

1.1 切块(Patchify)——制作视觉单词

LLM 处理文本时,会把句子拆解成一个个词元(Token)。如果你想让 LLM "读懂"图片,最直观的思路就是把图片也变成类似 Token 的形式。

为了配合大模型"习惯读单词"的特性,我们需要一种能把连续二维图像转换为离散片段的技术,这就是Patchify(图像切块):把一张完整的二维图片,像切豆腐一样,切成固定网格的小方块(称为 Patch)。

  • 原始图片= 一篇完整的文章
  • 图片切块(Patch)= 文章里的一个单词(Token)

在工程实践中,图片通常按照固定尺寸(如 $16 \times 16$ 或 $14 \times 14$ 像素)无重叠切分。以一张常见的 $224 \times 224$ 像素输入图为例,切分后得到 $14 \times 14 = 196$ 个独立图像方块。原本连续完整的二维像素阵列,就这样被物理切割成了 196 个离散的"视觉单词本"。

🕹️交互式演示:原文档在此处嵌入<PatchifyDemo />组件,读者在 easy-vibe 网站上点击按钮,即可亲眼看到原始图像如何被规则网格切割成一个个独立 Patch。

1.2 序列化(Flatten)——排成一句话

完成切块后,我们手上是一个 $14 \times 14$ 的二维方阵。然而,无论是传统 Transformer 还是现代 LLM,底层架构大多只接受一维序列输入(从左到右排列的线性数据结构)。

为了兼容大模型的输入规范,必须执行**序列化(Flatten)与线性投影(Linear Projection)**两步:

  1. Flatten(拍扁摊平):把多行图像块首尾相接,将二维矩阵"拍扁"成一条只有前后顺序的一维长轴;
  2. Projection(特征拉伸):此时这 196 个方块还只是 RGB 像素堆叠的"生肉"。需要一个小型神经网络(通常是一个全连接层)对每个方块处理,把每个方块分别压缩、转换成一段固定长度的特征向量(例如长度为 768 的数字列表)。

经过这一步,一张图片才真正变成一串"视觉单词序列(Visual Token Sequence)"。

🕹️交互式演示:原文档嵌入<LinearProjectionDemo />组件,展示单个像素块(Patch)如何经历矩阵变换,最终被映射成包含丰富特征维度的高维向量。


2. 第二步:跨物种翻译(Projection)

此时图片虽已变成一维连续的"视觉单词"序列,但对最终 LLM 来说,它依然是一堆不可读的乱码。

为什么读不懂?因为特征空间不同——它们"说"的是不同的语言。

  • 视觉编码器(如 ViT)提取的是空间像素特征:它只能告诉你"这是一个由很多弯曲黑色线条组成的东西""这里有一大片红色";
  • LLM内部理解的是深层语义特征:概念层面的"猫""树木""危险"等。

在这两种截然不同的话语体系之间,需要架设一座桥梁——跨模态翻译官:Projector(投射器 / 适配器)

2.1 翻译官的作用(Latent Space Alignment)

Projector 的学术本质是实现特征隐空间的对齐(Latent Space Alignment),就像现实生活中的同声传译员:

  • 输入(Source):ViT 吐出的"视觉特征"(侧重于几何、颜色、纹理规律等连续高维特征表示);
  • 处理(Translation):Projector 利用一个神经网络结构(可能是几层简单线性变换层,也可能是复杂的注意力层),在两种语言之间找到数学对应关系;
  • 输出(Target):输出完全符合 LLM 预期、符合"LLM 语言"习惯的结果(由图片特征转换而来的等价文本嵌入 Token,让图像拥有可以对话的意义)。

经过这层翻译过滤,大模型会惊奇地发现:"咦?传进来的这段数字串,不就是我平时读的那种描述性单词组合吗!"——于是顺理成章地把图片特征与自然语言放在一起共同处理。

🕹️交互式演示:原文档嵌入<ProjectorDemo />组件。

2.2 不同的翻译流派

为了让特征对齐这道"翻译工序"更快更准,学术界和工业界衍生出了几种极具代表性的连接设计方案:

1. 直译派(Linear Projection)

  • 做法:极其简单粗暴,仅用一层或几十层 MLP(多层感知机 / 线性投影层)做直接的数学矩阵变换透传;
  • 特点信息损耗极低,保留图像原汁原味的细节;但缺陷是把切分出的成百上千个视觉词元毫无保留地全部塞给语言模型,导致后续计算量暴增;
  • 代表:LLaVA 系列。

2. 意译派(Q-Former / Resampler)

  • 做法:不原样透传,而是在中间引入一个具有抽象总结能力的"小型侦察兵网络"。这个中间代理先全盘快速理解一遍图片,提纯出几十个高度凝缩的核心要点;
  • 特点信息高度精简提纯,Token 少,大大节省 LLM 思考理解的算力;但缺陷是有可能在提纯过程中丢失原始图片边缘处极其细微的观察线索;
  • 代表:BLIP-2,Gemini(部分机制类似)。

3. 折中派(C-Abstractor / Pooling)

  • 做法:借助卷积池化或局部区域重整,把相邻的 $2 \times 2$ 或更大像素块压缩打包、合并重组为一个完整的表达单元;
  • 特点:既合理压缩了词元序列长度上限,又保留了部分相互依存的局部与空间信息;
  • 代表:Qwen-VL-Max。

3. 第三步:合体(The Architecture)

有了零件、有了对接标准,接下来看 VLM 是如何完成"全身武装"的。主流的多模态视觉语言模型基本都遵循统一的**"三段式"架构模型**。

3.1 VLM 的身体结构

🕹️交互式演示:原文档嵌入<ModelArchitectureComparisonDemo />组件,对比不同 VLM 的结构差异。

一个典型范式下的 VLM 实体,由以下三大部分协同运转:

1. 特征感知的"眼睛"(Vision Encoder,视觉编码器)

  • 功能:作为图片输入的第一道关卡,负责"看图"并抽象出高维视觉特征;
  • 选型:大多数厂商不会从零训练眼睛,而是直接借用已在数亿张"图像-文本配对"数据上预训练好的成熟组件(如 OpenAI CLIP 模型的视觉塔,或 Google 的 SigLIP 模型);
  • 形象类比:相当于生物体高度特化的视网膜感光细胞区域。

2. 信号转换的"视神经"(Projector,模态投射器)

  • 功能:对接编码器与语言基座,负责信号维度的压缩、打通和多模态语义翻译;
  • 选型:这是整个多模态系统后续训练的重中之重。它自身的参数量通常不大(相对 LLM 而言),却决定了"文字"和"图片"之间能否心意相通;
  • 形象类比:就像负责将电信号转换并传递到大脑皮层的视觉神经中枢。

3. 认知引擎"大脑"(LLM Backbone,语言模型基座)

  • 功能:承担最终的观察、常识调用、深度逻辑推理以及拟人化答复的生成;
  • 选型:通常采用业内最强的开源大语言模型作为挂载点(如 Qwen、Llama 3、Vicuna 等);
  • 形象类比:具备世界知识库的大脑语言与决策中枢,对视神经传来的加工后信号做高阶思维判读。

4. 学习看图的方法(Training)

身体各部分已经缝合完毕,但正式投入使用前,刚组装好的 VLM 实际处于类似新生儿的"失明与混乱"状态——因为新增的视神经(Projector)是一张白纸,里面全是无意义的随机数值。

要让这个拼接模型具备"看图说话"能力,科学界总结出了一套高效的**"两阶段训练法则(Two-Stage Training)"**。

阶段一:认物(Feature Alignment,特征对齐预训练)

这一阶段的主要任务是让随机的 Projector 建立起初步的跨模态映射关系,过程很像教婴儿用"认知闪卡"强行记单词:

  • 给它看(训练输入):大批量(往往上亿张)包含单个突出主体的极简配对图文(例如白底的"猫"照片);
  • 告诉它(目标输出):附带简短的标签词汇("一只橘猫");
  • 优化目标:强制 Projector 学会通过矩阵变换,让这只猫对应的视觉特征(经翻译后)与自然语言里的"猫"词元向量尽可能重合对齐;
  • 参数控制(Freeze Strategy):为防止破坏原有模型的智慧,此阶段会重度冻结(Freeze)"眼睛"(ViT)和"大脑"(LLM)的几十上百亿参数,仅仅开启"视神经"(Projector)本身的几百万参数训练

🕹️交互式演示:原文档嵌入<FeatureAlignmentDemo />组件。

阶段二:多轮交互微调(Visual Instruction Tuning)

第一阶段只能让模型变成"报菜名"式的认字机,第二阶段的职责则是激发它的高级智能,让它能真正根据上下文解答人类复杂的图文结合指令:

  • 给它看(训练输入):精心设计的高质量问答训练对,例如一张复杂的城市交通全景图;
  • 要求它答(目标输出):User 提问:"<图片>左下角那个骑白色自行车的男人有没有戴头盔?" Assistant 回答:"没有,他头上什么都没戴,这在城市里是很危险的行为。"
  • 优化目标:让大模型不仅能接收视觉线索,还能结合已有的常识积淀,将文本逻辑与多模态表征彻底融会贯通并做出推理;
  • 参数控制(Freeze Strategy):此时视神经已基本调通。在精调阶段,一般会继续冻结一部分视觉编码器底层权重,同时彻底解冻 LLM 和 Projector(或采用 LoRA 配置),进行全局大规模的联合反向传播调校。

🕹️交互式演示:原文档嵌入<VLMInferenceDemo />组件,展示训练后的模型如何对图文混合指令进行推理回答。


5. 进阶:看得更清(Advanced Tricks)

虽然上述架构支撑起了最初的多模态范式,但第一代 VLM 模型存在一个非常令人头疼的基础硬伤——近视眼(视力先天不足)

早期视觉编码器 ViT 因历史设计原因,天生只能处理 $224 \times 224$ 或 $336 \times 336$ 这类极低分辨率的方寸小图。这就像透过一个模糊低质的几十万像素复古摄像头观察世界:图中稍微小一点的文字牌匾等细节会完全糊成一团像素,大脑再聪明也是"巧妇难为无米之炊"。

为了攻克低清难题,前沿模型厂商(如 Qwen-VL 团队、LLaVA-NeXT 等)采用了非常精妙的工程手段。

5.1 动态高分辨率切分布局(Dynamic High-Resolution Mapping)

直接输入大图会导致显存爆满,粗暴缩小又会丢光所有细节,如何破局?目前的解法是**"局部特写 + 全局鸟瞰"的双视角策略**:

  1. 整体概览:先把巨大的原版高清图直接缩小压到 $336 \times 336$,送给眼睛看一眼,让模型掌握画面的总体宏观布局结构(天空在哪?地面在哪?);
  2. 切片放大看:把高清原图切成好几十个独立、$336 \times 336$ 的无损局部特写切块(Slice);
  3. 逐一审视与空间回拼:让视觉引擎挨个用"放大镜"扫描这几十个无损切面、收集高清细节,随后 Projector 像拼图一样把这些细节块的语义与初始的总览语境相互缝合。

这好比先用手机给报纸全景拍一张照(看全貌版面布局),再端着手机贴近报纸连续拍下几十张段落特写,最终拼出完整的可读信息。

5.2 换个天生的大眼睛(Scaling the Vision Encoder)

另一种纯粹展现"暴力美学"的做法是:既然原始的眼睛天生有基因缺陷,那就从头炼制一颗更惊世骇俗的超级眼睛。

以国内优秀开源模型InternVL为经典代表:它摒弃了常用的小规格视觉模型,从底向上直接耗费海量资源,单独训练了一个参数量高达几十亿(如 60 亿参数的 InternViT-6B)的罕见超巨型视觉编码器前置基座。凭借极强的数据吸收能力,它天生就是原生支持高分辨率无缝输入的"哈勃空间望远镜"。这种设计大幅降低了切图拼图引入的复杂工程开销与特征错位风险,直接实现"一览无遗"的高清视觉感知。


6. 总结

多模态大模型(VLM)并没有什么魔法,它只做了一件事:

把"图像"这种外语,翻译成"文本"这种母语,然后喂给 LLM。

只要理解了这一点,就理解了 VLM 的一切。这条翻译流水线的每个环节都对应本文前面拆解的模块:Patchify 负责把图像切成"单词",Flatten + Linear Projection 负责把它们排成 LLM 能读的序列,Projector 负责跨模态翻译与对齐,两阶段训练负责教会 Projector 翻译、教会 LLM 综合推理,而动态高分辨率等进阶技巧则负责让"眼睛"看得更清。

7. 名词速查表(Glossary)

名词全称解释
VLMVision-Language Model多模态大模型。能看懂图的 GPT。
ViTVision Transformer视觉模型。VLM 的"眼睛",负责把像素变成向量。
Patch-图像块。图片被切成的小方块,相当于"视觉单词"。
Projector-投射器/翻译官。连接眼睛和大脑的桥梁。
Alignment-对齐。让图像特征和文本特征在同一个空间里"互相听得懂"。

附:在 easy-vibe 项目中衔接实践

理解原理后,easy-vibe 的实战章节提供了可直接落地的印证与延伸:

  • AI 能力集成 以Qwen3-VL为例演示了图片理解 API 的接入方式,并强调"模型名和控制台会不断变化,示例用于说明结构,自己集成时需从当前官方文档获取模型 ID 与参数"——这正是 VLM 架构中"眼睛 + 视神经 + 大脑"在云端 API 形态下的实际使用形态;
  • 学习地图 明确指出"并非每个 AI 都能接受图片,截图需要 Claude、GPT-4V/GPT-4o、Gemini、Qwen 或 ERNIE Bot 这类多模态模型"——这提醒开发者在选型时先确认目标模型是否具备视觉输入能力;
  • 多模态模型原理(英文版对照) 与 中文版对照 保留了与本文一致的知识骨架,便于多语言检索与交叉验证。

此外,大语言模型入门 是理解本文的前置基础——其中"Token 化、Embedding、Transformer 注意力机制"等概念正是 VLM 中"大脑"的底层原理;而 Transformer 与注意力机制 则进一步展开了 Projector 中复杂注意力层的数学细节。建议按"LLM 原理 → 多模态模型 → 图片理解 API 集成"的顺序阅读,形成从原理到工程的完整闭环。

  • 教程
  • 文档

【免费下载链接】easy-vibe

从 0 到 1 学会 vibe coding,项目制学习

项目地址:https://gitcode.com/datawhalechina/easy-vibe
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询