在 BLIP 的基础上,BLIP2 进行了以下几项主要优化,这些优化显著提升了模型的性能、计算效率和适配性:
1. 模块化架构设计
-
BLIP 的问题:
- BLIP 的图像编码器、文本编码器、视觉文本编码器和解码器之间的紧密耦合关系,是造成训练成本高、灵活性不足的重要原因。
- BLIP 的架构限制了视觉编码器和语言模型的选择,适配性不足。
-
BLIP2 的优化:
- 采用模块化设计,将模型分为三个模块:
- 视觉编码器(Image Encoder):用于提取图像的底层视觉特征(支持复用已有的预训练视觉模型,如 CLIP 或 ViT)。
- Q-Former(Querying Transformer):用于从视觉特征中提取与语言相关的多模态嵌入。
- 预训练语言模型(LLM, Large Language Model):用于处理生成任务,如文本生成或问答任务。
- 模块化设计使得 BLIP2 可以复用现有的强大视觉模型(如 CLIP、ViT)和语言模型(如 GPT、OPT),无需端到端联合训练,大大降低了开发和训练成本。
- 采用模块化设计,将模型分为三个模块:
2. 引入 Q-Former 模块
-
BLIP 的问题:
- BLIP 直接将视觉特征与语言模型对接,特征提取过程可能包含冗余信息,导致对齐效率较低。
-
BLIP2 的优化:
- 引入了 Q-Former,这是一个轻量级的变换器模块,用于从视觉特征中提取与语言模态相关的嵌入表示:
- 用于从视觉编码器生成的高维视觉特征中提取与语言模态相关的低维嵌入表示,从而实现高效的图像-文本对齐。
- Q-Former 的加入显著提升了图像-文本对齐的效果,同时减少了计算负担。
- 引入了 Q-Former,这是一个轻量级的变换器模块,用于从视觉特征中提取与语言模态相关的嵌入表示:
3. 分阶段训练策略
-
BLIP 的问题:
- BLIP 需要联合训练四个组件,优化难度大,训练时间长,硬件需求高。
-
BLIP2 的优化:
- 分阶段训练策略:
-
第一阶段:图像-语言对齐:
- 使用视觉编码器和Q-Former。但是冻结视觉编码器的权重(如 CLIP 或 ViT 的预训练模型),仅训练 Q-Former 模块,通过对比学习和图文匹配任务优化视觉-语言的对齐表示。
- 训练 Q-Former 模块,让其能够从视觉编码器生成的高维特征中提取与语言模态相关的信息。实现视觉模态和语言模态的对齐,构建统一的多模态嵌入表示。
-
第二阶段:文本生成任务:
- 使用Q-Former和将预训练语言模型。但是冻结的预训练语言模型(如 GPT 或 OPT),仅训练 Q-Former 来适应生成任务。
- 使用 Q-Former 提取的多模态嵌入作为语言模型的输入,适配预训练语言模型(如 GPT、OPT 等)进行文本生成任务。
-
第一阶段:图像-语言对齐:
- 这种策略避免了对大型语言模型的联合训练,显著降低了训练成本。
- 分阶段训练策略:
4. 减少计算开销
-
BLIP 的问题:
- 计算成本高,特别是在需要训练大型语言模型时,对硬件资源需求较高。
-
BLIP2 的优化:
- 通过模块化设计和冻结预训练模型参数,计算需求集中在轻量级的 Q-Former 模块上,减少了大规模计算开销。
- 与 BLIP 相比,BLIP2 的训练速度更快,资源需求更低,适合在资源有限的环境中使用。