news 2026/7/21 6:47:20

LLaVA-1.5

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LLaVA-1.5

第一章 为什么会有 LLaVA-1.5?

作者真正想回答的问题其实是:

到底应该怎样训练一个优秀的 Large Multimodal Model(LMM)?

这听起来很普通,但实际上,这是2023年多模态领域最核心的问题。


1.1 当时的大模型领域是什么局面?

2023年,GPT-4(V)还没有开放,开源多模态模型开始快速发展。那时已经有很多代表性模型:

BLIP-2、InstructBLIP、MiniGPT-4、Flamingo、LLaVA、Qwen-VL

但每个模型都有自己的特点。如:

BLIP-2优点:图文对齐很好、Q-Former设计巧妙、Academic VQA成绩很好

缺点:不擅长聊天、对开放式问题回答一般


InstructBLIP:在BLIP-2基础上加入Instruction Tuning。

VQA成绩继续提高。但是模型越来越像"考试机器"。例如:

图片里一个人在骑自行车。

用户问:Describe the image.

模型答:A man.

因为训练集中很多VQA都是一句话回答。模型学会了能短回答,就绝不长回答。


LLaVA

贡献:第一次提出Visual Instruction Tuning,它让模型真正学会了聊天。例如:

用户问:What is happening? 模型可以回答几百字,甚至还能推理。

缺点:

用户问:Is the traffic light green?

模型可能回答:Yes, the image shows... 实际上答案应该只有 “Green.” 或 “Yes.”

所以LLaVA聊天能力很强。但是Academic Benchmark反而不好。


于是出现一个非常奇怪的现象。作者总结如下:

模型聊天能力VQA能力
LLaVA很强一般
InstructBLIP很强(考试)很强
两者兼顾没有人做到

于是作者提出了一个疑问:为什么没有模型能够同时兼顾这两种能力?


1.2 大家当时认为原因是什么?

很多研究者给出了各种解释。

例如:

有人说:是因为LLaVA没有Q-Former / Connector太简单 / 训练数据太少 / Vision Encoder太弱。

还有人说:要预训练几十亿图片。

例如:InstructBLIP:129M Image-Text Qwen-VL:1.4 Billion Image-Text

所以大家形成了一个共识:模型差,是因为训练得还不够大。


1.3 作者却提出了一个完全不同的观点

作者认为:真正的问题并不是数据不够,而是训练方式没有设计好。

论文没有说:"LLaVA结构不好。"也没有说:"Q-Former不好。"

作者真正说的是:

先别急着设计越来越复杂的模型。先研究一下到底哪些设计真的有用。

所以论文用了一个词:Systematic Study(系统研究)

不是提出新网络,而是控制变量,一点一点改。

例如:

只改Connector,只改Prompt,只加VQA,看看有没有提升。

最后再提高分辨率,看看是不是继续提升。

这种实验方式其实更接近科学研究,而不是不停堆模块。


1.4 作者的研究路线(整篇论文主线)

整篇论文其实就是围绕三个问题展开。

问题一:是不是一定需要复杂的Q-Former?

作者实验:不用。MLP都可以很好。

问题二:是不是一定要几亿图文数据?

作者实验:不用。几十万也够。

问题三:是不是一定要设计新的网络?

作者实验:不用。原来的LLaVA稍微改一下就行。

于是整篇论文最终变成:

LLaVA │ ├── Connector改一下 ├── Prompt改一下 ├── 数据改一下 ├── 分辨率改一下 ▼ LLaVA-1.5

整个网络几乎没有变。真正变化的是:训练Recipe(训练配方)。

这也是论文标题:Improved Baselines

为什么叫Baseline?因为作者认为:以后大家比较模型的时候,应该先和一个训练得足够合理的基础模型比较,而不是和一个存在明显训练缺陷的模型比较。


1.5 Figure 1 到底想表达什么?

Figure 1 浓缩了整篇论文的思想,表达了三个观点。


观点1:性能

