当前位置: 首页 > news >正文

【第三十八周】BLIP-2:一种高效的视觉语言预训练框架

BLIP-2

  • 摘要
  • Abstract
  • 文章信息
  • 引言
  • 方法
    • 模型结构
    • Stage1:表征学习
    • Stage2:生成学习
    • 模型预训练
  • 实验结果
  • 总结

摘要

本篇博客介绍了BLIP-2 ,这是一种面向通用多模态任务的高效视觉语言预训练框架,其核心思想是在冻结大语言模型的前提下,通过引入一个可训练的查询变换器(Q-Former),实现视觉特征与语言输入之间的有效桥接。该方法针对传统多模态模型训练成本高、跨模态对齐难的问题,提出了一个两阶段架构:首先训练一个融合视觉信息的 Q-Former,以少量计算资源学习从图像中提取语言相关的视觉语义;其次将其输出作为提示输入,引导大语言模型完成图文理解、图像问答等下游任务。这种解耦式设计不仅显著降低了训练资源需求,还提升了模型在零样本和指令跟随任务中的表现。实验结果显示,BLIP-2 在多个标准数据集上取得了领先性能,尤其在零样本图文任务中展现出优越的泛化能力。尽管如此,该方法仍存在视觉语言对齐粒度不足、模型推理效率受限等问题。未来可在增强对话式能力、多轮推理以及端到端语义对齐方面进一步优化。

Abstract

This blog introduces BLIP-2, an efficient vision-language pretraining framework designed for general-purpose multimodal tasks. Its core idea is to bridge visual features and language inputs by introducing a trainable Querying Transformer (Q-Former), while keeping a large language model (LLM) frozen. To address the high training cost and difficulty of cross-modal alignment in traditional multimodal models, BLIP-2 adopts a two-stage architecture: first, the Q-Former is trained to extract language-relevant visual semantics from images using minimal computational resources; second, its outputs are used as prompts to guide the frozen LLM in downstream tasks such as image-text understanding and visual question answering. This decoupled design not only reduces training cost significantly but also improves performance in zero-shot and instruction-following tasks. Experimental results demonstrate that BLIP-2 achieves state-of-the-art performance across multiple benchmarks, with strong generalization in zero-shot image-language tasks. Nonetheless, limitations remain in terms of fine-grained visual-language alignment and inference efficiency. Future improvements may focus on enhancing dialog capabilities, multi-step reasoning, and end-to-end semantic alignment.


文章信息

Title:BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models
Author:Junnan Li, Dongxu Li, Silvio Savarese, Steven Hoi
Source:https://arxiv.org/abs/2301.12597


引言

随着大规模预训练模型在自然语言处理(NLP)和计算机视觉(CV)中的成功,跨模态学习(vision-language learning)逐渐成为人工智能研究的核心方向之一。如何将视觉与语言信息有效融合,是实现智能系统多模态理解能力的关键。
多模态模型最近几年蓬勃发展,但一直无法解决一个痛点:
追求更好的性能,通常意味着需要更大的网络架构(image encoder 和 text encoder/decoder)和数据集,导致更大的训练代价,如何降低模型训练成本,同时具有很好的性能,这是 BLIP-2 的研究动机。
本文介绍的BLIP-2提出的方法基于现有高质量视觉模型及语言大模型进行联合训练,为减少计算量及防止遗忘,作者对预训练模型进行frozen,为了将两任务对齐,作者提出Querying Transformer (Q- Former) 预训练其将有用视觉特征传递至LLM输出目标文本。

方法

BLIP-2 基于 BLIP 架构,利用已有的 ViT 和 LLM (二者冻结)+ 一个轻量的 Q-Former 模块(做模态融合),大幅降低训练成本。
在这里插入图片描述
为了对齐视觉特征到LLM文本空间,作者提出Q-Former,进行两阶段预训练:

  1. 图像编码器frozen进行学习视觉语言表征;
  2. 使用frozen LLM进行学习视觉到文本生成;

模型结构

如下图所示,Q-Former 包括两个共享 self-attention 层的 transformer子模块:图像transformer(Q-Former左半部分)与frozen image encoder相互作用提取视觉特征;文本transformer(Q-Former右半部分)可作为文本编码器,也可作为文本解码器。
在这里插入图片描述
BLIP-2 按照Two-Stage策略预训练轻量级查询 Transformer 以弥合模态差距。

Stage1:表征学习

Q-Former 的输入包含三部分:

  1. 冻结参数的Image Encoder提取的图像embeddings;
  2. Learned Queries,Queries是一组可学习的embeddings,是第一个transformer模块的input,可认为是模型参数一部分,推理时,Queries 被用来从 image encode r输出的 embeddings 里提取与 input text 最相关的视觉信息;
  3. Input Text。

