BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Gen

BLIP模型介绍

发表时间:PMLR 2022

论文链接:https://proceedings.mlr.press/v162/li22n/li22n.pdf

作者单位:Salesforce Research

Motivation:现有的VLP存在的两个问题:(擅长理解或生成任务,次优的监督数据源)

  1. 模型角度:大多数方法只采用基于编码器或编码器-解码器模型。基于编码器的模型不能直接应用于文本生成任务(图像字幕生成,例如CLIP,ALBEF),而编码器-解码器模型不能直接应用于图像-文本检索任务(例如SimVLM)

  2. 数据视角:大多数最先进的方法(如 CLIP、ALBEF、SimVLM)都在从网络收集的图像-文本对上进行预训练。尽管扩大数据集后性能有所提高,但有噪声的网络文本训练只是次优解,因为收集到的图文对中会有很多噪声数据,虽然通过以量取胜,降低噪声带来的影响,但是不可避免这种监督的结果不是最优的。

解决方法:为了克服现有VLP的缺陷,提出了BLIP:(擅长理解和生成任务,能过滤掉噪声字幕)

提出的BLIP:Bootstrapping Language-Image Pre-training(引导语言图像预训练),用于统一视觉语言理解和生成。BLIP 是一个新的 VLP 框架,它可以灵活地应用于视觉语言理解和生成任务。BLIP 通过引导字幕有效地利用了嘈杂的网络数据,字幕生成器生成合成字幕,过滤器去除嘈杂的字幕

主要贡献:

  1. 多模态混合编码器-解码器(MED(Multimodal Encoder-Decoder)):用于有效的多任务预训练和灵活的迁移学习。MED 可以作为单模态encoder、基于image-grounded text encoder或image-grounded text decoder运行。该模型通过三个视觉语言目标进行联合预训练:图像文本对比学习(ITC)、图像文本匹配(ITM)和图像条件语言建模(LM)。

  2. 字幕生成和过滤(CapFilt):一种从噪声图像-文本对中学习的新数据集提升方法。 BLIP将预训练好的 MED(Multimodal Encoder-Decoder) 微调为两个模块:一个是字幕生成器,用于给网络图像生成合成字幕;另一个是过滤器,用于去除原始网络文本和合成文本中的噪声字幕。

实现方式:

  1. 训练过程: 1. 使用带噪声的网络数据训练BLIP 2. 将预训练MED微调为Captioner和Filter两个模块 3. 使用微调后的Captioner对训练数据生成一系列的字幕 4. 把这些生成的字幕和原始网络文本通过预训练的 Filter 过滤,删除噪声文本字幕 5. 最后将过滤后的图像-文本配对与人工标注的配对结合起来,形成一个新的数据集,重新训练一遍BLIP

  2. 模型结构

  • 新模型架构 MED 1. 视觉编码器提取图片特征。第一列,MED采用ViT作为图像编码器,它将输入图像分割成patches,并将其编码为嵌入序列,再加上一个[CLS]标记来表示全局图像特征。 2. 文本编码器提取文本特征。第二列,MED采用BERT作为文本编码器,其中在文本输入的开头附加一个 [CLS] 标记,以总结句子。 3. 视觉文本编码器:Image-grounded text encoder。上图第三列,是MED的视觉文本编码器,其在每个transformer block中的bi-self-attention层(Bi-SA)和 feed forward network(FFN)之间插入一个额外的cross-attention(CA)以注入视觉信息。在输入端,[Encode]标记被附加到文本开头,用[Encode]的输出嵌入作为图像-文本对的多模态表示,该模块主要用于图文匹配的二分类预训练任务。 4. 视觉文本解码器:Image-grounded text decoder:如上图第四列,是MED的视觉文本解码器,用causal self-attention层取代Image-grounded text encoder中的Bi-SA。添加一个额外的 [Decode] token 和结束 token,作为生成结果的起点和终点。该模块主要用于字幕生成预训练任务

  • 预训练目标 BLIP在预训练过程中对三个目标进行了联合优化,其中包括两个基于理解的目标和一个基于生成的目标。 1. 图像-文本对比损失(Image-Text Contrastive Loss,ITC):主要用于ViT和BERT的组合。其目标是使正样本图像-文本对的相似度更大,负样本图像-文本对相似度更低。BLIP沿用了ALBEF的 ITC 损失法,即引入动量编码器来生成特征,并从动量编码器中创建软标签作为训练目标,以考虑负对中潜在的正标签。 2. 图像-文本匹配损失(Image-Text Matching Loss,ITM):主要用于ViT和Image-grounded text encoder的组合。其目标是学习图像-文本多模态表征,捕捉视觉和语言之间的细粒度匹配。ITM 是一个二分类任务,模型使用 ITM 头(线性层)预测图像-文本对的多模态特征是正面(匹配)还是负面(不匹配)。 3. 语言建模损失(Language Modeling Loss,LM): 语言建模损失(LM)主要用于ViT和Image-grounded text dncoder的组合,其目标是生成给定图像的文本描述,以自回归的方式最大化文本的可能性。在计算损失时,BLIP使用了 0.1 的标签平滑。与广泛用于 VLP 的 MLM 损失相比,LM 使模型具有将视觉信息转换为连贯标题的泛化能力。

  • 用于数据集引导的 CapFilt方法

