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

article/2025/10/22 14:34:10

摘要

        大多现有的视觉语言预训练好的模型只善于基于理解的任务或基于生成的任务,而且,性能的提高很大程度上是通过扩大来自web上收集的有噪声的图像-文本对的数据集,这是一个次优的监督来源。本文,提出BLIP,一种新的VLP框架,可以灵活地转换到视觉-语言理解和生成任务BLIP通过引导字幕,有效地利用了有噪声的web数据,其中字幕器生成合成字幕,过滤器去除有噪声的字幕。我们在广泛的视觉语言任务上实现了最先进的结果,如图像-文本检索、图像标注和VQA。BLIP能以零样本的方式直接转移到视频-语言任务上,也论证了很强的泛化能力

一、介绍

       现有的视觉-语言预训练任务有以下两种主要限制:(1)模型角度:大多方法要么采用基于编码器的模型或基于编码-解码器的模型,然而,基于编码器的模型很难直接转移到文本生成任务上(如图像标注),而编码-解码器模型尚未成功地用于图像-文本检索任务。(2)数据角度:大多最新的方法CLIP、ALBEF、SimVLM在来自web的图像-文本对上预训练,通过扩大数据集获得性能增益,而我们的论文表明,有噪声的web文本对视觉语言学习是次优的。

        我们提出BLIP:引导语言-图像预训练为统一的视觉语言理解和生成。BLIP是一个新的VLP框架,它支持比现有方法更广泛的下游任务。它分别从模型和数据角度介绍了两个贡献

        (a)编码器-解码器(MED)的多模态混合结构:一种为有效的多任务预训练和灵活的转移学习的新的模型架构。MED可以作为单模态编码器、或一个图像接地的文本编码器、或一个图像接地的文本解码器。模型与三个视觉-语言目标共同预训练:图像-文本对比学习、图像-文本匹配、和以图像为条件的语言建模

        (b)标注和过滤(CapFilt):一种新的从有噪声的图像-文本对中学习的数据集引导方法。我们将预训练好的MED微调为两个模块:一个字幕器用于生成给定web图像的合成字幕;另一个过滤器用于从原始的web文本和合成文本中删除有噪声的字幕。

        我们进行了广泛的实验和分析,并得出以下关键的观察:(1)我们表明了字幕器和过滤器一起工作,通过引导字幕在各种下游任务上实现实质性性能改进,我们还发现,更多样化的字幕会产生更大的收益。(2)BLIP在各种视觉-语言任务上实现了最先进的性能,包括图像-文本检索、图像标注、视觉问答、视觉推理和视觉对话。当直接将我们的模型转移到两个视频语言任务:文本到视频检索和视频QA时,我们也实现了最先进的零样本性能。

二、相关工作

2.1 视觉-语言预训练

        视觉-语言预训练旨在通过在大规模图像-文本对上对模型机型预训练来提高下游视觉和语言任务的性能。由于获取人工注释的文本的费用过高,大多方法使用从web上爬取的图像和替代文本对,尽管使用了简单的基于规则的过滤器,噪声仍然在web文本中普遍存在。然而,噪声的负面影响在很大程度上都被忽视了,这被通过放大数据集而获得的性能增益所掩盖。本文表明,有噪声的web文本对于视觉语言学习是次优的,并提出一种更有效的利用web数据集的CapFilt。

        有很多尝试将各种视觉和语言任务统一为一个框架,最大的挑战是设计出可以同时执行基于理解的任务(如图像-文本检索)和基于生成的任务(如图像标注)的模型结构。我们提出的多模态编码-解码器混合模型在广泛的下游任务上提供了更大的灵活性和更好的性能。

2.2 知识蒸馏

        知识蒸馏(KD)旨在通过从教师模型中提取知识来提高学生模型的表现。自蒸馏是KD的一种特殊情况,其中教师和学生有相同的尺寸。它已被证明对图像分类有效,最近对VLP也有效。不同于大多数现有的KD方法(简单执行学生与老师有相同的类预测),我们提出的CapFilt可以被解释为在VLP的上下文中一个执行KD更有效的方式,字幕器通过语义丰富的合成标题提取知识,过滤器通过消除有噪声的标题来提取知识。