Stage 1 使用 图像-文本对 进行预训练,目标是训练好 Q-Former,以便 Queries 可以学习到如何更好地结合文本提取图片信息。
对于Q-Former,一种比较好理解的方式:把Q-Former类比为一个Self-attention模块:

  • Q:learned queries
  • K:input text
  • V:image embeddings from Image Encoder

query通过学习提升与text相关视觉表征,受BLIP启发,作者通过3个目标函数,共享相同输入格式及模型参数,每个目标函数通过不同attention mask策略控制query与text之间相互影响,目标函数如下:

  1. Image-Text Contrastive Learning (ITC Loss, CLIP-like)
    ITC学习对齐图像表征与文本表征,通过比较成对与非成对的图像-文本相似度实现。
    计算过程为:计算image transformer输出query表征Z(与可学习query长度相同)与text transformer输出文本表征 t 中【CLS】token相似性,选取最大值作为图像文本对相似度,为防止信息泄露,作者使用单模态self-attention mask,query与text不能互相可见,防止从文本直接学习。
  2. Image-Text Matching (ITM Loss,二分类task)
    通过学习图像文本对是否匹配,以细粒度对齐 图像和文本表征。
    使用bi-dirention self-atttention mask,所有query与text相互可见,因此输出的query embedding Z捕获多模态信息,Z通过二类线性分类器获取logit,logit均值为匹配得分。另外,作者使用《Align before Fuse》中难例负样本挖掘策略创建负样本对。

当负样本的图像文本对有相同的语义但在细粒度细节上不同,那么该样本是难样本。作者通过对比相似度寻找batch内的 hard negatives。对于一个batch中的每一幅图像,作者根据对比相似性分布从相同的batch中抽取一个负文本,其中与图像更相似的文本有更高的可能被采样。同样的,作者还为每个文本采样一个hard negative图像。

  1. Image-Grounded Text Generation (ITG Loss, GPT-like)
    此损失函数的目的是让Q-Former学习“图生文”的能力,即给定Input Image,生成Text。
    ITG根据输入图像训练Q-Former生成文本,由于Q-Former不允许image encoder与text token直接交互,文本生成所需信息通过query进行提取,通过self-attention进行传递至text token,因此query需要捕获文本相关所有信息,作者使用多模态因果self-attention mask控制query-text交互,query无法获取text token,当前text token 可获取所有query及其之前text token。作者将【CLS】token替换为【DEC】token 作为解码任务标记。

Stage2:生成学习

Stage 2 是为了把 Q-Former 和冻结参数的 LLM 连接起来,以利用 LLM 的文本生成能力。
在这里插入图片描述

  • 首先输入图片,直接输入冻结参数的 Image Encoder,得到图像的表征。
  • 然后图像的表征和 Queries 一起送入 Q-Former,得到 Queries 的输出 Z Z Z ,使用全连接 (FC) 层将 Z Z Z 线性投影到与 LLM 的 text embedding 相同维度。
  • 后将投影后的 Z Z Z 添加到 input text embeddings前面。Queries 的输出蕴含了视觉信息,送入LLM时,充当了soft visual prompts 。

由于 Q-Former 已经过预训练以提取语言信息视觉表示,因此它有效地充当信息瓶颈,将最有用的信息提供给 LLM,同时删除不相关的视觉信息。这减少了LLM学习视觉语言对齐的负担,从而缓解了灾难性的遗忘问题。

作者实验了两种LLM,decoder-based LLM以及encoder-decoder-based LLM。
对于decoder-based LLM,作者使用language modeling loss进行预训练,frozen LLM进行文本生成;
对于encoder-decoder-based LLM,使用prefix language modeling loss预训练,将text分为两部分,text前半部分与视觉表征concat输入LLM编码器,后半部分作为LLM解码器的生成目标。

模型预训练

BLIP-2使用与BLIP相同数据,129M 组图文对 (涵盖很多数据集,包括COCO、Visual Genome、CC3M、CC12M、SBU,其中115M来自 LAION400M)。
另外,使用CapFilt对网图进行生成caption,具体步骤如下:

  • 用BILP-L生成10个caption;
  • 生成1的0个caption和原始web caption通过CLIP ViT-L/14模型与对应图像进行相似度排序;
  • 选取相似度最高的两个 Caption 作为该图的 Caption ,以此作为训练数据。

预训练图像编码器与LLM:
在这里插入图片描述
视觉编码器用的是ViT-L/14 from CLIP、ViT-G/14 from EVA-CLIP,且移除ViT最后一层,使用倒数第二层特征。
LLM模型用到的是:无监督训练的OPT作为decoder-based LLM和基于指令训练的FlanT5作为encoder-decoder-based LLM。

