BLIP
论文名称:BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation (ICML 2022)
论文地址:https://arxiv.org/pdf/2201.12086.pdf
代码地址:https://github.com/salesforce/BLIP
官方解读博客:https://blog.salesforceairesearch.com/blip-bootstrapping-language-image-pretraining/
背景和动机
视觉语言训练 (Vision-Language Pre-training, VLP) 最近在各种多模态下游任务上取得了巨大的成功。然而,现有方法有两个主要限制:
- 模型层面:大多数现有的预训练模型仅在基于理解的任务或者基于生成的任务方面表现出色,很少有可以兼顾的模型。比如,基于编码器的模型,像 CLIP,ALBEF 不能直接转移到文本生成任务 (比如图像字幕),而基于编码器-解码器的模型,像 SimVLM 不能直接用于图像文本检索任务。
- 数据层面:大多数现有的预训练模型为了提高性能,使用从网络收集的嘈杂图像-文本对扩展数据集。这样虽然提高了性能,但是很明显这个带噪声的监督信号肯定不是最优的。
本文提出了 BLIP:Bootstrapping LanguageImage Pre-training,用于统一的视觉语言理解和生成。BLIP 是一种新的 VLP 框架,与现有的方法相比,它可以实现更广泛的下游任务。它分别从模型和数据的角度引入了两个贡献:
- BLIP 提出了一种编码器-解码器混合架构 (Multimodal mixture of Encoder-Decoder, MED),MED 的特点是很灵活,它既可以作为单模态的编码器,又可以作为基于图像的文本编码器,或者基于图像的文本解码器。BLIP 由三个视觉语言目标联合训练:图像文本的对比学习、图像文本匹配和图像条件语言建模。
- BLIP 提出了一种高效率利用噪声网络数据的方法。即先使用嘈杂数据训练一遍 BLIP,再使用 BLIP 的生成功能生成一系列通过预训练的 Captioner 生成一系列的字幕,再把这些生成的字幕通过预训练的 Filter 过滤一遍,从原始网络文本和合成文本中删除嘈杂的字幕,得到干净的数据。最后再使用干净的数据训练一遍 BLIP。
模型架构 MED
如下图1所示是 BLIP 的模型架构 MED,看上去稍微有点复杂,一块一块拆开看。

- 1 视觉编码器:提取图片特征
上图最左边的是视觉编码器,就是 ViT 的架构。将输入图像分割成一个个的 Patch 并将它们编码为一系列 Image Embedding,并使用额外的 [CLS] token 来表示全局的图像特征。视觉编码器不采用之前的基于目标检测器的形式,因为 ViLT 和 SimVLM 等工作已经证明了 ViT 计算更加友好。 - 2 文本编码器:提取文本特征
上图第2列的是文本编码器,就是 BERT 的架构,其中[CLS]token 附加到文本输入的开头以总结句子。作用是提取文本特征做对比学习。 - 3 视觉文本编码器:
上图第3列的是视觉文本编码器,使用 Cross-Attention,作用是根据 ViT 给的图片特征和文本输入做二分类,所以使用的是编码器,且注意力部分是双向的 Self-Attention。添加一个额外的[Encode]token,作为图像文本的联合表征。 - 4 视觉文本解码器:
上图第4列的是视觉文本解码器,使用 Cross-Attention,作用是根据 ViT 给的图片特征和文本输入做文本生成的任务,所以使用的是解码器,且注意力部分是 Casual-Attention,目标是预测下一个 token。添加一个额外的[Decode]token 和结束 token,作为生成结果的起点和终点。
一个需要注意的点是:相同颜色的部分是参数共享的,即视觉文本编码器和视觉文本解码器共享除 Self-Attention 层之外的所有参数。每个 image-text 在输入时,image 部分只需要过一个 ViT 模型,text 部分需要过3次文本模型。
预训练目标
BLIP 在预训练期间联合优化了3个目标,有两个理解任务的目标函数和一个生成任务的目标函数。
- 对比学习目标函数 (Image-Text Contrastive Loss, ITC)
ITC 作用于1 视觉编码器 和 2 文本编码器,目标是对齐视觉和文本的特征空间。方法是使得正样本图文对的相似性更大,负样本图文对的相似性更低,在 ALBEF 里面也有使用到。作者在这里依然使用了 ALBEF 中的动量编码器,它的目的是产生一些伪标签,辅助模型的训练。
- 图文匹配目标函数 (Image-Text Matching Loss, ITM)
ITM 作用于1 视觉编码器 和 3 视觉文本编码器,目标是学习图像文本的联合表征,以捕获视觉和语言之间的细粒度对齐。ITM 是一个二分类任务,使用一个分类头来预测图像文本对是正样本还是负样本。作者在这里依然使用了 ALBEF 中的 hard negative mining 技术。
- 语言模型目标函数 (Language Modeling Loss, LM)
BLIP 包含解码器,用于生成任务。既然有这个任务需求,那就意味着需要一个针对于生成任务的语言模型目标函数。LM 作用于1 视觉编码器 和 4 视觉文本编码器,目标是根据给定的图像以自回归方式来生成关于文本的描述。与 VLP 中广泛使用的 MLM 损失 (完形填空) 相比,LM 使模型能够将视觉信息转换为连贯的字幕。
高效率利用噪声网络数据的方法:CapFilt
高质量的人工注释图像-文本对 \({(𝐼_ℎ,𝑇_ℎ)} \)(例如,COCO) 因为成本高昂所以数量不多。最近的工作 ALBEF,SimVLM 利用从网络自动收集的大量替代的图文对\( {(𝐼_𝑤,𝑇_𝑤)} \)。但是,这些网络的替代数据集通常不会准确地描述图像的视觉内容,质量相对嘈杂,带噪声的监督信号肯定不是最优的。
BLIP 这里提出了一种高效率利用噪声网络数据的方法:Captioning and Filtering,CapFilt。

