NeurIPS 2023 | InstructBLIP:指令微调训练通用视觉-语言模型
点击下方卡片,关注“CVer”公众号
AI/CV重磅干货,第一时间送达
AI/CV重磅干货,第一时间送达
在CVer微信公众号后台回复:InstructBLIP,可以下载本论文pdf和代码,学起来!
导读
研究如何在视觉语言任务上进行指令微调,使得训练出的模型可以解决一系列的视觉任务。
本文目录
1 InstructBLIP: 指令微调训练通用视觉语言模型 (来自 Salesforce Research,HKUST,NTU)
1.1 指令微调:从纯语言模型到视觉语言模型
1.2 InstructBLIP 数据集构造
1.3 InstructBLIP 训练和测试流程
1.4 InstructBLIP 模型架构和训练策略
1.5 实验结果:Zero-Shot 评估
1.6 定性评估
1.7 指令微调 vs. 多任务学习
太长不看版
InstructBLIP 是 BLIP 作者团队在多模态领域的又一续作。现代的大语言模型在无监督预训练之后会经过进一步的指令微调 (Instruction-Tuning) 过程,但是这种范式在视觉语言模型上面探索得还比较少。InstructBLIP 这个工作介绍了如何把指令微调的范式做在 BLIP-2 模型上面。用指令微调方法的时候会额外有一条 instruction,如何借助这个 instruction 提取更有用的视觉特征是本文的亮点之一。InstructBLIP 的架构和 BLIP-2 相似,从预训练好的 BLIP-2 模型初始化,由图像编码器、LLM 和 Q-Former 组成。在指令微调期间只训练 Q-Former,冻结图像编码器和 LLM 的参数。作者将26个数据集转化成指令微调的格式,把它们分成13个 held-in 数据集用于指令微调,和13个 held-out 数据集用于 Zero-Shot 能力的评估。
1 InstructBLIP: 指令微调训练通用视觉语言模型
论文名称:InstructBLIP: Towards General-purpose Vision-Language Models with Instruction Tuning
论文地址:
https://arxiv.org/pdf/2305.06500.pdf
代码地址:
https://github.com/salesforce/LAVIS/tree/main/projects/instructblip
1.1 指令微调:从纯语言模型到视觉语言模型
在 NLP 领域,指令微调技术 (Instruction-Tuning) 帮助大语言模型 (Large Language Model, LLM) 推广到各种各样的任务上面。做法其实就是对预训练好的大语言模型进行有监督微调,只是这个微调的数据集中包含了很多自然语言指令,指令微调技术使得模型能够处理并遵循人类的指令。
指令微调得到的 LLM 其实已经在多模态模型里面使用了,比如 BLIP-2 就曾经借助了指令微调训练得到的 LLM 完成很多多模态任务。但是以上都是 LLM 领域的指令微调,只被证明了在 NLP 领域的泛化性能不错,对于视觉-语言任务的泛化性还没有得到验证。因此,本文提出的 InstructBLIP 就是研究如何在视觉语言任务上进行指令微调,使得训练出的模型可以解决一系列的视觉任务。
1.2 InstructBLIP 数据集构造
为了确保指令微调数据的多样性,作者收集了来自11种不同任务的26个数据集,并将它们转换为指令调优格式,如下图1所示。
对于每个任务,作者精心制作了10-15个自然语言指令模板,如下图2所示。这些模板阐明了任务并描述了目标。对于一些偏爱简短响应的数据集,作者刻意地在 instruction 中添加了 "short answer", "as short as possible" 字样来减小模型过拟合的风险,防止其始终生成很短的输出。
1.3 InstructBLIP 训练和测试流程
作者收集了来自11种不同任务的26个数据集,把它们分成13个 held-in 数据集用于指令微调,和13个 held-out 数据集用于 Zero-Shot 能力的评估。held-in 数据集的训练集用于训练,其他像验证集和测试集用于 held-in 的评估;held-out 数据集全部用来进行 held-out 的评估。
held-out 数据集有两种类型:1) 这些数据在训练期间没有被模型看过,但是同类型的任务有被模型学过。2) 这些数据不仅在训练期间没有被模型看过,而且同类型的任务也没被模型学过,符合这条的有4个任务:Visual Reasoning, Video Question Answering, Visual Conversational QA, 和 Image Classification,可以看到图1中它们的数据集都是白色的 held-out data,而且没有黄色的 held-in data。
在训练期间,把所有的 held-in 数据集的训练集混合之后,并在不同任务中均匀采样 instruction templates,使用语言建模损失函数训练模型:给模型输入图片和 instruction templates,希望它输出回答。
由于训练数据集数量太大, 而且每个数据集的大小存在显着差异, 均匀混合它们可能会导致模型过拟合较小的数据集, 并欠拟合更大的数据集。因此, 作者改了一下采样数据的概率, 从某个数据集里面采样数据的概率是: , 其中 代表每个数据集大小。
1.4 InstructBLIP 模型架构和训练策略
如下图3所示是 InstructBLIP 的模型架构,和 BLIP-2 保持一致,依然由视觉编码器,Q-Former 和 LLM 组成。视觉编码器提取输入图片的特征,并喂入 Q-Former 中。此外,Q-Former 的输入还包括可学习的 Queries (BLIP-2 的做法) 和 Instruction。Q-Former 的内部结构如图3黄色部分所示,其中可学习的 Queries 通过 Self-Attention 和 Instruction 交互,可学习的 Queries 通过 Cross-Attention 和输入图片的特征交互,鼓励提取与任务相关的图像特征。
Q-Former 的输出通过一个 FC 层送入 LLM,Q-Former 的预训练过程遵循 BLIP-2 的两步:1) 不用 LLM,固定视觉编码器的参数预训练 Q-Former 的参数,训练目标是视觉语言建模。2) 固定 LLM 的参数,训练 Q-Former 的参数,训练目标是文本生成。
在推理的时候,对于大部分数据集,如 image captioning,open-ended VQA 等,InstructBLIP 可以直接使用 LLM 生成的文本作为输出;对于 classification 和 multi-choice VQA 这样的任务,InstructBLIP 遵循 ALBEF 的做法生成固定的几种答案,根据概率选择最后的结果作为输出。这种做法的数据集包括有 ScienceQA、IconQA、A-OKVQA (多项选择)、HatefulMemes、Visual Dialog、MSVD 和 MSRVTT 数据集。
InstructBLIP 的 LLM 作者使用了 FlanT5-XL (3B), FlanT5-XXL (11B), Vicuna-7B 和 Vicuna-13B 这四种,视觉编码器使用的是 ViT-g/14。FlanT5[1] 是一个基于 Encoder-Decoder Transformer T5 的指令微调模型,Vicuna[2] 是一个基于 Decoder LLaMa 的微调模型。
在视觉语言 Instruction tuning 的过程中,初始化的权重是 BLIP-2 的权重,只微调 Q-Former 的参数,同时保持图像编码器和 LLM 冻结。由于原始的 BLIP-2 模型不包括 Vicuna 的检查点,作者使用与 BLIP-2 相同的策略 来预训练 Vicuna。
InstructBLIP 一共微调 60K steps,3B, 7B, 11/13B 模型的 Batch Size 分别是 192,128,64,优化器使用 AdamW,weight decay 设为 0.05,在前 1000 steps 使用线性的学习率 warm-up,从 10^{-8}10^{-8} 到 10^{-5}10^{-5} ,随后余弦衰减到0,使用 16 A100 GPU 训练 1.5 天。
1.5 实验结果:Zero-Shot 评估
Zero-Shot 推理的指令使用下面的模板:
GQA, VizWiz, iVQA, MSVD, MSRVTT <Image> Question: {} Short answer:
NoCaps, Flickr30k <Image> A short image description:
TextVQA <Image> OCR tokens: {}. Question: {} Short answer:
IconQA <Image> Question: {} Options: {}. Short answer:
ScienceQA <Image> Context: {} Question: {} Options: {}. Answer:HatefulMemes <Image> This is an image with: "{}" written on it. Is it hateful? Answer:
VSR <Image> Based on the image, is this statement true or false? "{}" Answer:
Visual Dialog <Image> Dialog history: {}\n Question: {} Short answer:
Zero-Shot 实验结果如图4所示。InstructBLIP 在所有数据集上都超过了 BLIP-2 和 Flamingo,比如 InstructBLIP FlanT5XL 相比于 BLIP-2 FlanT5XL 取得了 15.0% 的相对提升。只有 4B 参数的最小的 InstructBLIP FlanT5XL 模型在6个公共数据集上的性能超过了 Flamingo-80B 24.8%。
1.6 定性评估结果
如下图5所示是 InstructBLIP 的定性评估结果。InstructBLIP 展示了它对复杂视觉推理的能力。例如,它可以合理地从视觉场景中推断出可能发生的灾难类型,并从场景的位置推断出灾难类型。此外,InstructBLIP 还能够生成一些有信息量的回答,比如描述一幅名画。InstructBLIP 还可以参与多轮对话,在做出新响应时有效地考虑对话历史。
而且,如下图6所示,InstructBLIP 生成的回复更加准确到位,可以通过自适应调整响应长度来直接解决用户意图,不像其他几个模型 LLaVa 等容易生成一些很长但不太相关的,冗长的话,有很重的语言模型的痕迹。
1.7 指令微调 vs. 多任务学习
指令微调和多任务学习有点类似,为了确定指令微调技术对模型性能的提升到底帮助有多大,作者还将其与多任务学习进行对比,结果如下图7所示。一种多任务学习的做法是使用原始的输入 (不包含 Instruction),然后在有 Instruction 的情况下做评估;一种多任务学习的做法是在训练的时候加一个前缀 [Task:Dataset] ,比如对于 VQAv2 数据集添加 [Visual question answering:VQAv2]。结果显示都不如直接做 Instruction Tuning。
参考
^Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer ^https://github.com/lm-sys/FastChat
点击进入—>【多模态和Transformer】交流群
ICCV / CVPR 2023论文和代码下载
后台回复:CVPR2023,即可下载CVPR 2023论文和代码开源的论文合集
后台回复:ICCV2023,即可下载ICCV 2023论文和代码开源的论文合集
多模态和Transformer交流群成立
扫描下方二维码,或者添加微信:CVer333,即可添加CVer小助手微信,便可申请加入CVer-多模态或者Transformer 微信交流群。另外其他垂直方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch、TensorFlow和Transformer、NeRF等。
一定要备注:研究方向+地点+学校/公司+昵称(如多模态或者Transformer+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群
▲扫码或加微信号: CVer333,进交流群
CVer计算机视觉(知识星球)来了!想要了解最新最快最好的CV/DL/AI论文速递、优质实战项目、AI行业前沿、从入门到精通学习教程等资料,欢迎扫描下方二维码,加入CVer计算机视觉,已汇集数千人!
▲扫码进星球
▲点击上方卡片,关注CVer公众号
整理不易,请点赞和在看
微信扫码关注该文公众号作者