LLaVA-1.5几乎所有Benchmark 都是SOTA。说明:不是网络复杂才厉害,而是训练方法合理


观点2:数据效率

作者比较:

BLIP-2:129M → InstructBLIP:129M → Qwen-VL:1.4B → LLaVA-1.5:558K

证明:别人用了几亿张图片,我只用了几十万,结果比他们还好。

所以真正厉害的不是数据量,而是数据有没有训练对。


观点3:模型复杂度

作者最后强调,整个LLaVA-1.5真正新增的东西只有两项:

① Linear Projection → MLP Projection

② 增加Academic VQA数据

没有Q-Former、Perceiver、Cross Attention Stack和没有的复杂Adapter。

这其实是在挑战当时的主流观点:复杂模型 ≠ 更好的多模态模型。


1.6 论文贡献

LaVA-1.5不只是把Linear改成了MLP,实际上,LLaVA-1.5真正贡献并不是提出了新的网络,而是提出了一套更合理的多模态训练范式(Training Recipe)。

作者通过严格的控制变量实验发现,影响多模态模型性能的关键因素,并不一定是更复杂的跨模态结构或海量预训练数据,而是训练流程是否合理、数据组成是否平衡、提示词是否明确,以及模型是否能够充分利用视觉信息。因此,LLaVA-1.5几乎没有改变LLaVA的整体架构,却仅通过四项简单改动——使用MLP替代Linear Connector、加入带格式约束的Response Format Prompt、补充Academic VQA数据以及提高输入分辨率——就在11个主流Benchmark上取得了当时的最佳性能,同时训练数据规模仍远小于InstructBLIP和Qwen-VL。


3.2 响应格式提示

这一章不要理解成一句 Prompt Engineering,而是把它理解成:

作者重新定义了 Instruction Tuning 中"输出格式"应该如何学习。

很多人第一次看都会觉得,就是在问题后面加了一句话:

Answer the question using a single word or phrase.

为什么就能提升这么多?

实际上,这背后涉及LLM 是如何学习输出格式(Output Format)的问题。


1. 现象与问题:多模态模型的“回答习惯”固化

作者在对比 LLaVA 和 InstructBLIP 时,发现它们因为训练数据的侧重,养成了两种截然不同的、甚至有些僵化的“回答习惯”:

  • LLaVA(倾向长回答):训练集多为描述性指令,导致它像个聊天机器人。即使问简单的What color?,它也会回答完整的句子The object is red.甚至强行加解释。

  • InstructBLIP(倾向短回答):大量使用了 VQA(视觉问答)等短答案数据集。导致它把“看到问题”和“输出短答案”强绑定。哪怕用户明确要求Is this unusual? Please explain in detail.,它也可能只冷冰冰地蹦出一个Yes.,完全无视了“解释”的要求。

2. 根本原因:Prompt 中“输出格式”的模糊性 (Ambiguous Prompts)

作者指出,InstructBLIP 出现的退化(变成无情的考试机器),根本原因不在于 VQA 数据本身,而在于 Prompt 缺乏对“输出格式”的明确规定。

在传统模型训练中,模型优化的核心是“预测下一个 Token”。假设训练集中同时存在长句(Describe task)和短句(VQA task)数据,当 Prompt 只给出Q: What color?时,LLM 并不知道用户到底想要Yellow还是The shirt is yellow。只能依靠数据的统计规律去“猜”,最终导致逻辑混淆,形成了遇到提问就强行短回答的条件反射。

3. 架构差异:为什么 LLaVA 能破局,而 InstructBLIP 做不到?

既然发现了问题,为什么 InstructBLIP 很难通过修改 Prompt 来纠正?这与其模型微调策略有关:

  • InstructBLIP(冻结 LLM,仅训练 Q-Former):它的 LLM 是冻结的,只能靠几亿参数的 Q-Former 输出不同的视觉 Token 去试图改变百亿参数 LLM 的生成风格。这类似于 Prefix Tuning,控制能力非常有限。

  • LLaVA(全参数微调 LLM):LLaVA 在训练时,整个 Vicuna(LLM)都参与微调。因此,当模型看到特定的格式指令时,是 LLM 本身学会了主动控制输出长度和风格,而不是依赖外挂模块。