CapFilt 方法如上图所示。它包含两个模块:
字幕器 Captioner:给一张网络图片,生成字幕。它是一个视觉文本解码器,在 COCO 数据集上使用 LM 目标函数微调。给定网络图片 \(𝐼_𝑤\) ,Captioner 生成字幕 \(𝑇_𝑠 \)。
过滤器 Filter:过滤掉噪声图文对。它是一个视觉文本编码器,看文本是否与图像匹配,在 COCO 数据集上使用 ITC 和 ITM 目标函数微调。Filter 删除原始 Web 文本 \(𝑇_𝑤 \)和合成文本 \(𝑇_𝑠 \)中的嘈杂文本,如果 ITM 头将其预测为与图像不匹配,则认为文本有噪声。
最后,将过滤后的图像-文本对与人工注释对相结合,形成一个新的数据集,作者用它来预训练一个新的模型。
实验
实验设置
BLIP 在两个 16-GPU 节点上面做预训练,视觉编码器以 ImageNet-1K 上预训练的 ViT 权重初始化,文本编码器以 BERT-Base 的权重初始化。使用 2880 的 Batch Size 训练 20 Epochs。
预训练数据集和 ALBEF 一样:
使用下面4个数据集,图片数加起来大概是 4M。
- Conceptual Captions
- SBU Captions
- COCO
- Visual Genome
还引入了噪声更大的 Conceptual 12M 数据集,最终将图像总数增加到 14.1M (有的数据集失效了)。
作者还尝试了一个额外的 web 数据集 LAION ,该数据集包含 115M 图像,具有更多的噪声文本。
实验结果
如下图3所示,作者比较了在不同数据集上预训练的模型,是一个 CapFilt 的消融实验结果。Retrieval 代表检索任务的结果,Caption 代表生成任务的结果。
当使用 14M 的数据集设置时,联合使用字幕器 Captioner 和过滤器 Filter 可以观察到性能改进,而且它们的效果相互互补,证明了 CapFilt 方法能够从嘈杂的原始数据中提炼出有用的数据。
当使用更大的数据集 129M 的设置或者更大的模型 ViT-L 时,CapFilt 可以进一步提高性能,这验证了它在数据大小和模型大小方面的可扩展性。而且,仅仅增加字幕器和过滤器的模型尺寸时,也可以提高性能。

下图中,作者展示了一些示例的字幕与对应的图片。 𝑇𝑤 是直接从网络上爬取的原始字幕, 𝑇𝑠 是字幕器生成的字幕。图4中的红色文本是 Filter 删除的文本,绿色文本是 Filter 保留下来的文本。可以看出几张图片里面,红色的文本不是不好,只是没有绿色的文本对图片的描述更加贴切。这个结果说明了 CapFilt 方法确实是能够提升图文对数据集的质量。

