BLIP和BLIP2 论文讲解

news2024/11/17 12:57:43

文章目录

  • BLIP
    • Introduction
    • Method
      • 模型架构
      • 预训练目标
      • 字幕和过滤(Capfilt)
  • BLIP2
    • Introduction
    • Method
      • 模型结构
      • Q-Former预训练第一阶段
      • Q-Former预训练第二阶段

BLIP

论文: 《BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation》
代码:https://github.com/salesforce/BLIP

Introduction

视觉语言预训练(Vision-Language Pre-training, VLP)在各种多模态下游任务中取得了巨大的成功。然而,现有的VPL方法有两个主要的局限性:
(1)模型视角
现有的VLP模型要么基于encoder架构,要么基于encoder-decoder的架构。然而,基于encoder的模型不太容易直接转移到文本生成任务(例如图像字幕),而encoder-decoder模型尚未成功地用于图像-文本检索任务。
即大多数现有的预训练模型只擅长基于理解的任务或基于生成的任务。
(2)数据视角
大多数最先进的方法(例如CLIP,ALBEF,SimVLM )对从网络收集的图像-文本对进行预训练。尽管通过扩大数据集获得了性能提升,但噪声web text对于视觉语言学习来说是次优的。

因此本文提出了BLIP: Bootstrapping language-image Pre-training,从noise 图像文本对中学习,用于统一的视觉语言理解和生成

Method

模型架构

在这里插入图片描述
为了预训练具有理解和生成能力的统一模型,提出了编码器-解码器的多模态混合(multimodal mixture of encoder-decoder, MED),这是一种多任务模型,可以运行如下的三种功能
(1)Unimodal encoder : 分别对图像和文本进行编码。图像编码器就是ViT (上图左1), 文本编码器与BERT 相同(上图左二),其中在文本输入的开头附加一个[CLS]令牌以总结句子。
(2)Image-grounded text encoder: 通过为文本编码器的每个Transformer块在自注意(self-attention, SA)层和前馈网络(feed forward network, FFN)之间插入一个附加的交叉注意(Cross Attention,CA)层来注入可视信息。任务特定的[Encode]标记被附加到文本中,[Encode]的输出嵌入被用作图像-文本对的多模态表示。
(3)Image-grounded text decoder : 其用因果自注意层(casual Self-Attention)代替Image-grounded text encoder 中的Bi Self-Att。一个[Decode]标记用于表示序列的开始,一个序列结束标记用于表示其结束

预训练目标

在预训练中共同优化了三个目标,两个基于理解的目标和一个基于生成的目标。
每个图像-文本对只需要通过计算量较大的visual transformer进行一次前向传递,并通过文本转换器进行三次前向传递。
其中激活不同的功能以计算如下所述的三种损失:
(1)Image-Text Contrastive Loss (ITC) 用于激活Unimodal encoder。它的目的是通过鼓励positive的图像-文本具有相似的表示 (相反,使得negtive的图像文本队具有不同的表示) 来对齐视觉转换器和文本转换器的特征空间。 ( 这一步和CLIP模型非常类似,就是把文本和图像两种模态对齐到一个特征空间上)
遵循《Align before Fuse: Vision and Language Representation Learning with Momentum Distillation》 中提到的ITC loss ,其中引入动量编码器产生特征,并从动量编码器创建软标签作为训练目标。
(2)Image-Text Matching Loss (ITM) 用于激活 image-grounded text encoder。它旨在学习图像-文本多模态表示,以捕获视觉和语言之间的细粒度对齐。
ITM是一个二元分类任务,其中模型使用ITM头(线性层)来预测给定图像-文本对的多模态特征是正的(匹配的)还是负的(不匹配的)。
为了找到具有丰富信息的负样本,我们采用《Align before Fuse: Vision and Language Representation Learning with Momentum Distillation》 中提到hard negative mining strategy,其中batch中具有较高contrastive similarity 的负样本对更有可能被选择来计算损失。

(3)Language Modeling Loss (LM) 用于激活image-grounded text decoder。它旨在生成给定图像的文本描述。它优化了交叉熵损失,训练模型以自回归的方式最大化文本的可能性。在计算损失时,我们使用0.1的标签平滑。与广泛用于VLP的MLM损失相比,LM使具有泛化能力的模型能够将视觉信息转换为连贯的字幕。

  • Image-grounded Text Encoder 用于判断图像和文本是否匹配
    在这里插入图片描述
  • Image-grounded Text Decoder 用于根据输入图片生成字幕
    在这里插入图片描述
  • Image-grounded Question EncoderAnswer decoder联合起来用,可以用于视觉问答系统。
    在这里插入图片描述

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