4. 解决思路与核心价值:引入“格式指令” (Format Instruction)

LLaVA-1.5 的解决方法非常简单直接——将“输出格式”正式纳入 Instruction 的一部分。

例如,在问颜色的问题后加上明确的限制:

What is the color of the shirt?Answer the question using a single word or phrase.

仅仅加了这一句话,LLaVA 就立刻从长篇大论转变为精准输出单个词(如Yellow)。

💡 这一思想的重大意义:这是 LLaVA-1.5 带来的最重要的方法论升级。以前的 Instruction Tuning 主要局限于Task Instruction(任务指令),即告诉模型“做什么”(如 Describe, Explain, Count)。 LLaVA-1.5 第一次强调了Format Instruction(格式指令)的重要性,即告诉模型“怎么回答”(如Answer shortly, Output JSON, Use bullet points)。

这一思想证明了:Instruction 不仅应该决定“回答什么内容”,还必须决定“以何种形式表达”。后来 GPT-4V、Gemini 等现代多模态大模型广泛支持输出 JSON、Markdown 表格等,正是建立在这一逻辑基础之上。

本节总结

**Response Format Prompt并不是简单地在问题后面增加一句提示,而是把"输出格式"正式纳入了Instruction的一部分。作者认为,LLaVA与InstructBLIP难以同时兼顾长回答和短回答,并不是因为模型结构不同,而是因为传统VQA数据中的Prompt没有明确规定输出格式,导致模型只能依赖数据分布去猜测应该回答长句还是短句,从而形成了偏向某一种回答风格的行为模式。LLaVA-1.5通过加入诸如"Answer the question using a single word or phrase."这样的格式指令,并同时微调整个LLM,使模型学会将回答长度和表达形式也视为用户指令的一部分,而不仅仅关注回答内容。这实际上扩展了Instruction Tuning的定义:Instruction不仅决定"回答什么",还决定"如何回答"。

3.3 Improved Vision-Language Connector

为什么LLaVA不用BLIP-2的Q-Former?为什么Linear换成MLP就能提升性能?


1. 回顾LLaVA中的Connector

LLaVA的整体流程是:

Image │ CLIP ViT-L/14 Image Features │Linear Projection Visual Tokens │Vicuna

Linear Projection就是 Vision-Language Connector。作用:把视觉特征映射到LLM的Embedding空间。不会重新理解图像,也不会做Cross-Attention。


2. 作者觉得Linear不够

作者认为,视觉空间与语言空间之间存在较大的分布差异。Linear本质上只能完成一次线性变换,但视觉特征到语言Embedding的映射,本身可能是非线性的

如:假设CLIP中:汽车、公交车、卡车,三者距离很近,因为它们外观相似。

而LLM中:汽车、司机、道路,可能更接近,因为语言更关注语义关系。

仅靠一次线性变换,很难完成这种空间对齐。


3. 作者的方法

作者没有引入Q-Former,因为其中包含 Self-Attention、Cross-Attention、Learnable Queries,参数量较大,训练成本高。且CLIP本身已经有很强的视觉表示能力,不一定需要再通过Q-Former重新提取视觉信息。因此,希望Connector尽量简单,只负责映射,而不是重新编码视觉特征。

作者把Linear换成了一个两层MLP,结构:

CLIP Feature → Linear → GELU → Linear → Vicuna Embedding

论文称之为:2-layer MLP connector

比Linear多了一层隐藏层和一个GELU激活函数,可以学习非线性映射。没有设计更多层是因为如果MLP设计得很深,那么提升来自:网络更深?参数更多?训练更久?就很难分析。

因此作者只增加最小改动:

Linear → Linear + GELU + Linear

这样实验更容易说明:非线性映射本身就是有效的。


4. 为什么MLP能够提升效果?

MLP不是让模型看得更清楚,而是让视觉信息更容易被LLM理解。

以前:现在:

CLIP提取的视觉信息没有变化。MLP优化的是跨模态对齐(cross-modal alignment),而不是视觉编码能力。


5. 与BLIP-2、LLaVA对比

模型Connector是否重新编码视觉信息
BLIP-2Q-Former
LLaVALinear
LLaVA-1.52-layer MLP

可以看到,LLaVA-1.5并没有走BLIP-2的路线,而是在保持简单结构的前提下,提高映射能力。


本节总结

本节核心贡献不是提出新的跨模态结构, 而是证明对于已有较强视觉表示能力的CLIP,Connector主要承担的是跨模态映射,而不是视觉理解,一个简单的两层MLP就足以比单层Linear学习更好的视觉-语言空间对齐,而无需引入复杂的Q-Former。进一步支持了论文观点:提升多模态模型性能,不一定需要更复杂的结构,合理的训练设计和适度的非线性映射同样能够带来明显收益。


3.4 Academic-task-oriented Data

这一节回答的问题是:为什么LLaVA-1.5只增加了一部分数据,Benchmark性能却提升很多?


1. LLaVA原来数据存在的问题

LLaVA的数据组成主要是:CC3M等图文数据(预训练)、GPT生成的Visual Instruction Data(微调)

数据特点:偏开放式对话(Open-ended Conversation)

问题没有标准答案,更强调聊天能力,LLaVA在聊天Benchmark上表现很好,但Academic VQA一般。因为Academic Benchmark更关注精确回答。这些任务需要:精确识别、OCR、计数、属性识别,而不是长篇描述。


2. 作者的做法

补充了一类新的数据,主要包括:VQA、OCR、Chart/Diagram、Science QA等学术任务,把这类数据称为:Academic-task-oriented Data

作者采用混合训练(mixed instruction tuning)。Conversation Data + Academic Data共同参与微调,使模型既保留聊天能力,又能提升VQA表现。

作者强调:不是数据越多越好,而是数据类型要平衡。如果数据类型单一,即使规模很大,也未必能覆盖各种能力。相比之下,增加任务多样性更重要。


本节总结

LLaVA-1.5没有大量增加训练数据,而是在原有对话数据基础上,引入VQA、OCR、ScienceQA等学术任务数据。这些数据主要提升模型的精确识别和问答能力,而开放式对话数据继续保持模型的聊天能力。作者希望通过不同任务类型的互补,而不是单纯扩大数据规模,实现能力的全面提升。

3.5 High Resolution

为什么要支持高分辨率?又为什么不能直接把图片放大输入CLIP?

1. 为什么需要高分辨率?

LLaVA使用CLIP ViT-L/14,输入分辨率是336×336

很多任务需要更多细节,如:OCR、图表理解、小目标识别、高分辨率场景

整张图片 ──────────── 一个很小的路牌 很小的路牌经过缩放后路牌上的字几乎看不清,模型自然无法正确识别。

但直接把输入改成672×672不可行,原因:

1、CLIP是在固定分辨率下训练的,如果直接改变输入分辨率,模型性能通常会下降。

2、计算量增长太快Token数量变成4倍,Attention计算约增加16倍。


2. 方法:把图片切成多个子图并保留整张图

作者没有直接放大输入,而是采用了Image Grid的方法。先根据预设的分辨率将图片缩放和填充(padding),然后再进行切分。每一块仍然保持CLIP支持的输入尺寸。

为保留整体语义,不仅输入四个局部,还保留了一张缩放后的全局图。

最终输入变成:Global Image + Patch1 + Patch2 + Patch3 + Patch4

论文称这种做法为:Global(保留整体语义) + Local Representation(保留局部细节)


4. 整个流程

整个流程可以画成:

Original Image │ ┌─────┴─────┐ Global Image Grid Image (4 patches) └─────┬─────┘ │ CLIP │ Feature Sequence │ MLP Connector │ Vicuna

CLIP分别提取:全局特征、每个局部特征,最后拼接成一个更长的视觉Token序列。

LLM可以同时利用全局信息和局部细节


本节总结

LLaVA-1.5没有直接提高CLIP输入分辨率,而是采用Global + Image Grid策略:一方面保留一张缩放后的全局图获取整体语义,另一方面将原图切分成多个局部区域提取细节特征。最终将所有视觉特征拼接后输入LLM,实现了整体信息与局部细节的结合。这一方法避免了直接提高分辨率带来的CLIP适配问题和高昂计算成本,同时显著提升了OCR、小目标识别和图表理解等任务的性能。


一个值得注意的细节

很多人会认为:

Image Grid就是把图片裁剪后分别送入CLIP。

实际上更准确地说,它是多视角输入(multi-view input)

因为模型最终看到的不是"一张图片",而是:1张全局视图 +多个局部视图

LLM会综合这些视觉Token进行推理,而不是分别处理后再融合。这也是后来LLaVA-NeXT、InternVL、MiniCPM-V等模型广泛采用的思路:通过增加视觉视角,而不是修改视觉编码器本身,来提升高分辨率理解能力。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/21 6:44:19

高德问店AI选址:数据智能驱动实体商业决策创新

阿里最新推出的"高德问店"AI服务,为实体创业者提供了一套基于位置智能的选址决策解决方案。这个服务整合了高德地图的地理位置数据、钉钉悟空的商业洞察能力以及阿里云的技术支持,旨在帮助创业者在开店前做出更精准的选址判断。对于实体创业者…

作者头像 李华
网站建设 2026/7/21 6:43:59

Java垃圾回收机制演进与优化实践

1. Java垃圾回收机制演进概述 Java从诞生之初就采用了自动内存管理机制,这使其在开发效率和安全性上远超C/C等手动内存管理语言。垃圾回收器(Garbage Collector,GC)作为JVM的核心组件,经历了从JDK 1.0到JDK 17的多次重…

作者头像 李华
网站建设 2026/7/21 6:42:16

Java 稀疏数组实现(二维数组 ↔ 稀疏数组 互转)

原理说明稀疏数组适用场景:二维数组中大量元素为默认值(0),只有少量有效数据,用稀疏数组压缩节省空间。稀疏数组结构第一行:[总行数, 总列数, 有效元素个数]后续每一行:[行下标, 列下标, 对应数…

作者头像 李华
网站建设 2026/7/21 6:40:50

Java秋招突击:高频考点与实战策略精讲

如果你正在准备2025年或2026年的Java秋招,面对海量的八股文、复杂的场景题和层出不穷的新技术,感到无从下手、时间紧迫,那么这篇文章就是为你准备的。这不是一篇常规的“面经汇总”,而是一套经过验证的“邪修”突击策略——它不追…

作者头像 李华
网站建设 2026/7/21 6:40:24

吃透 Android 底层触控逻辑,根治项目常见交互 Bug

前言 做 Android 开发多年,绝大多数自定义控件、复杂页面交互异常,根源都指向触摸事件分发逻辑。很多开发者仅停留在 onTouch、onClick 表层调用,一旦遇到嵌套滚动、多层弹窗、多点触控、事件透传等复杂场景,只能靠临时重写方法强行兼容,无法从底层规避各类隐性 bug。 本…

作者头像 李华
网站建设 2026/7/21 6:40:18

C2000 ePWM数字比较子模块:硬件级实时保护与精准控制

1. 数字比较子模块:从信号到事件的精密转换 在电机驱动和开关电源这类对实时性要求极高的嵌入式系统中,硬件级的快速响应和精准控制是系统稳定运行的基石。想象一下,一个电机驱动器正在高速运转,突然发生了过流,如果这…

作者头像 李华