BLIP2论文阅读

介绍

Salesforce在2023年提出 BLIP-2,正文8页。BLIP论文阅读
本文参考:
BLIP-2:多模态大模型的预训练策略
一文读懂BLIP和BLIP-2多模态预训练

分析BLIP和BLIP2:
/

  • BLIP着眼于之前的多模态模型只能处理单一任务及网络数据噪声问题。
  • BLIP2着眼于预训练模型成本的昂贵,利用冻结模型,着重训练对齐模块。
  • 都采用了多任务学习,三个训练目标一起优化模型。都利用了模型架构共享参数的特点。都利用了冻结的图像编码器。
  • BLIP没有利用一个已有的LLM,而是从头训练右边3个文本编/解码器,文本编/解码器共享除自注意力(SA)层之外的所有参数。BLIP结构有左右两边,左边图像特征提取器与右边文本编码器直接通过交叉注意力进行交互,并通过三个任务训练这两个。
  • BLIP2则利用了冻结的LLM,并在图像编码器和LLM之间建立QFormer模块,着重训练这个QFormer模块。QFormer模块也有左右两边,其中左边学习Query嵌入,这个可学习的Query嵌入作为视觉编码与文本编码的桥梁,Query嵌入与视觉编码交叉注意力交互后,再通过自注意力层与右边的文本编码器交互。为啥自注意力层可以让QFormer与文本编码交互?因为两边的自注意力层是共享参数的,Q和T是拼接一起输入自注意力层的,这个自注意力层通过不同的掩码方法,实现三种任务所需的不同编码方法切换。

摘要

大模型的端到端训练成本越来越高,视觉语言预训练模型的成本变得日益昂贵。本文提出了BLIP-2,一种通用且高效的预训练策略,通过冻结已有的预训练图像编码器和语言模型来增强视觉-语言预训练。引入一个轻量级的Querying Transformer模块进行模态对齐,分两个阶段对该模块进行预训练。第一阶段从冻结的图像编码器中学习视觉语言表示,第二阶段从冻结的语言模型中学习基于视觉的语言生成。
BLIP-2的可训练参数数量显著少于现有方法,但在各种视觉-语言任务上仍达到了最先进的性能。在零样本VQAv2任务上比Flamingo80B高出8.7%,且可训练参数数量减少了54倍。同时具备在零样本图像到文本生成能力,并遵循自然语言指令。

引言

视觉-语言预训练(VLP)研究在过去几年中取得了快速进展,其中预训练模型的规模越来越大,不断提升各种下游任务的表现。但是这些大模型预训练起来很贵。视觉-语言研究结合了视觉和语言两个领域,所以希望能利用这两个领域已有的单模态模型。

这篇文章提出一种通用且计算高效的视觉语言预训练方法,利用已经训练好的图像和语言模型。预训练的视觉模型提供了高质量的视觉表示,而预训练的语言模型(LLMs)则提供了强大的语言生成和零样本迁移能力。为了降低计算成本并应对灾难性遗忘问题,在预训练过程中,单模态的预训练模型保持冻结状态。

为了利用预训练的单模态模型进行视觉语言模型训练,需要让它们能够同时理解图像和文本之间的关系(即模态对齐)。但大语言模型之前只见过文本没见过图像,直接冻结它们的参数使得视觉语言对齐变得很难。现有的方法通过让模型生成与图像相关的文本(Frozen、Flamingo)来解决这个问题,但作者认为这种方法无法真正让模型理解图像和文本之间的联系。

为了实现与冻结单模态模型的有效视觉-语言对齐,我们提出了一种查询变换器(QFormer),该变换器采用了一种新的两阶段预训练策略进行预训练。如图1所示,Q-Former是一种轻量级变换器,它使用一组可学习的查询向量从冻结的图像编码器中提取视觉特征。它充当冻结图像编码器和冻结LLM之间的信息瓶颈,将最有用的信息传递给LLM输出。在第一个预训练阶段进行视觉语言表示学习,让QFormer学会如何从图像编码中提取与文字描述最相关的信息。在第二阶段进行视觉语言生成学习,训练Q-Former,使其输出的视觉表示能够被LLM理解,根据这些图像信息生成文字。