各个下游任务 BLIP 与其他 VLP 模型的对比
检索任务实验结果
如下图5所示是检索任务实验结果,作者做了两个数据集 COCO 和 Flickr30K。与现有方法相比,BLIP 实现了显着的性能提升。使用相同的 14M 预训练图像,BLIP 在 COCO 上的平均召回率 R@1 上比之前的最佳模型 ALBEF 高出 +2.7%。作者还通过将在 COCO 上微调的模型直接迁移到 Flickr30K 来做 Zero-Shot Retrieval。结果如图6所示,其中 BLIP 的性能也大大优于现有的方法。


图片字幕实验结果
如下图所示是图片字幕任务实验结果,作者做了两个数据集 NoCaps 和 COCO,两者都使用在 COCO 上微调的模型和 LM 损失进行评估。作者遵循 SimVLM 的做法在每个字幕的开头添加了一个提示 "a picture of",发现这样使得结果更好了。使用了 14M 预训练图像的 BLIP 大大优于使用相似数量预训练数据的方法。使用了 129M 图像的 BLIP 实现了与使用了 200M 的 LEMON 相比具有竞争力的性能。值得注意的是,LEMON 需要很耗费计算量的预训练的目标检测器和更高分辨率 (\(800×1333\)) 的输入图像,导致推理时间比使用低分辨率 (\(384×384\)) 输入图像的无检测器 BLIP 慢得多。

视觉问答 (Visual Question Answering, VQA) 实验结果
VQA 要求模型预测给定图像和问题的答案。BLIP 没有将 VQA 制定为多答案分类任务,而是按照 ALBEF 的做法把 VQA 视为一种答案生成的任务。结构如下图8所示,在微调过程中,作者重新排列预训练模型,把视觉编码器的输出塞进文本编码器,这样图像和问题就编码为了多模态嵌入,再把这个表征输入文本解码器获得答案。VQA 模型使用真实答案作为目标使用 LM 损失进行微调。

结果如下图所示,使用 14M 图像,BLIP 在测试集上优于 ALBEF 1.64%。

自然语言视觉推理 (Natural Language Visual Reasoning, NLVR2) 实验结果
自然语言视觉推理任务要求模型预测一个句子是否描述了一对图像,是个二分类任务。为了能对两对图像进行推理,作者对预训练模型进行了简单的修改,如下图所示。首先两个图片通过视觉编码器得到视觉特征,再分别通过两个交叉注意力来处理两个输入图片,并且把它们的输出合并起来送入 FFN 中。这两个 Cross-Attention 层是从相同的预训练权重初始化的。通过 [Encode] token 的过了 MLP 的输出完成二分类任务。

实验结果如下图11所示,BLIP 优于所有现有方法,除了 ALBEF 执行定制预训练的额外步骤。但是有趣的是,NLVR2 的性能并没有从额外的网络图像中受益太多,这可能是由于网络数据和下游数据之间的域差距。

视觉对话 (Visual Dialog, VisDial) 实验结果
视觉对话任务在自然会话设置中扩展了 VQA,其中模型不仅需要基于图像-问题对预测答案,还需要考虑对话历史和图像的字幕。作者对预训练模型进行了修改,如下图所示。图片先经过 Image Encoder 得到视觉表征,Caption Encoder 的输入是字幕和 [Encode] token,并通过交叉注意力建模它们。Dialog Encoder 的输入是 [Encode] token,问题 QA 和对话历史。使用 ITM 损失进行二分类式的训练,以区分问题的答案是真还是假。

实验结果如下图所示,BLIP 在 VisDial v1.0 验证集上实现了最先进的性能。