CapFilt这一新方法来提高文本语料库的质量。上图是 CapFilt 的示意图。它引入了两个模块:一个是为网络图片生成标题的字幕器另一个是去除图片-文本对噪声的过滤器字幕器和过滤器都从同一个预训练的 MED 模型初始化,并在 COCO 数据集上分别进行微调

  1. Captioning:字幕器是一个image-grounded text decoder。它以给定图像解码文本为 LM 目标进行微调。给定网络图像Iw,字幕器生成字幕Ts。

  2. Filtering: 过滤器是一个 image-grounded text encoder。它根据 ITC 和 ITM 目标进行微调,以了解文本是否与图像匹配。如果 ITM 头预测文本与图像不匹配,则该文本被视为噪声文本。最后,我们将过滤后的图像-文本配对与人工标注的配对结合起来,形成一个新的数据集,用于预训练一个新的模型。

实验:使用了与ALBEF相同的预训练数据集,共有 1400 万张图片,其中包括两个人类注释数据集(COCO 和 Visual Genome)和三个网络数据集(Conceptual Captions 、Conceptual 12M、SBU captions)。我们还使用了另一个网络数据集 LAION进行了实验,该数据集包含 1.15 亿张图片和更多噪声文本。

结论:因为BLIP有四层架构,所以它可以使用网络架构的不同部分完成不同的任务。如图文检索、字幕生成、视觉问答、自然语言视觉推理、视觉对话和视频语言任务。

Parameter Sharing and Decoupling(参数共享和解耦)

  1. 通过实验证明text endocer和decoder中共享除SA层外的其他参数对模型训练有益: 在预训练过程中,文本编码器和解码器共享除 self-attention层之外的所有参数。我们对采用不同参数共享策略预训练的模型进行了评估,其中预训练是在包含网络文本的 1400 万张图像上进行的。结果表明,与不共享相比,共享除 SA 层以外的所有层会带来更好的性能,同时还能减少模型大小,从而提高训练效率如果共享 SA 层,由于编码任务和解码任务之间的冲突,模型的性能会下降。

  2. 通过实验证明CapFilt中的Captioning和Filtering共享参数会使性能下降: 在 CapFilt 期间,字幕器和过滤器在 COCO 上进行端到端单独微调。我们研究了如果字幕器和过滤器以与预训练相同的方式共享参数的效果。下游任务的性能有所下降,我们将其主要归因于确认偏差。由于共享参数,字幕器产生的噪声字幕被过滤器过滤掉的可能性较小,这一点可以从较低的噪声比(8% 比 25%)看出。

BLIP-2 是一种高效的视觉语言预训练模型,它通过冻结预训练的图像编码器和大语言模型(LLM),在两者之间引入轻量级的适配模块(如 Q-Former),实现跨模态对齐和信息融合。这种方法不仅降低了训练成本,还提升了模型的泛化能力。 在 BLIP-2 的预训练过程中,图像编码器通常采用如 ViT 或 CLIP 中的视觉编码器,这些模型已经具备了强大的图像表示能力。图像编码器的输出作为视觉特征输入到 Q-Former 模块中,该模块负责从高维视觉特征中提取关键信息,并将其对齐到语言模型可理解的语义空间中。Q-Former 本质上是一个轻量级的 Transformer 模型,它通过查询向量(query vectors)从图像特征中提取与当前任务相关的语义信息,并将其传递给大语言模型进行进一步处理[^1]。 大语言模型部分在 BLIP-2 中保持冻结状态,通常采用如 OPT 或 BLOOM 等开源模型。这种设计使得 BLIP-2 能够直接利用 LLM 的强大语言生成能力,而无需从头训练语言模型。在训练过程中,BLIP-2 通常采用两阶段训练策略:第一阶段专注于图像-文本对的跨模态对齐,例如通过对比学习或掩码语言建模任务;第二阶段则侧重于下游任务的微调,如图像描述生成、视觉问答(VQA)等,以提升模型在具体任务上的性能。 为了实现 BLIP-2 的训练,可以使用 Hugging Face 的 Transformers 库结合自定义模块进行搭建。以下是一个简化的训练流程示例代码: ```python from transformers import Blip2Processor, Blip2ForConditionalGeneration from PIL import Image import requests # 加载 BLIP-2 模型和处理器 processor = Blip2Processor.from_pretrained("Salesforce/blip2-opt-2.7b") model = Blip2ForConditionalGeneration.from_pretrained( "Salesforce/blip2-opt-2.7b", load_in_8bit=True, device_map="auto" ) # 准备图像和文本输入 url = "https://www.example.com/image.jpg" image = Image.open(requests.get(url, stream=True).raw) text = "a photography of" # 对输入进行编码 inputs = processor(image, text, return_tensors="pt").to(model.device) # 生成描述 generated_ids = model.generate(**inputs) generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0].strip() print(generated_text) ``` 在实际训练中,BLIP-2 的图像编码器和大语言模型均保持冻结状态,仅训练 Q-Former 模块。训练过程中,通常使用大规模的图文对数据集(如 COCO、Conceptual Captions 等)来优化 Q-Former 的参数,使其能够更有效地桥接视觉和语言模态。此外,BLIP-2 还支持多任务学习框架,允许在训练过程中同时优化多个视觉语言任务,从而进一步提升模型的泛化能力。 在模型评估方面,BLIP-2 可以应用于多个视觉语言任务,包括但不限于图像描述生成、视觉问答(VQA)、图像文本检索等。由于其高效的架构设计和出色的性能表现,BLIP-2 成为了当前视觉语言预训练领域的重要研究方向之一。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KKdlg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值