BLIP2的亮点:
1.利用QFormer模块和两阶段预训练有效模态对齐
2.冻结的单模态模型和轻量对齐模块使得预训练高效。
3. 模型效果好,具备零样本能力,指令遵循能力。

在这里插入图片描述

相关工作

端到端视觉语言预训练

进行视觉语言预训练的目的是学习一个多模态基础模型,用于有效处理各种下游的视觉语言任务。
根据下游任务的不同,已有工作提出了不同的模型架构,如双编码器(CLIP)、融合编码器(ALBEF)、编-解码器(Simvlm、Pali)以及最近提出的统一Transformer架构(BLIP)。
各种预训练目标也被提出,一些少数经过时间验证的目标如下:图像-文本对比学习(CLIP;FLIP;ALBEF;BLIP)、图像-文本匹配(ALBEF;BLIP;Vlmo)以及(掩码)语言建模(ALBEF;BLIP;Coca)
多数端到端的预训练方法使用大规模图文对数据集。随着模型规模增大,训练花费很高。并且端到端方法也无法灵活利用已有的单模态模型如LLM。

模块化视觉语言预训练

与本工作更相关的是利用现成的预训练模型并在VLP期间保持其冻结的方法。一些方法冻结了图像编码器,包括早期采用冻结目标检测器提取视觉特征的工作(Oscar),以及最近的LiT使用冻结的预训练图像编码器进行CLIP预训练。一些方法冻结了语言模型,以利用LLMs的知识进行视觉到语言的生成任务(Frozen;Flamingo;VisualGPT;Plug-and-play VQA)。使用冻结的LLM的关键挑战是将视觉特征与文本空间对齐。为了实现这一点,Frozen微调了图像编码器,其输出直接作为LLM的软提示。Flamingo在LLM中插入了新的交叉注意力层以注入视觉特征,并在数十亿个图像-文本对上预训练这些新层。这两种方法都采用了语言建模损失,其中语言模型根据图像生成文本。
BLIP-2则是一种更高效的方法,能够同时利用冻结的图像编码器和语言模型,在多种视觉-语言任务中表现更好,同时计算成本更低。

方法

概述BLIP2:利用冻结的预训练单模态模型进行视觉语言模型的预训练。提出QFormer模块进行模态对齐,2阶段预训练:一阶段在冻结的视觉模型基础上学习多模态表示,二阶段在冻结的语言模型基础上学习视觉语言生成。

模型架构

在这里插入图片描述
BLIP-2 由预训练的Image Encoder,预训练的Large Language Model,和一个可学习的 Q-Former 组成。Q-Former 从图像编码器中提取固定数量的输出特征,与输入图像的分辨率无关。如图2所示,Q-Former由两个Transformer子模块组成,这俩模块共享自注意力层:
(1) 一个与冻结的图像编码器交互的图像Transformer,用于提取视觉特征。
(2) 一个既能作为文本编码器又能作为文本解码器的文本Transformer。
图像Transformer的输入是一组固定数量的可学习查询嵌入。这些查询通过自注意力层相互交互,并通过交叉注意力层与冻结的图像特征交互(每隔一个Transformer块交互一次)。查询还可以通过共享的自注意力层与文本交互。根据预训练任务的不同采用不同的自注意力掩码机制来控制查询与文本的交互。(图2右边)

视觉语言表示学习

在表示学习阶段,目标是训练Q-Former使得输入的查询能够学会提取对文本最具信息量的视觉表示。将Q-Former连接到一个冻结的图像编码器,并使用图文对数据对Q-Former预训练。
与BLIP一样联合优化三个预训练目标,这些目标共享相同的输入格式和模型参数。每个优化目标采用不同的注意力掩码机制来控制查询与文本的交互(图2右边)。
在这里插入图片描述

三个优化目标中QFormer模块的输入都是(Q,Image_embed,Text_embed) Q和T是拼接一起输入QFormer的自注意力层的。
在ITC任务中,[Q,T]输入自注意力层,因为单模态掩码,就相当于首先Q通过左边自注意力层,Text_embed通过右边自注意力层,两个不相关。然后Q通过交叉注意力层与Image_embed交互。然后Q和Text_embed分别通过FFW。经过多层后,Q和T计算相似度然后计算损失然后更新左右两边的参数。(诶,怎么对比损失呢。Q是所有样本共享的一个还是,每个样本一个?)
在ITG任务中,[Q,T]输入自注意力层,但是有因果掩码矩阵。然后得到的[Q’,T’],Q’还是那个只与视觉信息交互了的Q,Q不会关注任何T。而T’是关注过Q’的,就相当于间接与视觉信息交互了。然后T’利用语言建模损失进行参数更新。(诶,为啥这里不让Q关注T呢?是因为这个任务里面的T都是不完整的T吗)
在ITM任务中,[Q,T]输入自注意力层,没有掩码,相互交互,Q’即携带了文本信息。Q’再经过交叉注意力层,又捕捉了与文本最相关的视觉信息,Q’变成多模态向量。用图文匹配二分类任务来优化Q’及所有层的参数。

哪个任务先训练呢?
Q是怎么可学习的,如何改变Q的值。按照梯度反向传播,Q’=Q-nΔQ,ΔQ是啥呢。

图文对比学习ITC: 学习对齐图像表示和文本表示,以最大化它们的互信息。将图像Transformer输出的查询表示Z与文本Transformer输出的文本表示t对齐,其中t是[CLS]标记的输出嵌入。由于Z包含多个输出嵌入(每个查询一个),选择最高的一个作为图像-文本相似性。为了避免信息泄露,采用单模态自注意力掩码,即查询和文本不允许相互看到。

基于图像的文本生成ITG:训练Q-Former给定输入图像作为条件生成文本。由于Q-Former的架构不允许冻结的图像编码器与文本Token直接交互,生成文本所需的信息必须先由查询提取,然后通过自注意力层传递给文本Token。ITG采用多模态因果自注意力掩码来控制查询-文本交互,查询之间可以相互注意,但不能注意文本Token。每个文本token可以关注所有查询及其之前的文本token。并将 [CLS] 标记替换为新的 [DEC] 标记,作为第一个文本标记来指示解码任务。

图文匹配ITM: 学习图像和文本表示之间的细粒度对齐。是一个二分类任务。使用双向自注意力机制,其中所有查询和文本可以相互关注。因此输出的查询嵌入Z捕捉了多模态信息。将每个输出查询嵌入输入到一个二分类线性分类器中获得一个logit,并将所有查询的logit平均作为输出匹配分数。采用了ALBEF和BLIP的硬负样本挖掘策略来创建负样本对。

视觉语言生成学习

在这里插入图片描述
在生成预训练阶段,将QFormer连接到一个冻结的LLM,以利用LLM的生成语言能力。使用全连接层将输出的查询嵌入Z线性投影到与LLM的文本嵌入相同的维度。投影后的查询嵌入随后被添加到输入文本嵌入的前面。它们作为软视觉提示,将LLM条件化于Q-Former提取的视觉表示。由于Q-Former已经预训练用于提取语言信息丰富的视觉表示,它有效地充当了一个信息瓶颈,向LLM提供最有用的信息,同时去除不相关的视觉信息,减轻LLM学习视觉-语言对齐的负担,从而缓解灾难性遗忘问题。

作者实验了两种类型的LLM:基于解码器的LLM和基于编码器-解码器的LLM。前者使用语言建模损失进行预训练,使用冻结的LLM根据Q-Former的视觉表示生成文本。后者使用前缀语言建模损失进行预训练,将文本分成两部分,前缀文本与视觉表示连接作为LLM编码器的输入,后缀文本用作LLM解码器的生成目标。