BLIP-2
BLIP-2 是一种多模态 Transformer 模型,主要针对以往的视觉-语言预训练 (Vision-Language Pre-training, VLP) 模型端到端训练导致计算代价过高的问题。
所以,如果能够使用预训练好的视觉模型和语言模型,我把参数冻结,应该能够节约不少的计算代价。
BLIP-2 就是这样,这个工作提出了一种借助现成的冻结参数的预训练视觉模型和大型语言模型的,高效的视觉语言预训练方法。
但是,简单的冻结预训练好的视觉模型的参数或者语言模型的参数会带来一个问题:就是视觉特征的空间和文本特征的空间,它不容易对齐。那么为了解决这个问题,BLIP-2 提出了一个轻量级的 Querying Transformer,该 Transformer 分两个阶段进行预训练。第一阶段从冻结的视觉编码器中引导多模态学习,第二阶段从冻结的文本编码器中引导多模态学习。
经过这样的流程,BLIP-2 在各种视觉语言任务上实现了最先进的性能,同时需要训练的参数也大大减少。
论文名称:BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models
论文地址:https://arxiv.org/pdf/2301.12597
代码地址:https://github.com/salesforce/LAVIS/tree/main/projects/blip2
Demo 地址:https://huggingface.co/spaces/Salesforce/BLIP2
背景和动机
视觉语言训练 (Vision-Language Pre-training, VLP) 的研究在过去几年中取得了快速的发展,研究者们开发了规模越来越大的预训练模型,不断推动各种下游任务的发展。但是,因为使用了大模型。大数据集,而且采取了端到端的训练,大多数最先进的视觉语言模型在预训练过程中会产生很高的计算代价和经济成本。
多模态的研究属于是视觉和语言研究领域的交叉,因此大家很自然地期望视觉和语言模型可以从现成的视觉,语言的预训练模型中获得。为了节约视觉语言模型在预训练过程的计算代价,本文提出的 BLIP-2 希望借助现成的预训练好的单模态视觉模型和单模态文本模型。
这样做的好处是:预训练的视觉模型能够提供高质量的视觉表征。预训练的语言模型,尤其是大型语言模型 (LLM),提供了强大的语言生成和零样本迁移能力。为了减少计算成本并抵消灾难性遗忘的问题,单模态预训练模型在预训练期间保持冻结。
但是,简单的冻结预训练好的视觉模型的参数或者语言模型的参数会带来一个问题:就是视觉特征的空间和文本特征的空间不容易对齐。出现这个问题的原因是:文本模型 LLM 在单模态预训练期间没有看过对应的图片,视觉模型在单模态预训练期间没有看过对应的文本,所以这个对齐特别具有挑战性。
为了解决这个问题,BLIP-2 提出了一个轻量级的 Querying Transformer,如下图所示。该 Transformer 分两个阶段进行预训练。Q-Former 是一个轻量级 Transformer,它使用一组可学习的 Query 向量从冻结的视觉编码器中提取视觉特征,并充当视觉编码器和文本编码器之间的瓶颈。Q-Former 把关键的视觉信息传递给 LLM,第一个预训练阶段,强制 Q-Former 学习与文本最相关的视觉表征。第二个预训练阶段,通过将 Q-Former 的输出连接到冻结的 LLM 来执行视觉语言生成学习,使其输出的视觉表征可以直接由 LLM 解释。这样一来,Q-Former 就可以有效地利用冻结的预训练图像模型和语言模型。

模型架构
BLIP-2 由预训练好的,冻结参数的视觉模型和文本模型,外加所提出的可训练的 Q-Former 构成。固定的图像编码器从输入图片中提取视觉特征,Q-Former 架构是由2个 Transformer 子模块构成,其中注意 Self-Attention 是共享的,可以理解为 Self-Attention 的输入有2个,即:Queries 和 Text。
第1个 Transformer 子模块:是 Image Transformer,它与图像编码器交互,用于视觉特征提取。它的输入是可学习的 Queries,它们先通过 Self-Attention 建模互相之间的依赖关系,再通过 Cross-Attention 建模 Queries 和图片特征的依赖关系。因为两个 Transformer 的子模块是共享参数的,所以 Queries 也可以与文本输入做交互。
第2个 Transformer 子模块:是 Text Transformer,它既可以作为文本编码器,也可以充当文本解码器。
Q-Former 一共包含了 188M 参数,其权重使用 BERT-Base 做初始化,Cross-Attention 的参数做随机初始化。作者使用 32 个 Queries,其中每个 Queries 的维度为 768。Queries 随着预训练目标一起训练,迫使它们提取到与文本最相关的视觉信息。