2.3 数据增强

        尽管数据增强在计算机视觉中广泛应用,但用于语言任务的DA就不简单了。最近生成的语言模型被用于各种VLP任务的合成实例。与关注低资源纯语言任务的这些方法不同,我们的方法证明了在大规模视觉-语言预训练中合成字幕的优势

三、方法

        我们提出了BLIP,一个统一的VLP框架从有噪声的图像-文本对中学习。

3.1 模型结构

        我们用一个视觉transformer作为我们的图像编码器,将输入图像分割成补丁,并将其编码为一个嵌入序列,另外还有一个额外的[CLS]标记来表示全局图像特征。使用ViT与使用已训练好的对象检测器相比更便于计算,并已被最近的方法所采用。

        为预训练一个具有理解和生成能力的统一模型,我们提出了编码-解码器的多模态混合(MED)一种可以在三个功能之一运行的多任务模型

        (1)单模态编码器,分别编码图像和文本。文本编码器与BERT相同,其中[CLS]标记被添加在文本输入开头用来总结句子。

        (2)基于图像的文本编码器,通过在文本编码器的每个transformer块的自注意力(SA)层和前馈网络(FFN)之间插入一个额外的跨注意力层(CA)来注入视觉信息。在文本中附加的一个特定于任务的[Encode]标记,并使用[Encode]的输出嵌入作为图像-文本对的多模态表示

        (3)基于图像的文本解码器,用因果自注意力层取代了基于图像的文本编码器中的双向自注意力层[Decode]标记用于表示序列的开始,而序列的结束标记用作其结束的信号。

3.2 预训练目标

        在预训练期间共同优化了三个目标,有两个基于理解的目标和一个基于生成的目标。每个图像-文本对需要一个前向通过计算量较大的视觉transformer,以及三个前向通过文本transformer,其中,激活不同的功能来计算如下所述的三个损失。

        图像-文本对比损失(ITC)  激活单模态编码器,它的目的是通过鼓励正图像-文本对与负图像-文本对相似的表示形式来对齐视觉transformer和文本transformer的特征空间。它已被证明是改善视觉和语言理解的有效目标,跟随ALBEF的ITC损失,其中引入动量编码器来产生特征,并从动量编码器中创建的软标签作为训练目标,已解释负对中潜在的正因素。

        图像-文本匹配损失(ITM)  激活以图像为基础的文本编码器目的是学习图像-文本多模态表示,以捕获视觉和语言之间的细粒度对齐。ITM是一个二值分类任务,其中模型使用一个ITM头(一个线性层)来预测一个图像-文本对是正的(匹配)还是负的(不匹配),给定它们的多模态特征。为找出更多的负信息,采用ALBEF中的硬负挖掘策略即选择批次中对比相似性较高的负对来计算损失

        语言建模损失(LM)  激活以图像为基础的文本解码器目的是生成给定图像的文本描述。优化了一个交叉熵损失,训练模型以自回归的方式最大化文本的可能性。计算损失时,我们应用了0.1的标签平滑处理。与被广泛用于VLP的MLM损失相比,LM使具有泛化能力的模型能够将视觉信息转换为连贯的字幕。

        为使预训练任务更高效,文本编码器和文本解码器共享除SA层的所有参数,原因是编码和解码任务间的差异最好由SA层捕获。特别地,编码器利用双向自注意力构建当前输入标记,而解码器使用因果自注意力来预测下一个标记。另一方面,嵌入层、CA层和FFN在编码和解码任务之间的功能相似,因此共享这些层可以在享受多任务学习的同时提高训练效率。