模型预训练

预训练数据

与BLIP相同的预训练数据集,总计包含1.29亿张图像,包括COCO、Visual Genome、CC3M、CC12M、SBU以及来自LAION400M数据集的1.15亿张图像。
采用CapFilt方法为网络图像生成合成描述。使用BLIPlarge描述生成模型生成10个描述,并根据CLIP ViT-L/14模型生成的图像-文本相似度对合成描述和原始网络描述进行排序。每张图片保留前两个描述作为训练数据,并在每次预训练步骤中随机抽取一个。

预训练的图像编码器和LLM

图像编码器:来自CLIP的ViT-L/14和来自EVA-CLIP的ViT-g/14。移除了ViT的最后一层,使用倒数第二层的输出特征,略微提高了性能。
语言模型:无监督训练的OPT模型家族用于基于解码器的LLM;指令训练的FlanT5模型家族用于基于编码器-解码器的LLMs。

预训练设置

一阶段

steps=250k
batch=2320/1680 for ViT-L/ViT-g
optim=AdamW,β1 = 0.9,β2 = 0.98,weight decay=0.05
lr=1e-4,余弦学习率衰减,线性预热2k步
image_size=224*224
二阶段:
steps=80k
lr=5e-5

预训练期间,冻结的ViTs和LLMs的参数数据类型为FP16,除了FlanT5使用BF16。
使用单台16-A100(40G)机器,最大的模型ViT-g和FlanT5-XXL第一阶段训练不到6天,二阶段不到3天。

实验 (BLIP SimVLM BEIT-3 Flamingo)

BLIP-2在各种零样本视觉语言任务上的表现。
在这里插入图片描述

零样本指令遵循的基于图像生成文本(VQA)

BLIP-2 让大语言模型能够理解图像,同时保留其遵循文本提示的能力。我们可以通过输入图片和文字提示来让 AI 生成我们想要的文字内容。图 4 展示了广泛的零样本图像到文本生成能力的示例,包括视觉知识推理、视觉常识推理、视觉对话、个性化图像到文本生成等。
在这里插入图片描述

零样本视觉问答(FewVLM Frozen VLKD Flamingo)

在这里插入图片描述

在零样本视觉问答任务上进行了定量评估。对于OPT模型使用提示“问题:{} 答案:”。对于FlanT5模型,使用提示“问题:{} 简短答案:”。生成时使用beam search, beam=5。长度惩罚设置为-1,以鼓励生成更短的答案,这些答案更符合人类标注。如表2所示,BLIP-2在VQAv2和GQA数据集上取得了最先进的结果。BLIP-2的可训练参数比Flamingo80B少54倍,但在VQAv2上表现优于Flamingo80B 8.7%。在OK-VQA数据集上,BLIP-2仅次于Flamingo80B。作者推测是因为OK-VQA更侧重于开放世界知识而非视觉理解,而Flamingo80B中的70B Chinchilla语言模型比11B FlanT5XXL拥有更多的知识。
从表2中得出了一个好的观察结果:更强的图像编码器或更强的LLM都能带来更好的性能。原因:(1)ViT-g在OPT和FlanT5上都优于ViT-L。(2)在同一LLM家族中,更大的模型优于较小的模型。(3)FlanT5,一种经过指令调优的LLM,在VQA上优于未经监督训练的OPT。这一观察验证了BLIP-2作为一种通用的视觉-语言预训练方法,能够有效利用视觉和自然语言社区的快速进展。

视觉-语言表示学习的效果

第一阶段的表示学习预训练QFormer以学习与文本相关的视觉特征,这减轻了LLM学习视觉-语言对齐的负担。如果没有表示学习阶段,QFormer仅依赖于视觉到语言的生成学习来弥合模态差距,这与Flamingo中的Perceiver Resampler类似。图5展示了表示学习对生成学习的影响。在没有表示学习的情况下,两种类型的LLM在零样本VQA任务中的表现都显著降低。特别是OPT,由于灾难性遗忘,随着训练的进行性能急剧下降。
在这里插入图片描述