字幕和过滤(Capfilt)

  • image-text pairs { ( I h , T h ) } \{(I_h, T_h)\} {(Ih,Th)}: 由于标注成本过高,高质量的人工标注图像-文本对数量有限。
  • alt-texts pairs { ( I w , T w ) } \{(I_w, T_w)\} {(Iw,Tw)} : 从网络上自动收集大量的图像文本对,通常不能准确地描述图像的视觉内容,是一个noisy的信号,对于学习视觉语言对齐来说是次优的。

因此,BLIP提出了一种提高文本语料库质量的新方法Captioning and Filtering (CapFilt), 下图给出了CapFilt的示例。
在这里插入图片描述

Capfilt引入了两个模块:一个用于生成给定web图像的标题的captioner,以及一个用于去除noisy 图像-文本对的filter。captioner和filter都是从相同的预训练MED模型初始化的,并在COCO数据集上分别进行微调。

  • captioner是一个Image-grounded text decoder。它与LM目标进行了微调,以解码给定图像的文本。给定web图像 I w I_w Iw, captioner生成合成字幕 T s T_s Ts,每个图像对应一个字幕。
  • Filter是一个Image-grounded text encoder。它与ITCITM目标进行了微调,学习文本是否与图像匹配。Filter去除原始web文本 T w T_w Tw和合成文本 T s T_s Ts中的噪声文本,如果ITM头预测文本与图像不匹配,则认为文本是噪声文本。最后,将过滤后的图像文本对与人工注释的图像文本对结合起来形成一个新的数据集,我们使用它来预训练一个新的模型。

BLIP2

论文: 《BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models》
代码: https://github.com/salesforce/LAVIS/tree/main/projects/blip2

Introduction

BLIP2 是一个通用的且高效的视觉语言预训练(Vision-language pre-training,VLP)模型 : 从现成的冻结的预训练图像编码器和冻结的预训练大型语言模型中引导视觉语言预训练,并使用轻量级查询转换器Q-Former 弥补了语言和视觉两种模态上的差距。

  • 预训练的视觉模型:可以提供高质量的视觉表示(visual representation)
  • 预训练的语言模型:尤其是大语言模型,可以提供强大的语言生成和zero-shot的迁移能力。

为了减少计算成本和解决灾难性遗忘问题,这两个unimodal 模型在预训练过程中保持冻结状态。

  • 为了实现与冻结unimodal 模型的有效视觉语言对齐,提出了一个使用新的两阶段预训练策略进行预训练Querying Transformer (QFormer)

Method

Q-Former是一种轻量级的Transformer,它使用一组可学习的查询向量从冻结图像编码器中提取视觉特征,它充当冻结图像编码器和冻结LLM之间的信息瓶颈,为LLM输出所需文本提供最有用的视觉特征。

Q-Former的两个预训练阶段:
(1) vision-language representation learning stage: 通过冻结的图像编码器执行视觉语言表征学习,强制Q-Former学习与文本最相关的视觉表征。
(2) vision-to-language generative learning stage: 通过将Q-Former的输出连接到一个冻结的LLM来执行视觉到语言的生成学习,并训练Q-Former,使其输出的视觉表示可以被LLM解释。

模型结构

不论图像分辨率是多少,Q-Former 从图像编码器中提取固定数量的输出特征。
如下图所示,Q-Former由两个Transformer子模块组成,它们共享相同的self-attention层:
(1) Image transformer: 与冻结图像编码器交互进行视觉特征提取 (Q-former中左边的框)
(2) Text Transformer: 既可以作为文本编码器又可以作为文本解码器 (Q-former中右边的框)
在这里插入图片描述
创建了一组可学习的query embeddings作为image transformer 的输入。

  • queries 通过self-attention 层实现不同query的相互交互
  • queries 通过cross -attention与冻结的图像特征交互。
  • queries 通过相同的self-attention 与文本交互。

Q-Former预训练第一阶段