实验结果

下表展示BLIP-2在各种零样本视觉语言任务上表现,与之前SOTA方法相比,性能得到改善,而且训练参数大量减少。
在这里插入图片描述
BLIP-2 在多个视觉语言任务和评测基准上进行了系统实验,涵盖图像字幕生成(Image Captioning)、图文问答(VQA)、视觉推理(Visual Reasoning)等典型任务。其核心实验结果表明:BLIP-2 在保持训练效率的同时,在多个任务上显著优于先前的方法,并且展现出强大的零样本(zero-shot)泛化能力。
源码:https://github.com/salesforce/LAVIS/tree/main/projects/blip2
关键代码:
Q-Former 是 BLIP-2 中连接视觉编码器与大语言模型(LLM)的关键模块,其设计基于 BERT 架构,并在特定层引入交叉注意力机制以实现多模态对齐。其官方实现的初始化代码如下:

def init_Qformer(cls, num_query_token, vision_width, cross_attention_freq=2):# 加载 BERT 的配置文件encoder_config = BertConfig.from_pretrained("./models/bert-base-uncased")# 设置视觉编码器的输出维度encoder_config.encoder_width = vision_width# 启用交叉注意力机制,并设置其在 Transformer 层中的插入频率encoder_config.add_cross_attention = Trueencoder_config.cross_attention_freq = cross_attention_freq# 定义可学习的查询嵌入数量encoder_config.query_length = num_query_token# 初始化带有语言建模头的 BERT 模型Qformer = BertLMHeadModel(config=encoder_config)# 创建可学习的查询嵌入参数,形状为 (1, 查询数, 隐藏维度)query_tokens = nn.Parameter(torch.zeros(1, num_query_token, encoder_config.hidden_size))# 使用正态分布初始化查询嵌入query_tokens.data.normal_(mean=0.0, std=encoder_config.initializer_range)return Qformer, query_tokens
  • num_query_token:定义可学习的查询嵌入数量。
  • vision_width:视觉编码器的输出特征维度。
  • cross_attention_freq:在 Transformer 层中插入交叉注意力层的频率,默认每两层插入一次。

此函数返回两个对象:Qformer 和 query_tokens。

总结

BLIP-2 作为一种高效的多模态预训练框架,通过引入 Querying Transformer(Q-Former)实现了视觉编码器与大语言模型之间的有效连接,其整体结构采用“图像编码—查询抽取—语言生成”的三阶段工作流程:图像首先通过冻结的视觉编码器提取特征,再由 Q-Former 结合可学习的查询嵌入与视觉特征进行交叉注意力交互,最终将生成的语言化表示输入至冻结的大语言模型完成任务输出。该设计显著降低了训练成本,同时在多个视觉语言任务中展现出优越的零样本与跨任务泛化能力。尽管 BLIP-2 在模块化设计与效率方面取得突破,其性能仍受到视觉语言对齐质量和语言模型输出可控性的限制。未来研究可聚焦于提升跨模态对齐精度、引入更强的语言理解能力,以及在对话、多轮推理等更复杂场景中的扩展应用。

http://www.xdnf.cn/news/751033.html

相关文章:

  • 介绍一种LDPC码译码器
  • Python 爱心图案代码
  • 计算晶体结构和电子能带的软件
  • 【Python高阶】面向对象
  • C语言-10.字符串
  • 【Day41】
  • 非常有趣的桌面萌宠互动软件
  • 单板机8088C语言计划
  • 前端面经 get和post区别
  • 使用交叉编译工具提示stubs-32.h:7:11: fatal error: gnu/stubs-soft.h: 没有那个文件或目录的解决办法
  • Baklib内容中台革新企业知识实践
  • AI 社交和AI情绪价值的思考
  • 高并发抽奖系统优化方案
  • python训练营day40
  • 共享内存-systemV
  • Python应用for循环遍历寻b
  • homework 2025.03.31 chinese(class 3)
  • DeepSeek R1-0528:深度思考能力的重大跃升与技术突破全解析
  • 一文读懂Automotive SPICE
  • Day41 Python打卡训练营
  • 【HW系列】—Windows日志与Linux日志分析
  • 远程线程注入
  • 【PhysUnits】15.5 引入P1后的标准化表示(standardization.rs)
  • Cesium快速入门到精通系列教程一
  • AtCoder AT_abc408_d [ABC408D] Flip to Gather
  • C++ 变量声明(Declaration)和定义(Definition)的区别
  • 【系统配置与部署类】linux系统下的desktop图标文件配置
  • 如何配置国内docker镜像源?
  • leetcode3128. 直角三角形-medium
  • [VMM]现代 CPU 中用于加速多级页表查找的Page‐Table Entry原理