图像描述生成 (OSCAR VinVL BLIP OFA Flamingo SimVLM)

在这里插入图片描述
对BLIP-2模型在图像描述任务上进行微调。使用’a photo of’作为初始输入提示给LLM,并通过语言建模损失训练模型生成描述。微调过程中保持LLM冻结,并更新Q-Former和图像编码器的参数。在COCO数据集上进行微调,并在COCO测试集和NoCaps验证集上进行零样本迁移评估。

4.3 视觉问答(ALBEF BLIP OFA Flamingo VinVL SimVLM CoCa BEIT-3)

在这里插入图片描述

给定标注的VQA数据,保持LLM冻结微调Q-Former和图像编码器的参数。微调数据包括VQAv2的训练和验证集,以及Visual Genome的训练样本。使用开放式答案生成损失进行微调,其中LLM接收Q-Former的输出和问题作为输入,并被要求生成答案。为了提取与问题更相关的图像特征,我们还在Q-Former上对问题进行条件化。具体来说,问题标记被作为输入提供给Q-Former,并通过自注意力层与查询进行交互,这可以引导Q-Former的交叉注意力层聚焦于更具信息量的图像区域。

4.4. 图文检索 (CLIP ALIGN FILIP Florence BEIT-3 UNITER OSCAR VinVL ALBEF BLIP )

在这里插入图片描述
由于图文检索不涉及语言生成,直接对第一阶段预训练的模型进行微调,而不使用大语言模型。使用ViT-L和ViT-g作为图像编码器,在COCO数据集上对图像编码器和Q-Former进行微调,使用与预训练相同的目标(即ITC、ITM和ITG)。然后在COCO和Flickr30K数据集上评估模型在图像到文本检索和文本到图像检索中的表现。推理过程中遵循ALBEF和BLIP的方法,首先基于图像-文本特征相似性选择k=128个候选,然后基于成对ITM分数进行重新排序。
结果如表5所示。BLIP-2在零样本图文检索中实现了最先进的性能,相较于现有方法有显著提升。
ITC和ITM损失对于图文检索至关重要,因为它们直接学习图像-文本的相似性。表6展示了ITG损失对图文检索也有益处。这一结果支持了我们在设计表示学习目标时的直觉:ITG损失迫使查询提取与文本最相关的视觉特征,从而改善了视觉-语言的对齐。
在这里插入图片描述

5. 局限性

LLMs能够在给定少量示例的情况下进行上下文学习。然而BLIP-2的实验中发现,当为LLM提供上下文VQA示例时,VQA性能并未得到提升。作者将缺乏上下文学习能力的原因归咎于预训练数据集,数据集每个样本仅包含一对图像-文本对。LLMs无法从中学习到单个序列中多个图像-文本对之间的相关性。Flamingo论文中也报告了类似的观察结果,该论文使用了一个闭源的交替图像和文本数据集(M3W),每个序列包含多个图像-文本对。作者计划在未来的工作中创建一个类似的数据集。

BLIP-2的图像到文本生成可能会出现不理想的结果,原因包括LLM的知识不准确、激活了错误的推理路径,或者没有关于新图像内容的最新信息。由于使用了冻结模型,BLIP-2继承了LLMs的风险,例如输出冒犯性语言、传播社会偏见或泄露私人信息。补救方法包括使用指令来指导模型的生成,或在去除有害内容的过滤数据集上进行训练。

