Visual Instruction Tuning
视觉指令微调使用图像、指令和回复示例对视觉语言模型进行微调,使其能够遵循关于图像的开放式请求。
视觉指令微调是指使用图像、自然语言指令和预期回答配对组成的样例对视觉语言模型 (VLM)进行微调,使模型学会遵循有关图像的开放式请求:描述场景、回答问题、读取文字,或推理画面中的内容。它将纯文本指令微调扩展到图像,是让一个只能关联图像与文字的模型转变为视觉助手的关键步骤。威斯康星大学麦迪逊分校、Microsoft Research 和哥伦比亚大学的 Haotian Liu、Chunyuan Li、Qingyang Wu 和 Yong Jae Lee 在 《Visual Instruction Tuning》中提出了这一术语;该论文在 NeurIPS 2023 上作口头报告,并介绍了由此开发的 LLaVA(大型语言与视觉助手)模型。
生成指令数据#
当时,很少有数据集将图像与指令及回答配对,因此 LLaVA 作者使用纯文本模型生成了这些数据。对于每张 COCO 图像,他们向 GPT-4提供该图像的符号描述,也就是人工撰写的字幕,以及带有物体类别和坐标的边界框,再加上几个手写示例,并要求 GPT-4 假装能看到图片来编写问题和答案。由此生成的合成数据以 LLaVA-Instruct-150K 名称发布,包含 158,000 个样本,分为三类:58,000 段多轮对话、23,000 条详细描述,以及 77,000 个需要围绕场景逐步推理才能回答的复杂推理问题。
架构与训练#
LLaVA 将 CLIP ViT-L/14 图像编码器通过单个线性投影连接到 Vicuna 大型语言模型 (LLM),该投影会把图像特征映射到 LLM 的词嵌入空间,因此图像会以一串视觉token的形式进入 LLM,并排在指令之前。训练分为两个阶段:
- 特征对齐: 使用从 CC3M 数据集中筛选出的 595,000 组图像-字幕配对,只训练投影层,同时冻结视觉编码器和 LLM,使视觉 token 能被 LLM 读取。
- 视觉指令微调: 使用指令数据同时更新投影层和 LLM,同时冻结视觉编码器。下一个 token 的损失只针对助手的回答计算,不针对图像 token 或用户指令计算。
最终模型能够围绕从未见过的图像和指令进行对话。在一个由 GPT-4 评分的合成多模态指令遵循基准上,LLaVA 达到了 GPT-4 自身分数的 85.1%;在 ScienceQA 基准上微调后,LLaVA 与 GPT-4 组成的集成以 92.53% 的准确率创下新的最先进结果。
LLaVA-1.5 简化并改进了这一方案:它用两层 MLP 替代线性投影,将 CLIP 输入分辨率提高到 336 像素,加入了带有指定答案格式的简短提示词的学术视觉问答数据集,并使用 120 万个公开样本,在配备八块 A100 GPU 的单个节点上约一天完成 130 亿参数模型的训练。Salesforce 推出的 InstructBLIP 则采用不同路线,将现有带标签数据集转换为指令格式,并根据指令调整图像特征。
应用场景#
经过指令微调的 VLM 用一个系统取代了许多单任务模型:它可以回答开放式问题,按照用户要求的详细程度撰写图像字幕,并读取照片中的文字,将光学字符识别 (OCR)与对文字含义的推理结合起来。以这种方式读取屏幕截图的模型可以驱动计算机使用代理。这一方案也适用于专业领域:LLaVA-Med 使用 PubMed Central 的生物医学图表-字幕配对进行对齐,再根据 GPT-4 生成的相关指令进行微调,并在八块 A100 GPU 上用不到 15 小时完成训练,为能够用文字解释检查结果的医学图像分析助手提供了一条实现路径。
许多经过指令微调的 VLM 在收到请求时也会返回物体位置。Ultralytics Platform 在其由类别提示的智能标注功能中使用了这一能力:对于包含 1–200 个类别的检测数据集,托管的开源模型(例如 Moondream 3.1)或服务商的付费视觉模型会在图像中查找数据集的类别,并返回可编辑的边界框供你审核。
经过指令微调的 VLM 也会继承其训练数据的弱点。生成的回答可能会描述图像中不存在的物体;直接偏好优化 (DPO)等偏好方法会在指令微调后应用,以减少这些幻觉。
视觉指令微调与相关概念#
- 文本指令微调: 使用指令-回答配对对纯文本 LLM 进行微调。视觉指令微调则为每个样例添加图像,并训练视觉编码器与 LLM 之间的连接。
- 视觉语言预训练: CLIP 等对比式模型会学习匹配图像和字幕,为 VLM 提供视觉特征,但不会让它具备遵循指令的能力。
- 视觉提示: 在推理时使用点、框或示例图像等视觉线索引导模型,例如用于可提示分割。视觉指令微调是一个训练阶段,其提示以自然语言编写。
- 视觉问答 (VQA)微调: 在单一任务和答案格式上训练模型,例如某个 VQA 基准。视觉指令微调会以统一的指令格式混合多种任务类型,使模型能够泛化到新请求。










