BLIP和BLIP2 论文讲解

文章目录

  • 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解码器的生成目标。(下图)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

详解BOM编程

华子目录 BOM编程window对象常见的window对象的属性常见的window对象的方法注意 history对象history对象的属性history对象的方法 screen 对象navigator 对象属性方法 location对象属性方法示例 BOM编程 JavaScript本质是在浏览器中运行,所以JavaScript提供了BOM&a…

一文详解FDA邮件认证证书的重要性及其应用

随着全球化和电子商务的飞速发展,跨国贸易和沟通变得越来越频繁。在这个过程中,邮件作为重要的沟通工具,其安全性和可信度成为了各方关注的焦点。FDA(美国食品药品监督管理局)邮件认证证书就是在这一背景下应运而生的一…

1W 3KVDC 隔离 稳压单输出 DC/DC 电源模块——TPV-SAR 系列

TPV-SAR系列产品是专门针对PCB上分布式电源系统中需要与输入电源隔离且输出精度要求较高的电源应用场合而设计。该产品适用于;1)输入电源的电压变化≤5%;2)输入输出之前要求隔离电压≥3000VDC;3)对输出电压…

mac电脑如何安装java

1、检查当前系统的 Java 版本 打开终端,输入以下命令查看当前 Java 版本 /usr/bin/java -version 2、前往 Java 官网下载 Java JDK 打开 Java 官网 (https://www.java.com/zh-CN/download/) 并下载最新版本的 Java JDK。 3、安装 Java JDK 双击下载的 .dmg 文件启动安装程序…

【全开源】Java共享台信息共享系统源码

特色功能 信息整合与共享:该平台提供一站式信息整合服务,将各种类型的信息资源进行汇聚,方便用户快速查找和获取所需资源。多种共享功能:支持信息共享、共享车位、共享会议室、共享电动车等多种共享功能,提高资源利用…

Windows系统本地部署DrawDB数据库设计工具并实现无公网IP远程访问

文章目录 1. Windows本地部署DrawDB2. 安装Cpolar内网穿透3. 实现公网访问DrawDB4. 固定DrawDB公网地址 开发中很多时候都会使用到数据库,所以选择一个好用的数据库设计工具会让工作效率翻倍。在当今数字化时代,数据库管理是许多企业和个人项目的核心。设…

vue-fontawesome-elementui-icon-picker选择icon框架

第一步:安装vue-fontawesome-elementui-icon-picker依赖 npm install vue-fontawesome-elementui-icon-picker --save-dev 第二步:main.js配置 (放在element ui引入之后) import iconPicker from vue-fontawesome-elementui-icon-picker; Vue.use(ico…

Python-VBA函数之旅-setattr函数

目录 一、setattr函数的常见应用场景 二、setattr函数使用注意事项 三、如何用好setattr函数? 1、setattr函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页: https://blog.csdn.net/ygb_1024?…

笨方法自学python(六)

上一节中出现了\n,这个作用是换行。\后面带不同字符有不同的作用,我们先简单了解几个, 使用反斜杠 \ (back-slash) 可以将难打印出来的字符放到字符串。针对不同的符号有很多这样的所谓“转义序列(escape sequences)”,我们来练习…

OPC :快速上手

本系列为OPC技术的快速上以及持续研究和技术实战专栏,将不定期更新。 本章节提供OPC系列技术博文的快速导航。 《OPC服务器简介和入门介绍》 《物联网平台如何为OPC服务器创造新生命力》 《OPC服务器开发之WtOPCSvr——开发文档(1)》 《OPC服…

使用flutter开发一个U盘文件管理APP,只解析图片文件

今天教大家用flutter撸一个U盘文件管理APP,需求是这样的: 当我在Android设备上插入U盘后,我能在APP中打开U盘的文件目录,并且能进入对应目录的下一级目录,如果下级目录下有图片文件,我就对这个图片文件进行解析,并展示出来。 需求了解后,先上个效果图: 效果图看完后,…

海外媒体发稿:7个出口贸易媒体发稿推广必备技巧-华媒舍

在如今全球化的经济环境中,出口贸易在各个国家的经济中占据了重要地位。作为出口贸易从业者,我们都明白推广产品和品牌对于成功开拓国际市场至关重要。而在推广方面,媒体发稿则是一种常见而有效的方式。本文将分享7个出口贸易媒体发稿推广的必…

Spark云计算平台Databricks使用,创建workspace和Compute计算集群(Spark集群)

Databricks,是属于 Spark 的商业化公司,由美国加州大学伯克利 AMP 实验室的 Spark 大数据处理系统多位创始人联合创立。Databricks 致力于提供基于 Spark 的云服务,可用于数据集成,数据管道等任务。 1 创建workspace 点击创建wor…

STM32F4xx开发学习_USART串口通讯

USART串口通讯 USART简介 USART(universal synchronous asynchronous receiver transmitter),通用同步异步接收发射机,是一种全双工异步通信串行通讯方式,是STM32内部集成的硬件外设,以帧格式传输数据。搭…

泛微E9开发 通过点击按钮来复制选择的明细行

泛微E9开发 通过点击按钮来复制选择的明细行 复制明细行功能背景展示效果实现方法 复制明细行 功能背景 用户可以通过“复制明细”按钮来实现新增选择的明细行,并且新增明细行的数据跟选择的数据完全一样,具体操作如下图所示: 手动新增明细…

图像ISP——AGC参数解析

前言 AWB和AGC是两种常见的自动调整功能。AWB用于自动调整图像的白平衡,以确保颜色在不同光照条件下仍然看起来自然。而AGC则用于自动调整图像的增益,以在不同的亮度条件下保持适当的曝光。 代码例程 static AWB_AGC_TABLE_S g_stAwbAgcTable {/* bvali…

关于位操作符的实际应用<C语言>

前言 位操作符在C语言初学阶段相对其他操作符来说,是一种难度比较大的操作符,且运用较少的一类操作符,但是位操作符并不是“一无是处”,合理运用的位操作符,在某些场景下可以优化算法,提高代码的执行效率&a…

介绍适用于 Node.js 的 Elastic OpenTelemetry 发行版

作者:来自 Elastic Trent Mick 我们很高兴地宣布推出 Elastic OpenTelemetry Distribution for Node.js 的 alpha 版本。 该发行版是 OpenTelemetry Node.js SDK 的轻量级包装,可以让你更轻松地开始使用 OpenTelemetry 来观察 Node.js 应用程序。 背景 …

recycleview和banner新闻列表轮播图

说明:最近碰到一个需求,弄一个新闻列表和轮播图,在首页显示,并且需要json解析,图片下载,轮播图和新闻列表一起滑动 ui效果图: 文件说明: step1:引用依赖包 图片下载 json解析 轮播…

idea无法识别加载pom.xml文件

有时idea无法识别加载pom.xml文件,直接打开pom.xml文件,然后添加到maven就行