- 人工智能
- 大模型
- 多模态
- 计算机视觉
- NLP
- 预训练
- 微调
- 模型推理服务
【免费下载链接】LLaVA
[NeurIPS'23 Oral] Visual Instruction Tuning (LLaVA) built towards GPT-4V level capabilities and beyond.
LLaVA-Bench 是 LLaVA 项目为「开放式多模态视觉对话」设计的评测基准,核心思路是用 text-only GPT-4 充当裁判,对候选多模态模型与参考答案进行 1~10 分制打分,从而在不依赖选择题题库的情况下衡量模型的视觉聊天能力。本文以仓库 docs/LLaVA_Bench.md 为主体,结合scripts/v1_5/eval/llavabench.sh、llava/eval/eval_gpt_review_bench.py、llava/eval/table/rule.json 等源码,完整还原 LLaVA-Bench 的数据构成、打分机制、可复现评测命令与历史结果,读完即可在自己模型上跑通整套评测。
一、为什么需要 LLaVA-Bench:对标商业多模态聊天机器人
2023 年 7 月前后,微软发布了多模态 Bing-Chat(2023-07-18 宣布,支持多模态视觉搜索)、谷歌发布了多模态 Bard。这些商业聊天机器人背后大概率由闭源的大型多模态模型(Large Multimodal Model, LMM)驱动。相比 LLaVA 这类开源 LMM,闭源 LMM 可以视为当前 SoTA 技术路线规模化成功的天花板(upperbound)参照。
两者目标一致:构建能理解人类意图、在真实开放场景(in the wild)中完成各类日常视觉任务的聊天机器人。但当时「如何评测多模态聊天能力」这一课题尚缺乏探索,因此 LLaVA 团队认为,将开源 LMM 与商业多模态聊天机器人放在同一把尺子下对比,能为开源社区提供非常有用的反馈。于是,在用于早期版本开发的 LLaVA-Bench (COCO) 之外,团队公开了 LLaVA-Bench (In-the-Wild) 数据集供社区使用。
二、数据集构成:24 张图、60 个问题、三种任务类别
LLaVA-Bench (In-the-Wild) 定位为持续改进中的开放工作(ongoing work),其设计目标有两个:
- 评估模型在更具挑战性任务上的能力;
- 评估模型对新领域的泛化能力。
为此,数据集收集了24 张风格多样的图片,共配60 个问题,覆盖:
- 室内与室外场景;
- 表情包(memes);
- 绘画(paintings);
- 素描(sketches)等。
每张图片都关联一段人工精心撰写的详细描述(highly-detailed and manually-curated description)以及一组精选问题。这种设计同时考验模型对不同提问方式的鲁棒性。
问题被划分为三个类别(后续评测与打分也按类别分别统计):
| 类别 | 说明 |
|---|---|
| conversation(对话/简单 QA) | 围绕图片的简单问答与多轮对话 |
| detail_description(详细描述) | 要求模型对图片给出细致、全面的描述 |
| complex_reasoning(复杂推理) | 需要结合常识、逻辑或外部知识进行推理的问题 |
数据集的 prompt 风格可以从仓库 playground/data/prompts 目录中一窥端倪:conversation、detail_description、complex_reasoning三个子目录分别存放对应类别的*_caps.txt(图片描述)与*_conv.txt(对话样例)。例如 playground/data/prompts/complex_reasoning/000_conv.txt 展示了一个典型复杂推理问题:
Question: What is unusual about this photo? === Answer: In the photo, the man is wearing a total of ten ties around his neck. ...在发布该版本时,官方还人工向 Bing-Chat 与 Bard 查询获取了它们的回答作为对比数据,并持续扩充 LLaVA-Bench (In-the-Wild) 的多样性。
三、打分机制:text-only GPT-4 生成参考答案,GPT-4 担任裁判
LLaVA-Bench 的核心思想是「用语言模型评估视觉模型」:既然视觉模型的输出是自然语言,那么可以交由一个纯文本模型来评判其质量。
具体流程分两步:
- 生成参考答案:把问题(question)连同图片的 ground truth 标注(ground truth image annotations)作为上下文,喂给 text-only GPT-4,生成一份参考回答。这份参考回答代表了「信息完整、表述良好」的理想水平。
- 打分:再让一个 text-only GPT-4 评测器同时评估参考答案与候选模型回答,输出两个 1~10 分的分数(Assistant 1 / Assistant 2)。官方约定把参考答案排在前面、候选模型回答排在后面,即第一位是 Assistant 1(参考),第二位是 Assistant 2(候选)。
对于 Bard 与 Bing-Chat,官方上传的是原始分辨率图片(images at their original resolution)来获取回答。
源码层面的打分实现
评测打分脚本 llava/eval/eval_gpt_review_bench.py 完整实现了上述机制,关键细节如下:
- 调用
openai.ChatCompletion.create,使用模型gpt-4-0314,system prompt 为"You are a helpful and precise assistant for checking the quality of the answer."; - 采样温度
temperature=0.2(源码注释里留有 TODO:探究最佳评测温度); - 默认
max_tokens=1024; - 遇到
RateLimitError会静默重试,每次失败后 sleep 0.5 秒,保证长时间批量评测的稳定性; - 打分结果解析
parse_score:取回复的第一行,将,替换为空格后按空格拆分,得到[score1, score2]两个浮点数;解析失败则返回[-1, -1]占位; - 支持断点续跑:若输出文件已存在,会先读入已有 review,跳过已完成的条目(
Skipping {idx} as we already have it.),并以追加模式继续写入; - 每条 review 记录包含
question_id、answer1_id、answer2_id、category、content(GPT-4 的完整评语)与tuple(分数对)。
拼接给 GPT-4 的内容模板为:
[Context] <图片描述> [Question] <问题文本> [Assistant 1] <参考答案> [End of Assistant 1] [Assistant 2] <候选模型回答> [End of Assistant 2] [System] <打分规则 prompt>其中类别category会拼接为llava_bench_前缀(如llava_bench_conv、llava_bench_detail、llava_bench_complex),与 llava/eval/table/rule.json 中的键一一对应。打分规则文件里针对不同类别提供了差异化 prompt:
llava_bench_conv/llava_bench_detail/llava_bench_complex:告知评测器「用户是在观察图片后提问,视觉内容用几句描述性句子表示」,要求从 helpfulness(有用性)、relevance(相关性)、accuracy(准确性)、level of details(细节丰富度)四个维度打分,先输出一行两个空格分隔的分数,再给出消除顺序偏差的综合评语;default(通用问答):同样按上述四个维度打分;math/coding:分别针对数学与编程任务的专门规则,要求先独立解题再逐步核对,体现同一打分框架对不同任务的可扩展性。
分数汇总
打分完成后,用 llava/eval/summarize_gpt_review.py 汇总:按category分组统计分数对,输出每个类别的相对分数(stats[1]/stats[0]*100,即候选得分占参考得分的百分比,保留 1 位小数)以及参考/候选的原始分(10 分制 ×10 后的数值)。因此结果表中的「分数」本质上是候选模型相对 GPT-4 参考回答的比例得分,Conversation / Detail / Reasoning / Overall 分别对应三个类别与全量平均。
四、官方评测结果:LLaVA-13B 与 Bard、Bing-Chat 的对比
下表为文档 docs/LLaVA_Bench.md 公布的官方结果(模型命名中的 0719 指 2023-07-19 发布的版本,336px 指以 336×336 分辨率输入,beam 为解码时的束搜索宽度):
| Approach | Conversation | Detail | Reasoning | Overall |
|---|---|---|---|---|
| Bard-0718 | 83.7 | 69.7 | 78.7 | 77.8 |
| Bing-Chat-0629 | 59.6 | 52.2 | 90.1 | 71.5 |
| LLaVA-13B-v1-336px-0719 (beam=1) | 64.3 | 55.9 | 81.7 | 70.1 |
| LLaVA-13B-v1-336px-0719 (beam=5) | 68.4 | 59.9 | 84.3 | 73.5 |
可以观察到:
- 在 Overall 上 Bard-0718(77.8)领先,LLaVA-13B 使用 beam=5 时(73.5)已相当接近,且明显优于 beam=1(70.1),说明解码策略对开放问答得分有明显影响;
- Bing-Chat 在复杂推理(Reasoning 90.1)上表现突出,但对话与描述类得分偏低;
- 增大束搜索宽度(beam 1→5)使 LLaVA 在三个类别上全面小幅提升。
关于人类内容的子集说明
官方特别注明:Bard 有时会拒绝回答含人类(humans)图片的问题,Bing-Chat 则会对图片中的人脸做模糊化处理,这会对分数造成系统性偏差。因此文档还提供了去除含人类图片的子集上的基准分数:
| Approach | Conversation | Detail | Reasoning | Overall |
|---|---|---|---|---|
| Bard-0718 | 94.9 | 74.3 | 84.3 | 84.6 |
| Bing-Chat-0629 | 55.8 | 53.6 | 93.5 | 72.6 |
| LLaVA-13B-v1-336px-0719 (beam=1) | 62.2 | 56.4 | 82.2 | 70.0 |
| LLaVA-13B-v1-336px-0719 (beam=5) | 65.6 | 61.7 | 85.0 | 73.6 |
在去人类子集上,Bard 的对话分大幅提升(83.7→94.9),印证了其此前失分与「拒绝回答含人图片」直接相关。这类细节提示评测者在对比不同模型时,需要警惕模型自身的内容策略差异对分数公平性的影响。
五、本地复现:在自有模型上跑通 LLaVA-Bench 评测
仓库提供了开箱即用的完整评测脚本 scripts/v1_5/eval/llavabench.sh,一条龙完成「模型生成回答 → GPT-4 评审 → 分数汇总」三步:
# 1. 用 LLaVA 模型生成回答 python -m llava.eval.model_vqa \ --model-path liuhaotian/llava-v1.5-13b \ --question-file ./playground/data/eval/llava-bench-in-the-wild/questions.jsonl \ --image-folder ./playground/data/eval/llava-bench-in-the-wild/images \ --answers-file ./playground/data/eval/llava-bench-in-the-wild/answers/llava-v1.5-13b.jsonl \ --temperature 0 \ --conv-mode vicuna_v1 # 2. GPT-4 评审(候选回答 vs 参考答案) mkdir -p playground/data/eval/llava-bench-in-the-wild/reviews python llava/eval/eval_gpt_review_bench.py \ --question playground/data/eval/llava-bench-in-the-wild/questions.jsonl \ --context playground/data/eval/llava-bench-in-the-wild/context.jsonl \ --rule llava/eval/table/rule.json \ --answer-list \ playground/data/eval/llava-bench-in-the-wild/answers_gpt4.jsonl \ playground/data/eval/llava-bench-in-the-wild/answers/llava-v1.5-13b.jsonl \ --output \ playground/data/eval/llava-bench-in-the-wild/reviews/llava-v1.5-13b.jsonl # 3. 汇总分数 python llava/eval/summarize_gpt_review.py -f playground/data/eval/llava-bench-in-the-wild/reviews/llava-v1.5-13b.jsonl各步骤与输入文件的作用如下:
- 步骤 1:调用 llava/eval/model_vqa.py 对
questions.jsonl中的每个问题 +images目录中的对应图片做批量推理。官方采用--temperature 0(贪心解码),与 README 中「LLaVA-1.5 用贪心解码保证可复现性、与聊天 demo 的实时输出保持一致」的评测策略一致;--conv-mode vicuna_v1指定对话模板(见 llava/conversation.py)。 - 步骤 2:把候选回答(
answers/llava-v1.5-13b.jsonl)与 GPT-4 参考答案(answers_gpt4.jsonl)成对送入 eval_gpt_review_bench.py,context.jsonl提供每张图片的 ground truth 描述(由image字段建立索引,脚本中image_to_context = {context['image']: context for context in context_list}),rule.json提供各类别打分 prompt。注意此步骤需要设置OPENAI_API_KEY环境变量,且会产生 OpenAI API 调用费用。 - 步骤 3:
summarize_gpt_review.py读取 review 文件,按category输出各维度相对分数与总分(前述脚本第 59 行print(k, round(stats[1]/stats[0]*100, 1), ...))。
评测流程在代码中的验证
上述流程与仓库中另一条 GPT 辅助评测管线(COCO 视觉问答场景,见 README.md 的 GPT-assisted Evaluation 一节与 llava/eval/eval_gpt_review_visual.py)在机制上同源:都是「候选回答 vs 参考回答 → GPT-4 双答打分」。区别在于:
eval_gpt_review_visual.py的context.jsonl额外包含五句图片描述 + 各实例的边界框坐标([Context]\n{cap_str}\n\n{box_str}\n\n),更适合需要空间定位信息的视觉问答;eval_gpt_review_bench.py的rule.json使用llava_bench_*前缀的键,且 context 只提供描述性句子,与 LLaVA-Bench 的数据形态严格对应;- 更早的通用版 llava/eval/eval_gpt_review.py 用 Ray 并行调用
gpt-4,是这套评测思路的雏形。
六、评测结果的可视化与人工复核
仓库还提供 llava/eval/generate_webpage_data_from_table.py,把question.jsonl、各模型answer/*.jsonl、review/*.jsonl汇总为webpage/data.json,供 llava/eval/webpage/index.html 渲染成可交互对比页面——可以逐题查看问题、双方回答、GPT-4 评语与分数,方便对打分结果做人工复核与案例级分析。这也说明 LLaVA-Bench 的产出不仅是分数,还保留完整评语用于诊断模型短板。
七、使用 LLaVA-Bench 的注意事项
结合文档与源码,使用该基准时有几点值得留意:
- 费用与网络:打分阶段依赖 OpenAI GPT-4 API,需要有效 API Key,60 个问题 × 若干候选模型会产生相应调用量;脚本内置限流重试,但批量运行耗时较长。
- 公平性:商业模型存在内容审核策略(拒绝回答含人图片、人脸模糊),对比时建议同时参考去人类子集分数,避免把策略差异误读为能力差异。
- 解码参数:官方在基准结果中使用 beam=1 与 beam=5 两种设置;后续 LLaVA-1.5 系列评测则统一采用贪心解码(
--temperature 0)以保证可复现,报告分数时需注明解码配置。 - 参考答案的版本敏感性:参考回答由 text-only GPT-4(0314 快照)生成,GPT 模型版本更新可能影响打分分布,跨版本复跑时分数不完全可比。
八、总结
LLaVA-Bench (In-the-Wild) 是 LLaVA 项目针对「开放域多模态视觉对话」给出的评测方案:以人工精标描述 + 精选问题构成 24 图 / 60 问的紧凑数据集,以 text-only GPT-4 双答打分替代选择题形式的传统评测,并通过 scripts/v1_5/eval/llavabench.sh 把「生成 → 评审 → 汇总」全流程脚本化,使任何 LLaVA 系模型都可以快速对照 Bard、Bing-Chat 等商业系统的历史成绩。该基准在 2023-07 随 LLaVA 大版本更新(LLaMA-2 支持、336px 分辨率等)一同发布,是 README 中「benchmarking open-ended visual chat with results from Bard and Bing-Chat」这一评测体系的落地载体;文档中标注其为持续扩充的 ongoing work,社区可在此基础上扩展更多图片与问题类别,推动多模态聊天能力的可量化评估。
- 人工智能
- 大模型
- 多模态
- 计算机视觉
- NLP
- 预训练
- 微调
- 模型推理服务
【免费下载链接】LLaVA
[NeurIPS'23 Oral] Visual Instruction Tuning (LLaVA) built towards GPT-4V level capabilities and beyond.
相关推荐
Compiler Explorer 架构全景解析:使命、配置体系、扩展模式与规模化部署设计
Compiler Explorer 架构全景解析:使命、配置体系、扩展模式与规模化部署设计 Compiler Explorer(以下简称 CE)是一个在浏览器中
后端前端开发工具RIR-Generator终极指南:如何在MATLAB中快速生成房间脉冲响应
RIR Generator终极指南:如何在MATLAB中快速生成房间脉冲响应 RIR Generator是一个基于图像法的MATLAB MEX函数,专门用于生成
BAGEL基准测试终极指南:全面解析GenEval、WISE、GEdit-Bench评估流程与结果分析
BAGEL基准测试终极指南:全面解析GenEval、WISE、GEdit Bench评估流程与结果分析 BAGEL是一个开源的多模态基础模型,拥有70亿个活跃参
人工智能大模型基础模型多模态计算机视觉媒体生成深度学习预训练微调模型评测
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考