<think>好的,用户的问题是关于在IT环境中了解和参与BLIP相关的实验。首先,我需要明确BLIP在IT领域的应用场景,可能涉及自然语言处理和计算机视觉的结合,比如图像描述、视觉问答等。根据用户提供的引用,特别是引用[3],BLIP-2使用了冻结的图像编码器和大型语言模型,因此实验可能涉及这两个模块的协同工作。 接下来,我需要考虑用户可能的背景。他们可能是研究人员或开发者,想要在自己的IT项目中应用BLIP模型,比如开发智能客服、内容审核工具或增强数据注释流程。需要分步骤指导他们如何参与实验,包括环境配置、数据准备、模型使用和结果分析。 同时,用户可能关心如何获取相关资源,比如预训练模型和数据集,以及如何调整模型以适应特定任务。需要确保提到的步骤具体可行,并引用提供的资料,比如引用[3]中的方法,以及引用[1]和[2]中提到的性能分析和实验设计注意事项。 另外,用户可能对实际应用场景感兴趣,需列举几个典型的IT用例,如智能文档处理、自动化测试中的图像识别等,并建议参考相关文献和社区资源。需要确保回答结构清晰,逐步引导用户从准备到实施实验,同时提醒他们注意模型优化和结果验证的重要性。 最后,生成的相关问题要围绕BLIP的技术细节、优化方法和应用扩展,帮助用户进一步探索。需要检查是否符合格式要求,如数学表达式的正确使用,引用标识的正确添加,以及代码块的正确呈现(如果有的话)。确保回答用中文,语言自然,避免使用Markdown格式。</think>### BLIP实验在IT领域的应用与参与方式 BLIP(Bootstrapping Language-Image Pre-training)是一种结合语言与图像预训练的模型,在IT领域的实验中主要用于多模态任务(例如图像描述生成、视觉问答、跨模态检索等)。以下是参与BLIP相关实验的关键步骤和场景: #### 1. **实验目标与场景** - **图像-文本对齐**:通过BLIP模型验证图像内容与文本描述的一致性,例如在智能客服中自动生成产品图片的说明[^3]。 - **跨模态检索**:在IT系统中实现基于文本查询图像或基于图像搜索文本的功能,例如企业内部知识库的增强搜索。 - **数据增强**:利用BLIP生成合成数据,缓解特定领域(如医学影像)标注数据不足的问题。 #### 2. **实验准备** - **环境配置**: - 安装深度学习框架(如PyTorch),并下载BLIP-2的预训练模型[^3]。 - 配置GPU资源以支持大规模多模态计算。 - **数据集选择**: - 公开数据集:COCO、Flickr30k(图像-文本对)。 - 自定义数据:需整理成`(图像路径, 文本描述)`的格式。 #### 3. **实验实施示例** 以下是一个简化的图像描述生成实验代码框架: ```python from transformers import Blip2Processor, Blip2ForConditionalGeneration import requests from PIL import Image # 加载预训练模型与处理器 processor = Blip2Processor.from_pretrained("Salesforce/blip2-opt-2.7b") model = Blip2ForConditionalGeneration.from_pretrained("Salesforce/blip2-opt-2.7b") # 输入图像与生成描述 image_url = "https://example.com/image.jpg" image = Image.open(requests.get(image_url, stream=True).raw) inputs = processor(images=image, return_tensors="pt") generated_ids = model.generate(**inputs) description = processor.batch_decode(generated_ids, skip_special_tokens=True)[0] print(f"生成描述: {description}") ``` #### 4. **结果分析与优化** - **评估指标**:使用BLEU、CIDEr等衡量生成文本与真实标注的相似性[^1]。 - **模型微调**:在特定领域数据上进一步训练,例如调整IT设备故障诊断的视觉问答任务。 - **性能优化**:通过量化、剪枝等技术减少模型推理时间,适应边缘计算场景[^2]。 #### 5. **典型IT应用场景** - **智能文档处理**:从技术图表中提取信息并生成报告。 - **自动化测试**:结合UI截图生成测试用例描述。 - **内容审核**:识别违规图片并自动生成审核理由。 #### 6. **参与资源** - 论文与代码库:BLIP-2官方GitHub仓库及论文。 - 社区支持:Hugging Face社区提供模型和示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值