BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models
第一作者:Author:Junnan Li
发布日期:2023.1
参考链接
- paper: BLIP-2
- code: BLIP-2
- 朱老师:多模态论文串讲
- HF上的Demo
- BLIP2-图像文本预训练论文解读
- BLIP2论文简洁摘要
- BLIP2: 下一代多模态模型的雏形
- 【多模态学习 BLIP2的前世与今生】ALBEF, BLIP和BLIP2全系列工作串讲
- 【深度学习论文阅读:BLIP2-高效进行VLP(Vision-Language Pre-training)的策略】
- BLIP2中Q-former详解原创
简短版
- representation learning: 第一阶段从冻结图像编码器引导视觉语言表示学习。(connect Q-Former to a frozen image encoder)(aim to train the Q-Former such that the queries can learn to extract visual representation that is most informative of the text)
- generative pre-training : 第二阶段从冻结的语言模型引导视觉到语言的生成学习。(connect Q-Former (with the frozen image encoder attached) to a frozen LLM)
Query通过Cross-Attention与图像的特征交互,通过Self-Attention与文本的特征交互
Q-Former主要参考了Bert的enconder,总共12层,偶数层增加了一个ca层,奇数层不增加。
?: We remove the last layer of the ViT and uses the second last layer’s output features
?: During pre-training, we convert the frozen ViTs’ and LLMs’ parameters into FP16, except for FlanT5 where we use BFloat16. We found no performance degradation compared to using 32-bit models.
ITC(Image-Text Contrastive Learning): 增大同(正)样本对的similarity,减小负样本对的similarity,Text和Queries之间不可见
ITG(Image-grounded Text Generation):给定输入图像作为条件的情况下,训练 Q-Former 生成文本,迫使Query提取包含文本信息的视觉特征;The queries can attend to each other but not the text tokens. Each text token can attend to all queries and its previous text tokens.
ITM(Image-Text Matching):二元分类任务,通过预测图像-文本对是正匹配还是负匹配.
ITC:使用单模态视觉和大语言模型各自的注意力掩码,Q向量和T之间没有交互。
ITM:使用双向注意力机制掩码(MLM),实现Q向量和T之间的任意交互。Q向量可以attention T,T也可以attention Q向量。
ITG:使用单向注意力机制掩码(CLM),实现Q向量和T之间的部分交互。Q向量不能attention T,T中的text token可以attention Q向量和前面的text toke
这三个目标都是将视觉表示和文本表示T进行对齐,学习到最匹配文本的视觉表示。
Zero-shot VQA:零样本视觉问答任务
Image Captioning:图像字幕任务(We keep the LLM frozen during finetuning, and updates the parameters of the Q-Former together with the image encoder.)
Vision Question Answering:
Image-Text Retrieval: 图文检索
前言
从泰坦尼克号说起
开始前介绍论文前我们先来讨论下,实现图片中的问答,需要什么能力呢?
- 图片里发生了什么:一位男士在船头搂着一位女士。(感知-CV模型的能力)
- 问题问的什么:电影的结尾是什么?(感知-NLP模型的能力)
- 图片和电影有什么关系:这是泰坦尼克号里的经典镜头。(对齐融合-多模态模型的能力)
- 电影的结尾是什么:泰坦尼克号沉没了。(推理-LLM模型的能力
对不同模型扮演的角色理解
从上面的问题可以看出,为了解决这个问题,需要几个模型配合一下。其实自从多模态模型(特别是图文多模态模型)出现,模态之间怎么配合就是个问题。
19年20年的时候,ViLBERT和Uniter采用了Object-Text对来提升模型对图片的理解能力。Object的引入,不可避免的需要一个笨重的检测器,去检测各种框,使得图像模态显得比较笨重。而且检测器模型不可避免的会存在漏检的问题,可以参考后来Open-Vocabulary一些工作,比如ViLD。这一阶段,显然对图像的理解是多模态的重头戏,文本更多是辅助图像任务的理解。
到了21年22年,去掉检测器成了主流,ViLT,ALBEF,VLMo,BLIP 等等都抛弃了检测器,彻底摆脱了CNN网络的舒服,全面拥抱Transformer,当然这也得益于本身ViT模型在CV领域的大放光彩,让两个模态的有机融合成为了可能。在这一阶段,文本模态感觉已经可以和图像模态平起平坐了。从在各项具体下游任务(VQA、VG、ITR)的实际表现上来说,已经比较令人满意了。但总感觉差点味道,就是复杂推理。比如VQA上的问题,大多数是简单的逻辑计算或识别,感觉还不够智能。
那么如何实现更加复杂的推理呢?众所周知,NLP领域一直领先于CV领域的发展。得益于更丰富的语料库,NLP领域的已经拥有了一些具有初步推理能力模型的研究,特别是LLM大模型的出现。(今天谷歌刚刚发布了22B的ViT,而在NLP领域这个规模的模型应该已经不算新闻了。)我对于LLM能力有多强的理解,其实也是ChatGPT之后才有明确的感知。
23年1月,BLIP2出来了,引入了LLM。从图像上看,BLIP2大概由这么几个部分组成,图像(Image)输入了图像编码器(Image Encoder),得到的结果与文本(Text)在Q-Former(BERT初始化)里进行融合,最后送入LLM模型。
- 图像和文本:自然信号;
- 图像编码器(Image Encoder):传感器(图像);
- Q-Former:传感器(文本)+ 融合算法(Query);
- LLM:处理器。
之前的模型大多都关注在了传感器和融合算法的设计上,但忽略了处理器的重要作用。BERT模型虽然能理解文本,但却没有世界观的概念,没有庞大的背景知识库,只能作一个传感器。只有LLM模型,才能实现这一角色,统一起各个模态的信号,从一个宏观的角度去看待这个问题。这里引用一段原文中的话。
1 | Powered by LLMs (e.g. OPT (Zhang et al., 2022), FlanT5 (Chung et al., 2022)), BLIP-2 can be prompted to perform zero-shot image-to-text generation that follows natural language instructions, which enables emerging capabilities such as visual knowledge reasoning, visual conversation, etc. |
目前看,或许LLM就是下一代多模态模型的关键一环。
Abstract
训练大尺度视觉语言预训练模型成本比较高,BLIP-2,基于现有的图像编码器预训练模型,大规模语言模型进行预训练视觉语言模型;BLIP-2通过轻量级两阶段预训练模型Querying Transformer缩小模态之间gap,第一阶段从冻结图像编码器学习视觉语言表征,第二阶段基于冻结语言模型,进行视觉到语言生成学习;
Introduction
目前存在的问题: 端到端训练视觉语言模型需要大尺度模型及大规模数据,该过程成本大,本文提出方法基于现有高质量视觉模型及语言大模型进行联合训练,为减少计算量及防止遗忘,作者对预训练模型进行frozen,为了将两任务对齐,作者提出Querying Transformer (Q- Former) 预训练,如图1,其将有用视觉特征传递至LLM输出目标文本
1 | 端到端训练是一种机器学习训练方法,它直接从输入数据到最终输出目标进行训练,不需要人工干预或特定特征的提取。 |
BLIP-2优势如下:
- 高效利用frozen预训练视觉及语言模型;
- 由于大规模语言模型能力,BLIP-2可以根据提示进行zero-shot图像到文本生成;- 由于使用frozen单模态预训练模型,BLIP-2与现有SOTA方案相比,计算更加高效;
为了对齐视觉特征到LLM文本空间,作者提出Q-Former,进行两阶段预训练:
- 图像编码器frozen进行学习视觉语言表征;
- 使用frozen LLM进行学习视觉到文本生成;
Related Work
End-to-end Vision-Language Pre-training
端到端的视觉-语言预训练(VLP)的目标是学习多模态基础模型,以提高在各种视觉和语言任务上的性能。文章提到了几种不同的模型架构,包括双编码器、融合编码器、编码器-解码器以及统一的变换器架构。此外,还介绍了几种预训练目标,如图像-文本对比学习、图像-文本匹配和(遮蔽的)语言建模。大多数VLP方法使用大规模的图像-文本对数据集进行端到端预训练,随着模型大小的增加,预训练的计算成本极高。而且,端到端预训练的模型难以利用现有的单模态预训练模型,例如大型语言模型(LLMs)。
Modular Vision-Language Pre-training
这些方法利用现成的预训练模型,并在视觉-语言预训练(VLP)过程中保持这些模型不变(冻结状态)。一些方法冻结图像编码器,另一些方法冻结语言模型,用于视觉到语言的生成任务。关键挑战是将视觉特征与文本空间对齐。例如,Frozen方法微调图像编码器的输出作为大型语言模型(LLM)的软提示,而Flamingo方法在LLM中插入新的交叉注意力层。与现有方法不同,BLIP-2可以有效且高效地利用冻结的图像编码器和LLM,以较低的计算成本在各种视觉-语言任务上实现更强的性能。
Method
BLIP-2是一种新的视觉-语言预训练方法,它基于冻结的单模态预训练模型。为了弥合模态间的差距,提出了一个分两阶段预训练的查询变换器(Q-Former):第一阶段是利用冻结的图像编码器进行视觉-语言表示学习,第二阶段是利用冻结的大型语言模型(LLM)进行视觉到语言的生成学习。
Model Architecture(如何统一多模态的表征)
LLM本质上是个语言模型,自然无法直接接受其他模态的信息。所以如何把各个模态的信息,统一到LLM能理解的特征空间,就是第一步要解决的问题。为此,作者提出了Q-Former。
为了融合特征,那Transformer架构是最合适不过的了。熟悉ALBEF或者BLIP的同学或许发现,Q-Former的结构和ALBEF其实很像,如果看代码的话,可以发现就是在ALBEF基础上改的。
相较于ALBEF,最大的不同,就是Learned Query的引入。可以看到这些Query通过Cross-Attention与图像的特征交互,通过Self-Attention与文本的特征交互。这样做的好处有两个:(1)这些Query是基于两种模态信息得到的;(2)无论多大的视觉Backbone,最后都是Query长度的特征输出,大大降低了计算量。比如在实际实验中,ViT-L/14的模型的输出的特征是257x1024的大小,最后也是32x768的Query特征。
Q-Former作为一个可训练模块,旨在弥合冻结的图像编码器和冻结的大型语言模型(LLM)之间的差距。它从图像编码器中提取固定数量的输出特征,这些特征与输入图像的分辨率无关。
Q-Former包括两个自共享self-attention层的transformer子模块:
- 图像transformer(Q-Former左半部分)与frozen image encoder相互作用提取视觉特征;
- 文本transformer(Q-Former右半部分)可作为文本编码器,也可作为文本解码器。
Bootstrap Vision-Language Representation Learning from a Frozen Image Encoder
query通过学习提升与text相关视觉表征,受BLIP启发,作者通过3个目标函数,共享相同输入格式及模型参数,每个目标函数通过不同attention mask策略控制query与text之间相互影响
图像-文本对比学习(ITC):ITC学习对齐图像表征与文本表征,通过比较成对与非成对的图像-文本相似度实现;计算过程如下:
计算image transformer输出query表征Z ZZ(与可学习query长度相同)与text transformer输出文本表征 t tt 中【CLS】token相似性,选取最大值作为图像文本对相似度,为防止信息泄露,作者使用单模态self-attention mask,query与text不能互相可见,防止从文本直接学习;由于image encoder进行frozen,显存释放,可以使用batch负样本而不用像BLIP中使用队列。
基于图像的文本生成(ITG)损失: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 作为解码任务标记;
图像-文本匹配(ITM):ITM为了学习精细化图像文本匹配,作者使用bi-dirention self-atttention mask,所有query与text相互可见,因此输出的query embedding Z捕获多模态信息,Z通过二类线性分类器获取logit,logit均值为匹配得分,作者使用《Align before Fuse》中难例负样本挖掘策略创建负样本对。
难例负样本挖掘策略:
当负样本的图像文本对有相同的语义但在细粒度细节上不同,那么该样本是难样本。作者通过对比相似度寻找batch内的 hard negatives。对于一个batch中的每一幅图像,作者根据对比相似性分布从相同的batch中抽取一个负文本,其中与图像更相似的文本有更高的可能被采样。同样的,作者还为每个文本采样一个hard negative图像。
Bootstrap Vision-to-Language Generative Learning from a Frozen LLM(变成LLM认识的样子)
通过第一阶段的训练,Query已经浓缩了图片的精华,现在要做的,就是把Query变成LLM认识的样子。
1 | 为什么不让LLM认识Query,而让Query变成LLM认识呢?这里的原因有两: |
作者将Q-Former与LLM相连,后去LLM的语言生成能力。如图3,FC层映射输出的query embedding Z至LLM的text embedding;基于LLM Q-Former提取到的视觉表征作为soft visual prompt,由于Q-Former已经预训练用于提取对文本有用的视觉表征,减轻LLM学习视觉-文本对齐的负担
这里作者针对两类不同LLM设计了不同的任务:
- Decoder类型的LLM(如OPT):以Query做输入,文本做目标;
- Encoder-Decoder类型的LLM(如FlanT5):以Query和一句话的前半段做输入,以后半段做目标;
为了适合各模型不同的Embedding维度,作者引入了一个FC层做维度变换
对于encoder-decoder-based LLM,使用prefix language modeling loss预训练,将text分为两部分,text前半部分与视觉表征concat输入LLM编码器,后半部分作为LLM解码器的生成目标。
Model Pre-training
BLIP-2使用与BLIP相同数据,129M图片,包括COCO、Visual Genome、CC3M、CC12M、SBU,其中115M来自 LAION400M,使用CapFilt对网图进行生成caption,具体步骤如下:
- 使用生成10个caption;
- 生成10个caption+原始web caption通过CLIP ViT-L/14模型与对应图像进行相似度排序;
- 选取top2作为该图的caption,以此作为训练数据;
两个SOTA视觉transformer预训练模型:ViT-L/14 from CLIP、ViT-G/14 from EVA-CLIP,移除ViT最后一层,使用倒数第二层特征。
LLM模型:
- 无监督训练的OPT作为decoder-based LLM
- 基于指令训练的FlanT5作为encoder-decoder-based LLM
预训练设置:
第一阶段训练250k step,第二阶段训练80k step;ViT和LLM 转为FP16,FlanT5转为BFloat16,作者发现相对于32-bit,性能无下降;由于使用frozen模型,作者预训练比现在大规模VLP方法计算量都小,在16个A100(40G)上,对于ViT-G和FlanT5-XXL第一阶段训练耗时6天,第二阶段少于3天。