InstructBLIP
InstructBLIP 是一种基于指令微调(instruction tuning)的视觉语言模型,由 Salesforce 等机构的研究者提出,属于 BLIP 系列工作。它以预训练的 BLIP-2 为起点,收集 26 个公开数据集并转换为指令格式进行训练,同时引入指令感知的视觉特征提取机制,使模型能针对不同任务指令提取相应的图像特征。该模型在 13 个未见数据集上取得当时最优的零样本性能,并已开源。
定义
InstructBLIP 是一种视觉语言指令微调框架,其目标是让单一模型通过统一的自然语言接口处理多种视觉语言任务。它建立在预训练的 BLIP-2 之上,由图像编码器、查询转换器(Q-Former)和大型语言模型三部分组成。[1]
与只做图像描述类任务的方法不同,InstructBLIP 的着眼点是把自然语言处理中已被验证有效的指令微调思路迁移到视觉语言领域。它由来自 Salesforce 等机构的研究团队提出,全部模型均已开源。[2][1]
原理
InstructBLIP 沿用 BLIP-2 的模块化结构:冻结的图像编码器负责提取图像特征,Q-Former 通过一组可学习的查询向量与图像编码器输出做交叉注意力,产出若干视觉向量,经线性投影后送入冻结的语言模型生成文本。[3][4]
其与 BLIP-2 的关键差别在于指令感知的视觉特征提取。BLIP-2 在抽取视觉特征时不考虑任务,输出的是一组静态表示;InstructBLIP 则把自然语言指令同时送入 Q-Former 和语言模型,使 Q-Former 能够依据当前指令提取与之相关的视觉特征。[3][5]
在训练方式上,图像编码器与语言模型保持冻结,只对 Q-Former 的参数做微调,模型从预训练的 BLIP-2 检查点初始化。对于视频问答任务,处理方式是对每段视频均匀采样 4 帧,逐帧经过图像编码器和 Q-Former 后把特征拼接,再输入语言模型。[3][6]
发展历程
视觉语言指令微调在 2023 年前后尚属探索较少的方向,已有的多任务学习方法缺少指令成分,在迁移到未见任务时效果有限;另一类做法只用图像描述数据训练视觉模块,数据能力不足以支撑超出描述范畴的任务。[6]
研究团队在预训练 BLIP-2 的基础上系统开展了视觉语言指令微调研究,相关工作于 2023 年 5 月发布,论文题为《InstructBLIP: Towards General-purpose Vision-Language Models with Instruction Tuning》。该模型于 2023 年 6 月被纳入 Hugging Face Transformers 模型库,随后在 2023 年 12 月发表于第 37 届神经信息处理系统大会(NeurIPS)。[5][7]
训练数据方面,团队收集了 26 个公开数据集,覆盖 11 个任务类别,包括图像描述、视觉推理、图像问答、知识驱动的图像问答、视频问答、视觉对话问答和图像分类等,并统一改写为指令格式。每个任务设计了 10 至 15 个自然语言指令模板;26 个数据集被分为 13 个用于指令微调与评估的训练集,以及 13 个仅用于零样本评估的数据集,另有 4 个完整任务类别被整体留出。训练时采用平衡采样策略,按数据规模调整采样概率。[3][6]
应用
得益于 BLIP-2 模块化设计的灵活性,InstructBLIP 可以适配不同的语言模型。实验中统一使用 ViT-g/14 作为图像编码器,语言模型则分别采用 FlanT5-XL(3B)、FlanT5-XXL(11B)、Vicuna-7B 和 Vicuna-13B 四种,形成一组规模不同的模型。[3]
在评估中,InstructBLIP 在全部 13 个留出数据集上都取得了当时最优的零样本结果,明显优于其骨干 BLIP-2 以及规模更大的 Flamingo 模型。在包含图像上下文的 ScienceQA 问题上,微调后取得 90.7% 的准确率。评测任务覆盖图像描述、视觉问答、知识驱动的问答、带图文阅读理解的问答、视频问答、视觉对话、图像分类和 HatefulMemes 等。[1][6]
作为预训练模型,InstructBLIP 也可用作下游任务的初始化参数,在单个下游任务上微调后同样达到当时的最优效果。[1]
局限
InstructBLIP 训练所依赖的指令数据来自公开数据集的改写,其中图像描述类数据占比可观,这类数据本身难以覆盖需要视觉描述之外能力的任务,因此模型的泛化范围受训练任务类别的限制。[6]
模型只在 Q-Former 上做参数更新,图像编码器和语言模型始终冻结,视觉侧的表示能力不会随指令微调而变化,这限制了模型从视觉输入中获取新信息的上限。[6]
在工程使用上,每个图像对应的查询向量数量通常约 500 个,文本中需要插入相应数量的图像占位符,若文本被截断,合并嵌入时会出错,因此对输入长度有额外要求。[5]
该模型在训练中使用了 16 台 Nvidia A100(40G)GPU,整个训练过程在 1.5 天内完成,说明其复现需要相当规模的算力。[6]
参见
参考资料
- 9a6a435e75419a836fe47ab6793623e6-Abstract-Conference [引用日期2026-10-14]
- README.md · Salesforce/instructblip-vicuna-7b at main [引用日期2026-10-14]
- arxiv.org 上的网页 [引用日期2026-10-14]
- instructblip [引用日期2026-10-14]
- instructblip [引用日期2026-10-14]
- csdn.net 上的网页 [引用日期2026-10-14]
- acm.org 上的网页 [引用日期2026-10-14]