3.3 CapFilt

        由于高昂的注释成本和有限数量的而高质量人工注释的图像-文本对,最近工作利用更大数量的图像和替代文本对(自动从网上收集的)。然而替代文本往往不能准确地描述图像的视觉内容,使其成为学习视觉-语言对齐的次噪声信号。

        我们提出了标注和过滤(CapFilt),一种提高文本语料库质量的新方法。如图3所示,引入两个模块:一个字幕器从给定的web图像中生成字幕,一个过滤器移除有噪声的图像-文本对。字幕器和过滤器都从相同的预训练好的MED模型中初始化,并分别在COCO数据集上进行微调。

         具体地,字幕器是一个以图像为基础的文本解码器,可以利用LM目标来解码给定图像的文本。给定网站图像Iw,字幕器生成合成字幕Ts,每张图像有一个字幕。过滤器是一个以图像为基础的文本编码器通过ITC和ITM目标来确定文本是否与图像匹配。过滤器移除原始网站文本Tw和合成文本Ts中的噪声文本,如果ITM头部预测文本与图像不匹配,则认为文本是有噪声的。最后,将过滤后的图像-文本对与人类注释对相结合,形成一个新的数据集,我们用它来预训练一个新的模型。

四、实验和讨论

       我们使用与ALBEF相同的预训练数据集,包括两个人类注释的数据集和三个网站数据集,我们也是用一个额外的网站数据集,LAION,包含更多噪声文本的图像。

4.2 CapFilt的影响

        表1中,比较了不同数据集上预训练的模型,以证明CapFilt在下游任务上的有效性,包括图像-文本检索和微调的图像标注和零样本设置。

        当字幕器过滤器应用于14M图像的数据集时,性能有提高,当同时应用时,效果相互配合,与原始噪声的网络文本相比,有实质性的改进。CapFilt通过更大的数据集更大的视觉主干来进一步提高性能,验证在数据大小和模型大小的可伸缩性。

         图4展示了一些示例字幕和相应的图像,定性的展示了字幕器生成新的文本描述的效果,过滤器从原始网站文本和合成文本中移除有噪声的字幕。

 4.3 多样性是合成字幕的关键

        在CapFilt中,我们利用核采样来生成合成标题核采样是一种随机解码方法,每个标记是从一组累积概率质量超过阈值p(实验中p=0.9)的标记中采样。表2中,将其与波束搜索进行比较,这是一种确定性解码方法,旨在生成概率最高的标题。核采样有更好的性能,尽管是更大的噪声。我们假设,原因是核采样产生了更对多样化和令人惊讶的字幕,其中包含了更多样化的新信息,模型可以从中受益。另一方面,波束搜索倾向于生成数据集中常见的安全字幕,因此提供更少的额外知识。

 4.4 参数共享和解耦

        预训练期间,文本编码器和解码器共享除自注意力层之外的所有参数,表3中,我们评估了使用不同参数共享策略预训练的模型。结果表明,共享除SA层外的参数的模型相比没有共享的有更好的表现,同时也减少了模型的尺寸,从而提高了训练效率。如果SA层是共享的,模型表现会由于编码任务和解码任务之间的冲突下降

         在CapFilt期间,字幕器和过滤器将在COCO上分别进行端到端微调。表4中,我们研究了字幕器和过滤器是否以与预训练相同的方式共享参数的效果。对下游任务的表现下降,我们主要将其归因于确认偏差,由于参数共享,由字幕器产生的噪声字幕不太可能被滤波器过滤掉,这从较低的噪声比中可以看出。

 五、与最先进结果的比较

        我们比较在广泛的视觉语言下游任务上的BLIP和现有的VLP方法。

5.3 视觉问答

        我们跟随ALBEF,将VQA考虑为一个答案生成任务,使得开放式的VQA。如图5(a),在微调期间,我们重新排列预训练好的模型,其中一个图像-问题首先被编码到多模态嵌入中,然后送入一个答案解码器。VQA模型以真实答案为目标,细化了LM损失。

        结果被显示在表8中,使用14M图像,BLIP在测试集上比ALBEF高出+1.64%,使用129M图像,BLIP比SimVLM获得更好的性能,SimVLM使用13*更多的预训练数据和更大的视觉主干有着额外的卷积阶段。

 六、额外的消融研究

        使用CapFilt的改进并不是由于更长的训练   由于引导数据集比原始数据集包含更多的文本,因此使用引导数据集训练相同时期的epoch需要更长的时间。为了验证CapFilt的有效性不是由于较长时间的训练,我们在原始数据集中复制web文本,使其每个epoch与引导数据集具有相同的训练样本数量。如表12所示,使用嘈杂的网络文本进行更长时间的训练并不能提高性能

         应该在被引导的数据集上训练一个新的模型    引导数据集用于对新模型进行预训练。我们调查了从之前的预训练好的模型中继续训练的结果,使用引导数据集。表13中如何继续训练没有帮助。这一观察结果与知识蒸馏中的常见做法相一致,即学生模型不能从教师那里初始化。