在表示学习阶段( vision-language representation learning stage),将Q-Former连接到一个固定的图像编码器,并使用图像-文本对进行预训练。该阶段目标是训练Q-Former,这样查询就可以学习提取文本中信息量最大的视觉表示
受BLIP的启发,在该阶段共同优化了三个共享相同输入格式和模型参数的预训练目标。如下图所示,每个目标在查询和文本之间使用不同的注意力屏蔽策略来控制它们的交互。
在这里插入图片描述

  • Image-Text Contrastive Learning (ITC)
    通过对比正对和负对的图像-文本相似性,学习对齐图像表示和文本表示,最大化它们共同的信息。
    将来自image transformer 的输出查询表示Z与来自text transformer 的文本表示t对齐,其中t是[CLS]令牌的输出嵌入。
    由于Z包含多个输出嵌入(每个查询嵌入一个),我们首先计算每个查询输出与t之间的成对相似度,然后选择最高的一个作为图像-文本相似度。
    为了避免信息泄漏,我们采用unimodal self-attention mask (右图),其中查询和文本不允许彼此看到。
  • Image-grounded Text Generation (ITG)
    训练Q-Former在给定输入图像的条件下生成文本。
    由于Q-Former的体系结构不允许冻结图像编码器和文本标记之间的直接交互,因此生成文本所需的信息必须首先由查询提取,然后通过self-attention层传递给文本标记。因此,使得查询提取与文本信息相关的所有视觉特征。
    使用多模态因果自注意掩码 multimodal causal self-attention mask (中图) 来控制查询-文本交互。
    查询间可以相互交互,但不能处理文本交互。
    每个文本都可以处理所有查询及其前一个文本。还用一个新的[DEC]令牌替换[CLS]令牌,作为第一个文本令牌,向解码任务发出信号。
  • Image-Text Matching (ITM)
    旨在学习图像和文本表示之间的细粒度对齐
    这是一个二元分类任务,其中要求模型预测图像-文本对是正的(匹配)还是负的(不匹配)。
    我们使用双向自关注掩码 bi-directional self-attention mask (左图),所有查询和文本都可以相互关注。
    因此,输出查询嵌入Z捕获多模态信息。我们将每个输出查询嵌入到一个两类线性分类器中以获得logit,并将所有查询的logit平均值作为输出匹配分数。

Q-Former预训练第二阶段

vision-to-language generative learning stage,我们将QFormer (包括冻结图像编码器) 连接到冻结的LLM,以获取LLM的生成语言能力。
在这里插入图片描述
如上图所示,使用一个全连接(FC)层,用于将输出查询嵌入Z线性投影到与LLM的文本嵌入相同的维度。然后将投影后的查询嵌入添加到输入文本嵌入中。它们作为软视觉提示(soft visual prompts),对由Q-Former提取的视觉表示进行条件约束。

由于Q-Former已被预先训练以提取语言信息的视觉表示,因此它有效地充当信息瓶颈,为LLM提供最有用的信息,同时删除无关的视觉信息。这减少了LLM学习视觉语言一致性的负担,从而减轻了灾难性遗忘问题。

我们实验了两种类型的LLM:

  • 基于解码器的LLM
    使用语言建模损失(language modeling loss)进行预训练,其中冻结的LLM的任务是根据Q-Former的视觉表示生成文本。(上图)
  • 基于编码器-解码器的LLM
    使用前缀语言建模损失(prefix language modeling loss)进行预训练,我们将文本分成两部分。前缀文本与可视化表示相连接,作为LLM编码器的输入。后缀文本用作LLM解码器的生成目标。(下图)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1656074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity打开安卓设备不同的设置面板

1,打开安卓设备不同的设置面板,我还贴心的把Android官网的链接放下面了 2,使用也很方便:unity按钮事件上拖这个脚本,注册MyOpenAndroidSettings方法,参数 填 和枚举值相应的数字 // 功能:打开…

【c++】线程池的原理及实现

💻文章目录 📄前言线程池的原理概念工作原理 线程池的实现线程池的基础结构任务队列的实现工作线程的实现 线程池的应用与拓展线程池的拓展 📓总结 📄前言 不知道各位是否有试过点进限时抽奖网站、抢票网站呢?你是否好…

静态分析-RIPS-源码解析记录-02

这部分主要分析scanner.php的逻辑,在token流重构完成后,此时ini_get是否包含auto_prepend_file或者auto_append_file 取出的文件路径将和tokens数组结合,每一个文件都为一个包含require文件名的token数组 接着回到main.php中,此时…

一款功能强大的网络安全综合工具-PotatoTool

一、 简介 这款工具是一款功能强大的网络安全综合工具,旨在为安全从业者、红蓝对抗人员和网络安全爱好者提供全面的网络安全解决方案。它集成了多种实用功能,包括解密、分析、扫描、溯源等,为用户提供了便捷的操作界面和丰富的功能选择。 二…

《Fundamentals of Power Electronics》——状态空间平均法

文献中出现了许多交流变换器建模技术,包括电流注入法、电路平均法和状态空间平均法。尽管给定方法的支持者可能更喜欢用特定形式表示最终结果,但几乎所有方法的最终结果都是等效的。所有人都会赞同,平均和小信号线性化是PWM变换器建模的关键步…