Q-Former 训练第1步:联合视觉编码器训练
Q-Former 训练的第一步,作者将 Q-Former 连接到冻结参数的图像编码器,并使用图像-文本对进行预训练,那么这一步的目标是训练好 Q-Former,以便 Queries 可以学习到如何更好地结合文本提取图片信息。
训练的目标函数,作者遵循 BLIP 的做法,联合优化3个具有相同输入格式和模型参数的预训练目标,每个目标函数使用不同的 mask Attention 来控制注意力的交互。
- 图文对比学习 (Image-Text Contrastive Learning, ITC)
这是多模态预训练中的经典目标函数,旨在对齐图像和文本的表征,使其互信息最大化。
ITC 实现的方式是:让正样本 (配对的图片文本对) 的相似度尽量高,同时让负样本 (不配对的图片文本对) 的相似度尽量低。那么对于 Q-Former 作者实现 ITC 的方法是计算 Queries 的输出\( 𝑍\) 和 Text Transformer 的 [CLS] token 输出 \(𝑡 \)的对比学习损失。因为 \(𝑍 \)包含了多个 Queries 的输出,因此作者首先计算每个 Queries 的输出和 \(𝑡 \)之间的成对相似度,然后选择最高的一个作为最终的图文相似度。ITC 的 Attention Mask 方法如下图的最右侧所示,属于 Uni-modal Self-Attention Mask,不允许 Queries 和 Text 相互看到 (相互之间的注意力值为0)。
- 基于图像的文本生成 (Image-Grounded Text Generation, ITG)
ITG 给定一张输入图片,旨在训练 Q-Former 生成对应的文本描述。
要实现这一目的,视觉编码器和文本解码器之间应该有交互。而 Q-Former 恰恰阻止了这种直接交互,因此 Queries 在这里就扮演了提取出来生成文本所需要的信息,然后通过 Self-Attention 层传递给 Text token。简而言之,Queries 应该具备这样一种能力:提取捕获了所有文本信息的视觉特征。因此,ITG 的 Attention Mask 方法如下图中间所示,属于 Multi-modal Causal Self-Attention Mask,允许 Text 看到 Queries (Queries 里面有视觉信息),同时每个 Text token 只能看到它之前的 Text token (生成式任务的基本做法)。但是不允许 Queries 看到 Text 的信息,只能看到自己的信息。此外作者还将 [CLS] token 替换为一个新的 [DEC] token 作为第一个 Text token 来指示解码任务。
- 图文匹配任务 (Image-Text Matching, ITM)
这是多模态预训练中的经典目标函数,旨在更加细粒度地对齐图像和文本的表征,使其互信息最大化。ITM 是个二分类任务,要求模型预测图像-文本对是正样本 (匹配) 还是负样本 (不匹配)。ITM 的 Attention Mask 方法如下图的最左侧所示,属于 Bi-directional Self-Attention Mask,允许 Queries 和 Text 相互看到。
Queries 的输出 𝑍 捕获了多模态信息,把每个输出的 Queries Embedding 通过一个二类线性分类器中以获得 logit,并将 logit 的输出做平均作为最终的分数。
BLIP-2 的 ITM 目标函数同样使用了 ALBEF 中的 hard negative mining 策略。

Q-Former 训练第2步:联合视觉编码器和大型语言模型训练
在生成预训练的阶段,作者把 Q-Former 和冻结参数的 LLM 连接起来,以利用 LLM 的文本生成能力。首先输入图片还是直接输入冻结参数的 Image Encoder,得到图像的表征。然后图像的表征和 Queries 一起送入 Q-Former,得到 Queries 的输出\( 𝑍\) ,经过一个全连接层与 Text token 的维度对齐之后输入给 LLM Decoder。这个 Queries 的输出就蕴含了视觉信息,在输入给 LLM 的时候就充当了 Soft Visual Prompt 的作用。
Queries 在经过了第1阶段的训练之后,已经学习到了如何更好地结合文本提取图片信息,因此它可以有效地将最有用的图片信息提供给 LLM,同时删除不相关的视觉信息。这减少了 LLM 学习视觉语言对齐的负担。
作者尝试了2种大型语言模型,分别是基于纯 Decoder 架构的和基于 Encoder-Decoder 架构的。对于基于纯 Decoder 架构的模型,使用语言建模目标函数进行训练。冻结参数的 LLM 的任务是根据 Q-Former 提供的视觉表征来生成文本。对于基于 Encoder-Decoder 架构的模型,把文本分成两段,前缀随着 Queries 的输出喂给 LLM 的 Encoder,希望 Decoder 输出后缀。