七、结论

        我们提出BLIP,一种新的VLP框架,在广泛的下游视觉语言任务上具有最先进的性能,包括基于理解和基于生成的任务。BLIP通过注入不同的合成字幕和去除噪声字幕,利用一个大规模噪声的数据集预训练编码-解码器模型的多模态混合。我们的引导数据集被发布,以促进未来的视觉语言研究。

        有一些潜在的方向可以进一步提高BLIP的性能:(1)多轮数据集引导;(2)为每张图像生成多个合成字幕,进一步扩大预训练语料库;(3)模型集成,通过训练索格不同的字幕器和过滤去,并在CapFilt中结合它们的力量,我们希望我们的论文能够激发未来的工作,专注于在模型方面和数据方面进行改进,这是视觉语言研究的面包和支柱。


http://chatgpt.dhexx.cn/article/HCassdFC.shtml

相关文章

同态加密:以CKKS为例的Bootstrapping操作介绍(不定期更新)

同态加密的Bootstrapping操作最早由Gentry在他的博士论文里提出,是实现分级同态加密到全同态加密之间转换的关键步骤。目前所有的bootstrapping工作都是基于Gentry的这个想法,未有出其右者。 这篇博客打算讲一下Bootstrapping的原理,同时看一…

TFHE拓展:Programmable Bootstrapping

Improved Programmable Bootstrapping with Larger Precision and Efficient Arithmetic Circuits for TFHE(对TFHE优化的可编程同态刷新的方案,拥有高精度和高效率) 索引 Improved Programmable Bootstrapping with Larger Precision and Ef…

十分流行自举法(Bootstrapping )为什么有效

我们的项目并不总是有充足的数据。通常,我们只有一个样本数据集可供使用,由于缺乏资源我们无法执行重复实验(例如A/B测试)。 幸运的是,我们有重采样的方法来充分利用我们所拥有的数据。自举法(Bootstrapping)是一种重…

《Hand Keypoint Detection in Single Images using Multiview Bootstrapping》及模型推理

论文:《Hand Keypoint Detection in Single Images using Multiview Bootstrapping》2017 链接:1704.07809.pdf (arxiv.org) code:Hand Keypoint Detection using Deep Learning and OpenCV | LearnOpenCV 论文略读 1.Introduction In th…

bootstraping

之前一位同学问及bootstrap,由此我查阅了几篇文献,初步知晓个皮毛:它是一种非参检验方法,利用重复抽样理论,来减少偏差、控制方差、得到有效置信区间等统计方法。国内bootstrap研究比较少,这里摘录了国外研…

CKKS自举笔记(CKKS Bootstrapping)

文章目录 CKKS Bootstrapping流程流程的框架如何做同态取模操作直接泰勒展开(naive idea)采用二倍角公式来拟合(欧密2018) 如何做同态编码或解码CKKS的编码和解码基础知识(明文下面怎么做)同态的旋转、共轭…

解决:‘config.status: error: Something went wrong bootstrapping makefile fragments......’问题

解决:‘config.status: error: Something went wrong bootstrapping makefile fragments......’问题 一、问题二、解决方法 一、问题 首先我们来看安装sqlite时报的这个错误: config.status: error: in ‘/home/dengyonghao/Downloads/sqlite-autoconf…

Bootstrapping的意义

一、原理解释 Bootstrapping 方法是种集成方法,通俗解释就是盲人摸象,很多盲人摸一头象,各自摸到的都不一样,但是都比较片面,当他们在一起讨论时,就得到了象的整体。 Bootstrap的过程,类似于重…

Bootstrapping method

Bootsrapping指的就是利用有限的样本资料经由多次重复抽样,重新建立起足以代表母体样本分布的新样本。 统计中我们常常需要做参数估计,具体问题可以描述为:给定一系列数据 假设它们是从分布F中采样得到的,参数估计就是希望估计分…