厚德提问大佬答4:AI绘画生成的心得

遇到难题不要怕!厚德提问大佬答! 厚德提问大佬答 你是否对AI绘画感兴趣却无从下手?是否有很多疑问却苦于没有大佬解答带你飞?从此刻开始这些问题都将迎刃而解!你感兴趣的话题,厚德云替你问,你解…

Element-plus修改input的placeholder文字颜色

需求 代码 .el-input__inner::placeholder {color: #666f8d !important; }

图像处理--空域滤波增强(原理)

一、均值滤波 线性滤波算法,采用的主要是邻域平均法。基本思想是使用几个像素灰度的某种平均值来代替一个原来像素的灰度值。可以新建一个MN的窗口以为中心,这个窗口S就是的邻域。假设新的新的像素灰度值为,则计算公式为 1.1 简单平均法 就是…

堆的应用2——TOPK问题

TOPK问题 TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。 比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 情况1——数据量小 对于Top-K问题,能想到的最简单直接的方式就…

品鉴中的文化碰撞:如何理解和欣赏不同文化背景下的红酒

红酒作为世界各地广泛生产的产品,具有丰富的文化内涵。不同国家、地区和民族的红酒文化各具特色,反映了当地的历史、传统、习俗和生活方式。在品鉴云仓酒庄雷盛红酒时,理解和欣赏不同文化背景下的红酒是提升品鉴体验的重要一环。 首先&#x…

【Java orm 框架比较】九 新增wood框架对比

【Java orm 框架比较】九 新增wood框架对比 本次新增wood 框架测试 测试数据存储、分页查询,文档及框架比较稳定半天时间加入测试使用 迁移到(https://gitee.com/wujiawei1207537021/spring-orm-integration-compare) orm框架使用性能比较…

【STM32 |GPIO】GPIO结构、GPIO输出

目录 GPIO简介 GPIO的基本结构 GPIO位结构(每一位的具体电路结构) 输入 上拉和下拉电阻 斯密特触发器 ​编辑 输出 GPIO模式 ​编辑 浮空输入、上拉输入、下拉输入 模拟输入 开漏输出和推挽输出 复用开漏输出和复用推挽输出 LED和蜂鸣器…

代码随想录算法训练营第36期DAY22

DAY22 654最大二叉树 自己做的时候忽略了:nums.length>1的题给条件。所以每次递归都要判断是否size()>1,不要空的。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *rig…

JSpdf,前端下载大量表格数据pdf文件,不创建dom

数据量太大使用dom》canvas》image》pdf.addimage方法弊端是canvas超出 浏览器承受像素会图片损害,只能将其切割转成小块的canvas,每一次调用html2canvas等待时间都很长累积时间更长,虽然最终可以做到抽取最小dom节点转canvas拼接数据,但是死…

[附源码+视频教程]暗黑纪元H5手游_架设搭建_畅玩三网全通西方3D世界_带GM

本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了 一. 演示视频 暗黑纪…

Android 查看CUP占用率

查看每个进程CUP占用率的几种方式,由于自己充电界面老是导致整机温度过高,后面发现自己的线程一直在跑,相当于死循环,后面加上sleep才得以改善;先看看几种查询方式吧。 1、adb shell top 2、adb shell busybox top 3、adb shell …

C++类和对象中篇

🐇 🔥博客主页: 云曦 📋系列专栏:[C] 💨路漫漫其修远兮 吾将而求索 💛 感谢大家👍点赞 😋关注📝评论 文章目录 📔前言📔1、类的六个…

微服务学习笔记

微服务学习笔记 文章目录 微服务学习笔记认识微服务微服务技术栈微服务学习要点微服务远程调用1)注册RestTemplate2) 服务远程调用RestTemplate Eureka注册中心简介操作过程搭建EurekaServer注册user-service在order-service完成服务拉取 Ribbon负载均衡IRule负载均衡策略饥饿加…

在线扭蛋机小程序:商家稳占市场的新突破口

近几年,扭蛋机进入了爆发期,动漫、游戏的发展更是推动了市场的发展,我国扭蛋机正在蓬勃发展中。 不过,在市场规模扩大下,扭蛋机行业的竞争力也在同时加大,企业商家需要在市场竞争中寻求发展新思路&#xf…

SEQUENTIAL CONSISTENCY----SC

SC模型是最直观的memory consistency model; 什么是single core sequential? 真正的执行顺序,和PO的顺序,是相同的; 什么是multi core sequential consistent? the operations of each individual processor (core) appear in this seq…