预训练方法
预训练数据集
和 BLIP 一样使用下面6个数据集,图片数加起来大概是 129M。
- Conceptual Captions
- SBU Captions
- COCO
- Visual Genome
- 噪声更大的 Conceptual 12M 数据集 (有的数据失效了)
- 额外的 web 数据集 LAION400M 的一部分,该数据集包含 115M 图像,具有更多的噪声文本
采用了 BLIP 里面提出的 CapFilt 方法为网络图像创建合成标题。
预训练好的视觉模型和 LLM
视觉模型使用:
- CLIP 训练的 ViT-L/14
- EVA-CLIP 训练的 ViT-g/14
LLM 模型使用: - OPT
- FlanT5
实验结果
先来看几张 Zero-shot 指令控制图文生成任务的实验结果,包括视觉知识推理、视觉常识推理、视觉对话、个性化图像到文本生成如下面两张图所示。只需在视觉提示之后附加文本提示作为 LLM 的输入。


Zero-Shot 视觉语言任务
下图概述了 BLIP-2 在各种 Zero-Shot 视觉语言任务上的性能。与之前最先进的模型相比,BLIP-2 在视觉语言预训练期间实现了更好的性能,同时需要更少的可训练参数数量。

Zero-shot VQA 任务
作者对 Zero-Shot VQA 任务进行了定量的评估,对于 OPT 的语言模型,Prompt 设置为 "Question: {} Answer:"。对于 FlanT5 模型,Prompt 设置为 "Question: {} Short answer:"。BLIP-2 在 VQAv2 和 GQA 数据集上取得了最先进的结果。它在可训练参数减少 54 倍的情况下,VQAv2 上的表现优于 Flamingo80B。在 OK-VQA 数据集上,BLIP-2 没打败 Flamingo80B。下图还说明了更大的视觉模型或者文本模型都有助于性能的提升。

视觉语言表征学习的影响
BLIP-2 第一阶段的表征学习预训练 Q-Former 来学习与文本相关的视觉特征,这减少了 LLM 学习视觉语言的负担。如下图8所示是第一阶段的表征学习对生成学习的影响。在没有表征学习的情况下,这两种类型的 LLM 在 Zero-Shot VQA 上的性能都要低得多。而且,OPT 会有灾难性遗忘的问题,即随着训练的进行,性能会急剧下降。

图像字幕实验结果
图像字幕任务要求模型为图像的视觉内容生成文本描述,实验结果如下图所示。作者使用提示 "a photo of" 作为 LLM 的初始输入,并使用语言建模损失函数来训练模型生成字幕。作者在微调期间保持 LLM 冻结,并将 Q-Former 的参数与图像编码器一起更新。微调数据集使用 COCO,同时在 COCO 测试集和 NoCaps 验证集上评测。BLIP-2 在 NoCaps 上比现有方法取得了显着的改进实现了最先进的性能,显示出对域外图像的强大泛化能力。

视觉问答实验结果
给定带注释的 VQA 数据,作者在保持 LLM 冻结的同时微调 Q-Former 和图像编码器的参数。VQA 微调的模型架构如图所示,LLM 接收 Q-Former 的输出和问题作为输入,并希望生成答案。为了提取与问题更相关的图像特征,作者还给 Q-Former 额外输入问题,使其借助 Self-Attention 与可学习的 Queries 交互。

实验结果如下图所示,BLIP-2 属于开放式生成模型,并取得了最佳的性能。

图文检索实验结果
图像文本检索不涉及语言生成,所以作者直接微调第1阶段预训练模型。作者使用与预训练相同的目标函数,即 ITC、ITM 和 ITG。数据集使用 COCO,微调 Q-Former 和图像编码器。评测数据使用 COCO 和 Flickr30K,任务是 image-to-text retrieval 和 text-to-image retrieval。实验结果如图所示,BLIP-2 在 Zero-Shot 的图像文本检索方面实现了最先进的性能,与现有方法相比有了显着改进。

BLIP-2 的局限性
LLM 一般具备 In-Contet Learning 的能力,但是在 In-Context VQA 的场景下,BLIP-2 没观察到好的结果。对于这种上下文学习能力的缺失,作者把原因归结为预训练数据集中的每个数据只包含一个图像-文本对,导致 LLM 无法从中学习单个序列中多个图像-文本对之间的相关性。
BLIP-2 的图文生成能力不够令人满意,可能是 LLM 知识不准确带来的。同时 BLIP-2 继承了冻结参数的 LLM 的风险,比如输出攻击性语言,传播社会偏见。解决的办法是指令微调,或者过滤掉有害的数据集。