【自然语言处理】【多模态】BLIP:面向统一视觉语言理解和生成的自举语言图像预训练
BLIP: 面向统一视觉语言理解和生成的自举语言图像预训练 《BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation》
论文地址:https://arxiv.org/pdf/2201.12086.pdf
相关博客:
【自然语言处理】【多模态】多模态综述:视觉语言预训练模型
【自然语言处理】【多模态】CLIP:从自然语言监督中学习可迁移视觉模型
【自然语言处理】【多模态】ViT-BERT:在非图像文本对数据上预训练统一基础模型
【自然语言处理】【多模态】BLIP:面向统一视觉语言理解和生成的自举语言图像预训练
【自然语言处理】【多模态】FLAVA:一个基础语言和视觉对齐模型
【自然语言处理】【多模态】SIMVLM:基于弱监督的简单视觉语言模型预训练
【自然语言处理】【多模态】UniT:基于统一Transformer的多模态多任务学习
【自然语言处理】【多模态】Product1M:基于跨模态预训练的弱监督实例级产品检索
【自然语言处理】【多模态】ALBEF:基于动量蒸馏的视觉语言表示学习
【自然语言处理】【多模态】VinVL:回顾视觉语言模型中的视觉表示
【自然语言处理】【多模态】OFA:通过简单的sequence-to-sequence学习框架统一架构、任务和模态
【自然语言处理】【多模态】Zero&R2D2:大规模中文跨模态基准和视觉语言框架
一、简介
近期,Visual-language
预训练在各种多模态下游任务中取得了巨大的成功。然而,现有的方法存在着两个限制:
模型视角
许多模型都采用基于编码器的架构或者编码器-解码器的架构。然而,基于编码器的模型并不能直接用于文本生成任务,而编码器-解码器架构并没有成功的应用于
image-text
检索任务。数据视角
许多的
state-of-the-art
方法(例如:CLIP
,ALBEF
,SimVLM
)都在从网络上收集的image-text对
数据上进行预训练。尽管通过扩大数据集的规模获得了性能增益,但本文也展示了带有噪音的web文本对于vision-language
学习来说是次优解。
为此,作者提出了BLIP: Bootstrapping Language Image Pre-training for unified vision-language understanding and generation
。BLIP
是一个新的VLP(Vision-Language Pre-training)
框架,其能够更加广泛的支持下游的任务。其从模型和数据视角做出了两个贡献
- 编码器-解码器的多模态混合(MED)\text{(MED)}(MED):一个用于高效多任务预训练和灵活迁移的新模型架构。一个MED\text{MED}MED可以是单模态的编码器,也可以是基于图像的文本编码器/解码器。模型通过三个
vision-language
目标函数进行预训练:image-text
对比学习、image-text
匹配和图像条件语言建模。 - CapFilt(Captioning and Filtering)\text{CapFilt(Captioning and Filtering)}CapFilt(Captioning and Filtering):用于从噪音
image-text对
中学习的新数据集boostrapping
方法。微调预训练MED\text{MED}MED为两个模块:一个用于为给定图像生成合成captions的captioner
,以及一个从原始web文本和合成文本移除噪音captions的filter
。
作者进行了大量的实验和分析,做出了如下的贡献:
- 实验显示
captioner
和filter
一起工作能够显著改善各种下游任务。此外,还发现更多样的captions会带来更大的收益。 BLIP
在各种vision-language
任务上都实现了state-of-the-art,包括image-text
检索、image captioning
、视觉问答、视觉推理和视觉对话。直接将本文的方法迁移至两个video-language
任务:text-to-video
检索和videoQA
,实现了zero-shot
的state-of-the-art表现。
二、相关工作
1. 视觉语言(Vision-language\text{Vision-language}Vision-language)预训练
视觉语言预训练(VLP\text{VLP}VLP)的目标是通过在大规模image-text
数据集上预训练模型来改善下游视觉和语言任务的表现。由于获取人类标注的文本成本非常高昂,许多方法使用从互联网上抓取的图像-文本数据,尽管使用了规则进行过滤,但这些网络文本中仍然普遍存在着噪音。然而,噪音的负面影响很大程度上被忽略了。本文展示了带有噪音的web文本是视觉语言学习的次优解,并提出了CapFilt\text{CapFilt}CapFilt来更有效的利用数据集。
已经有许多工作尝试将各种视觉和语言任务统一至单个框架。设计模型架构的最大挑战是同时执行基于理解的任务(例如image-text retrieval\text{image-text retrieval}image-text retrieval)和基于生成的任务(例如image captioning\text{image captioning}image captioning)。无论是基于编码器的模型或者是基于编码器-解码器的模型在两种类型的任务上都不是很好,而单个统一的编码器-解码器限制了模型的能力。本文提出的多模态混合编码器-解码器为下游任务提供了更多的灵活性和更好的表现。
2. 知识整理
知识整理KD\text{KD}KD的目标是,通过从教师模型中蒸馏知识来改善学生模型的表现。自蒸馏是知识整理中的特例,其学生和教师的尺寸相当。知识蒸馏在图像分类和VLP\text{VLP}VLP上都证明了有效性。不同于现有知识蒸馏方法,简单的强制学生模型的类别预测与教师保持一致,本文提出的CapFilt\text{CapFilt}CapFilt可以看作是在VLP\text{VLP}VLP上下文中更高效的执行知识蒸馏。captioner
通过语义丰富的合成captions来蒸馏知识,filter
通过移除噪音captions来蒸馏知识。
3. 数据增强
数据增强(DA)\text{(DA)}(DA)已经被广泛的应用于计算机视觉,但是数据增强对于语言任务来说并不是很直接。最近,生成语言模型被用于各种NLP\text{NLP}NLP任务的合成样本。不同于这些专注在低资源语言任务的方法,本文的方法证明了在大规模VLP\text{VLP}VLP上合成captions的优势。
三、方法
1. 模型架构
这里使用视觉Transformer\text{Transformer}Transformer作为图像编码器,其会将图像划分为patches
并编码它们作为嵌入向量序列,添加额外的[CLS]
来表示全局图像特征。相较于使用预训练目标检测器来进行视觉特征抽取,使用ViT\text{ViT}ViT的计算效率更高并且已经被最近的方法所采用。
为了能够预训练同时理解和生成的统一模型,本文提出了一个模态混合的编码器-解码器(MED)\text{(MED)}(MED),其是一个能够执行三个任务之一的多任务模型:
Unimodal encoder
该编码器会分别编码图像和文本。文本编码器与BERT\text{BERT}BERT相同,
[CLS]
被添加至输入文本的开头作为整个矩阵的总结。Image-grounded text encoder
通过在文本编码器的每个Transformer\text{Transformer}Transformer块的自注意力层SA\text{SA}SA和前馈网络层FFN\text{FFN}FFN添加交叉注意力层CA\text{CA}CA来注入视觉信息。一个任务相关的
[Encode]
token被添加在文本后,[Encode]
输入的嵌入向量被用于image-text pair
的多模态表示。Image-grounded text decoder
使用级联自注意力层来替换文本编码器中的双向自注意力层。
[Decode]
token被用来表示序列的开始,且一个序列结束的token被用于表示结尾。
2. 预训练目标函数
在预训练过程中联合优化三个目标函数,其中两个是用于理解的目标函数和一个用于生成的目标函数。对于每个image-text对
,仅需要在计算量较大的视觉Transformer\text{Transformer}Transformer上前向传播1次,并且在文本Transformer\text{Transformer}Transformer前向传播3次,采用不同的函数计算下列三种损失函数:
2.1 图像-文本对比损失函数ITC\text{ITC}ITC
该损失函数会应用在单模态的编码器。它的目标是,通过鼓励正的image-text
样本对具有相似的表示而负样本则相反,从而对齐视觉Transformer\text{Transformer}Transformer和文本Transformer\text{Transformer}Transformer的特征空间。该损失函数已经被证明了改善视觉和语言理解的能力。这里的ITC\text{ITC}ITC同模型ALBEF\text{ALBEF}ALBEF,一个动量编码器被用来产生特征,从动量编码器中创建的软标签来作为训练目标。
2.2 图像-文本匹配损失函数ITM\text{ITM}ITM
该损失函数会应用在图像相关文本的编码器。它的目标是,通过捕获图像和语言的细粒度对齐来学习image-text
多模态表示。ITM\text{ITM}ITM是一个二分类任务,模型用一个ITM\text{ITM}ITM头来预测给定的image-text
对是匹配或者不匹配。为了能够发现信息量更加丰富的负样本,采用了一种难负样本挖掘策略,即batch
中具有较高对比相似度更有可能被选择来计算损失函数。
2.3 语言建模损失函数LM\text{LM}LM
该损失函数会应用在图像相关文本的解码器,其目标是对于给定的图像生成文本描述。它会优化一个交叉熵损失函数,其用以自回归的方式来最大化文本的似然来训练模型。这里应用一个0.1的标签平滑来计算损失函数。相比于MLM
损失,其在VLP
中的应用更加广泛,LM\text{LM}LM能够使模型转换视觉信息至连续captions的泛化能力。
为了利用多任务来执行高效的预训练,文本编码器和文本解码器共享除SA\text{SA}SA层的所有参数。原因就是编码任务和解码任务的不同最好通过SA\text{SA}SA层捕获。特别地,编码器使用双向自编码器来建立当前输入token的表示,而解码器利用causal自注意力
来预测下一个tokens。另一方面,编码和解码任务的嵌入层、CA\text{CA}CA层和FFN\text{FFN}FFN函数相似。因此,共享这些层能够改善训练效率并收益于多任务学习。
3. CapFilt\text{CapFilt}CapFilt
由于高昂的标注成本,现有的人类标注的高质量image-text对
{(Ih,Th)}\{(I_h,T_h)\}{(Ih,Th)}的数量有限。近期的工作利用从web中自动收集的大量image-text对
{(Iw,Tw)}\{(I_w,T_w)\}{(Iw,Tw)}。然而,这种方式收集的文本并不能准确的描述对应的图片,这些噪音信号使得视觉-语言对齐学习次优解。
作者提出了CapFilt(Captioning and Filtering)\text{CapFilt(Captioning and Filtering)}CapFilt(Captioning and Filtering),一个改善文本质量的新方法。上图是CapFilt\text{CapFilt}CapFilt的说明。其引入了两个模块:一个用于为给定图像生成合成captions的captioner
,以及一个从原始web文本和合成文本移除噪音captions的filter
。captioner
和filter
都使用相同的预训练MED\text{MED}MED进行初始化,并在COCO\text{COCO}COCO数据集上单独微调。微调是一个轻量级的过程。
具体来说,captioner
是一个图像相关文本的解码器。其使用LM\text{LM}LM目标函数微调来解码给定图像的文本。给定一个web图像IwI_wIw,captioner
生成一个合成的captions TsT_sTs。filter
是一个图像相关文本的编码器。其使用ITC\text{ITC}ITC和ITM\text{ITM}ITM损失函数微调来学习图像和文本是否匹配。filter
会移除原始web文本TwT_wTw和合成TsT_sTs中的噪音文本,如果ITM\text{ITM}ITM头预测文本与图像不匹配,则该文本被认为是噪音。最后,合并过滤后的image-text对
和人工标注的数据形成一个新的数据集,并用于预训练新模型。
四、实验
暂无
【自然语言处理】【多模态】BLIP:面向统一视觉语言理解和生成的自举语言图像预训练相关推荐
- 多模态模型学习1——CLIP对比学习 语言-图像预训练模型
多模态模型学习1--CLIP对比学习 语言-图像预训练模型 学习前言 什么是CLIP模型 代码下载 CLIP实现思路 一.网络结构介绍 1.Image Encoder a.Patch+Position ...
- 面向神经代码智能(NCI,Neural Code Intelligence)的预训练语言模型综述
面向神经代码智能的预训练语言模型综述 reference: https://arxiv.org/pdf/2212.10079v1.pdf Abstract 随着现代软件的复杂性不断升级,软件工程已 ...
- 《预训练周刊》第5期:智源等研究力证:GPT语言理解能力不输BERT、盘点NLP预训练「兵器谱」...
No.05 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第5期< ...
- 2022预计要火的视觉语言理解和生成:一键生成图像标注,视觉问答,代码开源,官方 Demo 可玩
- BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!...
关注公众号,发现CV技术之美 ▊ 写在前面 视觉语言预训练 (VLP) 提高了许多视觉语言任务的性能.但是,大多数现有的预训练模型仅在基于理解的任务或基于生成的任务中表现出色.此外,通过使用从web收 ...
- 【论文简介】CLIP:图像与自然语言配对预训练可迁移模型:Learning Transferable Visual Models From Natural Language Supervision
论文链接: 2103.Learning Transferable Visual Models From Natural Language Supervision 项目官网: CLIP: Contras ...
- <<多模态预训练—泛读>>2022:BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Unders
目录 问题与方案: 一.Introduction 二.Related Work 2.1.Vision-language Pre-training 2.2.Knowledge Distillation ...
- 《预训练周刊》第63期:微软视觉语言预训练综述、最新大模型课程
No.63 智源社区 预训练组 预 训 练 研究 观点 资源 活动 周刊订阅 告诉大家一个好消息,<预训练周刊>已经开启"订阅功能",以后我们会向您自动推送最新版的&l ...
- <<多模态预训练>>2022:CoCa: Contrastive Captioners are Image-Text Foundation Models
目录 Abstract 1.Introduction 2.Related Work 3.Approach 3.1.Natural Language Supervision 3.2.Contrastiv ...
最新文章
- Facebook性能大提升的秘密:HipHop
- php变量类型怎么表示,PHP 数据类型_php
- C++实现简易通讯录
- Destroy it!
- PowerShell自动删除过期数据
- 牛客 - 阶乘(唯一分解定理)
- 一篇文章搞懂腾讯云AI平台的人工智能IDE:TI-ONE
- Cocos2d-x:使用九宫格(九切片)自定义缩放资源
- java datarow 使用_DataRow中的链接(数据表)
- 开源开放 | 开源立体化漏洞情报知识图谱(四维创智)
- 为什么11·11物流一年比一年快?奥秘就在这里!
- C语言substr函数用法,自己实现substr函数——C语言
- 学生选课系统代码-2view视图层代码【MVC--v】代码
- 华为数据之道学习分享
- STM32使用485接口通讯
- 我的听歌神器--网易云
- 陪集分解和J.Lagrange定理的一些应用
- 【个人喜好诗词之一】归去来兮辞
- codeforces1296F Berland Beauty
- selenium自动化从0开始学习