【强化学习】n步Bootstrapping

目录 n步TD 预测 n-step Sarsa n步off - policy学习 Per-reward Off - policy 方法 n步Tree Backup算法 BootStrapping原是推论统计学里的概念。所谓推论统计学,就是根据样本统计量来推算总体的统计量。n部方法通常会被用作eligibility trace思想的一个例子&am…

Bootstrapping

Bootstrapping从字面意思翻译是拔靴法,从其内容翻译又叫自助法,是一种再抽样的统计方法。自助法的名称来源于英文短语“to pull oneself up by one’s bootstrap”,表示完成一件不能自然完成的事情。1977年美国Standford大学统计学教授Efron提…

Bootstrapping?

一、什么是Bootstrapping? 中文翻译也叫“自助法(自举法)”。 类似于给鞋子穿鞋带,把鞋带穿进去在穿出来再穿进去。 举个例子,一个总体有五十人,没有办法直接测量总体的情况,我们就从总体中抽取一些样本,用…

华为机试题整理

1、整数反转后求和 #include <iostream> using namespace std; int reversenum(int x) {int a0;while (x>0) {aa*10x%10;x/10;}return a; } int reverseAdd(int a,int b) {if(a<1||a>70000||b<1||b>70000){return -1;}int num1reversenum(a);int num2re…

2021.华为机试某题

问题描述&#xff1a; 有M*N的节点矩阵&#xff0c;每个节点可以向8个方向&#xff08;上、下、左、右及四个斜线方向&#xff09;转发数据包&#xff0c;每个节点转发时会消耗固定时延&#xff0c;连续两个相同时延可以减少一个时延值&#xff08;即当有K个相同时延的节点连续…

牛客网华为机试题训练汇总(JavaScript)

牛客网华为机试题训练&#xff08;JavaScript Node环境&#xff09; 文章目录 牛客网华为机试题训练&#xff08;JavaScript Node环境&#xff09;前言一、题目1. HJ11 数字颠倒2. HJ22 汽水瓶3. HJ53 杨辉三角的变形4. HJ2 计算某字母出现次数5. HJ8 合并表记录6. HJ17 坐标移…

1、华为机试题记录

1、小型机通常采用RISC和unix操作系统。 RISC&#xff1a;精简指令集计算机&#xff0c;指令少&#xff0c;运行效率更高。 unix&#xff1a;商用UNIX现在主要是三大分支IBM的AIX,SUN的solaris&#xff0c;HP的hp-ux&#xff0c;运行在小型机上。金融电信等行业应用广泛&#x…

华为机试练习题汇总

华为机试练习广场&#xff1a; [华为机试练习题]1.周期串问题 - Yoona - 博客频道 - CSDN.NET[华为机试练习题]2.大数求和 - Yoona - 博客频道 - CSDN.NET[华为机试练习题]3.分解字符串 - Yoona - 博客频道 - CSDN.NET[华为机试练习题]4.简单密码破解 - Yoona - 博客频道 - CSD…

华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典

文章目录 2023 年用 Python 语言解华为 OD 机试题&#xff0c;一篇博客找全。华为 OD 机试题清单&#xff08;机试题库还在逐日更新&#xff09; 2023 年用 Python 语言解华为 OD 机试题&#xff0c;一篇博客找全。 在 2023 年&#xff0c;Python 已成为广泛使用的编程语言之一…

华为OD机试真题2022Q4 A + 2023 B卷(JavaJavaScript)

大家好&#xff0c;我是哪吒。 五月份之前&#xff0c;如果你参加华为OD机试&#xff0c;收到的应该是2022Q4或2023Q1&#xff0c;这两个都是A卷题。 5月10日之后&#xff0c;很多小伙伴收到的是B卷&#xff0c;那么恭喜你看到本文了&#xff0c;抓紧刷题吧。B卷新题库正在更…

EntityWrapper的in用法

EntityWrapper<UserLife> wrapper new EntityWrapper<>(); wrapper.eq("is_valid", 1); wrapper.in("life_name", "ge,edu,career"); List<UserLife> userLabelList userLabelService.selectList(wrapper); in的第二个参数…