Li J, Li D, Savarese S, et al. Blip-2: Bootstrapping language-image pre-training with frozen image encoders and large language models[J]. arXiv preprint arXiv:2301.12597, 2023.
BLIP-2,是 BLIP 系列的第二篇,同样出自 Salesforce 公司,2023 年初挂在了 arXiv 上,不到一年时间已经拥有 600+ 引用量,可见其影响力。现在很多多模态大模型都是基于 BLIP-2 进一步拓展的。
与 ALBEF、BLIP 类似,BLIP-2 的目标是训练一个图文多模态预训练模型。不同点是,BLIP-2 是使用现有的单模态编码器,并且分两阶段冻结图像编码器和文本编码器训练出多模态预训练模型。这使得 BLIP-2 能够在降低训练成本的同时提高性能,给其带来了巨大的优势。
本文不再按照论文解读的方式逐段记录,只专注于介绍 BLIP-2 技术本身。本文参考 多模态学习6—深入理解BLIP-2,更多参考资料如下:
现有的视觉语言预训练 (VLP) 方法在训练图文多模态模型时,往往采用端到端的训练模式,主要存在以下两个问题:
为此,作者提出了 BLIP-2 模型:
LLM 本质上是个语言模型,无法直接接受其他模态的信息,所以需要把各个模态的信息统一到 LLM 能理解的特征空间。为此,作者提出了 Q-Former。为了融合特征,那 Q-Former 采用 transformer 架构最合适不过了。其实这里的 Q-Former 就是在 ALBEF 的基础上改进得到的。
相较于 ALBEF,Q-Former 最大的不同就是引入了 Queries。这些 Queries 通过 Cross-Attention 与图像的特征交互,通过 Self-Attention 与文本的特征交互。
BLIP-2 全称也是 Bootstrapping Language-Image Pre-training,是一种 冻结现有视觉模型和大语言模型的预训练模型。这里的 Bootstrapping 指的是预训练阶段使用先前的学习结果来改进当前的学习结果:第一阶段的预训练使用冻结的视觉模型来学习图像 - 文本表示,第二阶段的预训练使用冻结的大型语言模型来学习图像 - 文本生成。
BLIP-2 由预训练的视觉模型 Image Encoder、预训练的大语言模型 Large Language Model、可学习的 Q-Former 组成:
整个模型的流程是:Image Encoder 接收图像作为输入,输出图像的视觉特征;Q-Former 接收文本和 Image Encoder 输出的图像视觉特征,结合查询向量进行融合,学习与文本相近的视觉特征,输出 LLM 能够理解的视觉表示;最后 LLM 模型接收 Q-Former 输出的视觉标识,生成对应文本。
在介绍 Q-Former 的训练方法之前,需要先明确 Q-Former 的结构:Q-Former 由 Image Transformer 和 Text Transformer 两个子模块构成,它们共享相同的自注意力层:
Q-Former 使用 BERTbase 的预训练权重初始化,而交叉注意力层则是随机初始化。Q-Former 总共包含 188M 的参数。
预训练 Q-Former 时采用两阶段的训练策略:
第一阶段:冻结 Image Encoder 的参数,训练 Queries 和 Q-Former,让 Queries 能够从 Image Encoder 中提取图像特征,转化为和文本特征接近的视觉特征。这一阶段相当于在将图像特征空间拉近到文本特征空间;
第二阶段:冻结 LLM 的参数,训练 Queries 和 Q-Former,使得模型能够获取强大的 zero-shot 能力和图像生文本的能力。这一阶段相当于学习如何将视觉信息转换为自然语言文本,以便在后续的任务中生成与图像相关的自然语言描述;
两阶段的具体训练方法详见 多模态学习6—深入理解BLIP-2。
从功能上讲,Q-Former 机制本质上是为了对齐图像和文本。如果没有对齐操作,直接进行第二阶段的 LLM 生成任务学习,那么模型最后的结果会比较差,论文中也有实验证明。但对齐操作并不是一定需要 Q-Former 这种形式么,只要能够将 Image encoder 提取的原始图像特征进行某种程度的映射,理论上就可以进行对齐。但采用 Q-Former 确实有一些明显的优势,包括特征数量的固定、参数共享等。
下图的 zero-shot image-to-text generation 示例展现了 BLIP-2 模型超强的能力,包括视觉对话、知识推理、信息检索、语言表达、文本生成等:
文中还对比了不同 VLP 模型在 Image Captioning、VQA、Image-Text Retrieval 等任务上的表现:
BLIP-2 是一个典型的图文多模态模型,使用训练好的单模态模型和 Q-Former 机制,通过两阶段训练对不同模态进行对齐,有效地减少了训练成本并解决了模型的遗忘现象。
作者在文末表明,BLIP-2 也存在一些局限性:
Salesforce 没有开源预训练的代码,只开源了 训练好的模型 和 API,通过导入 lavis.models
包进行调用,可以直接拿来做下游任务。网页版的 Demo 也可以在线完成 Image Captioning、VQA 等任务(已停用)。
以 blip2_instructed_generation.ipynb 为例,调用 BLIP-2 提供的 API 处理下游任务。一开始使用的是 Google Colab,但加载模型时内存超限;后来换成 AutoDL,但 demo 文件调用封装的 lavis.models
需要从 https://huggingface.co/models 加载,遇到 OSError: Can't load tokenizer for 'bert-base-uncased'.
问题,查阅 huggingface 的讨论区发现是网络问题 1,AutoDL不能访问。下面只展示 demo 里自带的实验结果。
实验结果: