BLIP-2论文精读

概述

由于大规模模型的端到端训练,视觉和语言预训练的成本越来越高,BLIP-2是一种通用且高效的预训练策略,可以从现成的冻结的预训练图像编码器和冻结的大型语言模型引导视觉语言预训练。

模型主体框架

在这里插入图片描述

BLIP-2采用了一个轻量级的查询转换器Q-Former弥补了模态上的差距。该转换器分两个阶段进行预训练:第一个阶段从冻结的图像编码器中引导视觉语言表示学习;第二个阶段从一个冻结的语言模型中引导视觉到语言的生成学习,这可以帮助BLIP-2形成零样本指示的图像-文本生成。

基于冻结图像编码器的视觉语言表征学习阶段

在这里插入图片描述

BLIP-2提出Q-Former作为可训练模块,以弥补冻结图像编码器和冻结LLM之间的差距。它从图像编码器中提取固定数量的输出特征。Q-Former由两个共享相同自注意力层的transformer子模块组成:一个图像transformer架构和冻结的图像编码器进行交互提取视觉特征;一个文本transfomer,既作为文本编码器又作为文本解码器。

  • BLIP-2创建了一组可学习查询嵌入作为图像transformer的输入。查询通过自注意力层相互交互,并通过交叉注意力层(每隔一个transformer块嵌入)与冻结的图像特征进行交互。
  • 查询还可以通过相同的自注意力层与文本交互。根据预训练任务的不同,BLIP-2应用不同的注意力掩码来控制查询-文本交互。

在BLIP-2的实验中,使用了32个查询,每个查询的维度为768(与Q-Former的隐藏层维度相同)。输出查询表示的大小Z(32 X 768)比冻结的图像特征大小(257 X 1024 ViT-L/14)要小的多,这种瓶颈结构与预训练目标一起工作,使查询提取与文本最相关的视觉信息。

损失函数

不同的掩码机制

图像文本对比学习(ITC)
图像文本对比学习学习对齐图像表示和文本表示,使它们的相互信息最大化。它通过对比正对和负对的图像-文本相似性来实现这一点。我们将来自图像transformer的输出查询表示Z与来自文本transformer的文本表示t对齐。其中t是[cls]令牌的输出嵌入。由于Z包含了多个输出嵌入(每个查询具有一个嵌入),我们首先计算每个查询输出与t之间的成对相似度,然后选择最高的一个作为图像-文本相似度。为了避免信息泄露,BLIP-2使用了单模态自注意力掩码,其中查询和文本不允许相互看到。

基于图像的文本生成(ITG)
基于图像的文本生成(ITG)损失训练Q-Former在给定输入图像的条件下生成文本。由于Q-Former的体系结构不允许冻结图像编码器和文本标记之间的直接交互,因此生成文本所需的信息必须首先由查询提取,然后通过自注意力层传递给文本标记。因此,查询被迫提取视觉特征来捕获关于文本的所有信息。BLIP-2使用了一个多模态因果自注意掩码来控制查询-文本交互,查询可以相互关注,但不能关注文本标记。每个文本标记都可以关注所有查询以及其之前的文本标记。BLIP-2还将[cls]令牌替换为一个新的[dec]令牌作为第一个文本令牌来知识解码任务。

图像文本匹配(ITM)
*图像文本匹配旨在学习图像和文本表示之间的细粒度对齐,这是一个二元分类任务,要求模型预测图像-文本对是匹配的还是不匹配的。BLIP-2使用双向自注意力掩码,其中所有查询和文本都可以相互关注。输出查询嵌入Z从而捕获多模态信息。BLIP-2将每个输出查询嵌入输入到一个两类线性分类器中,得到一个logits,并将所有查询中的logit平均为输出匹配分数。

从冻结的LLM中引导视觉到语言的生成学习

在这里插入图片描述

在生成预训练阶段,BLIP-2将Q-Former(附带冻结图像编码器)连接到冻结的LLM,以获取LLM的生成语言能力。BLIP-2使用全连接(FC)层将输出查询嵌入Z线性投影到与LLM的文本嵌入相同的维度。然后将投影的查询嵌入预处理为输入文本嵌入。它们起到了软视觉提示的作用,将LLM限制在Q-Former提取的视觉表示上。由于Q-Former经过预训练可以提取语言信息性的视觉表示,它有效的充当了一个信息瓶颈,将最有用的信息提供给LLM,同时去除不相关的视觉信息。这减轻了LLM学习视觉语言对齐的负担,从而减轻了灾难性的遗忘问题。
BLIP-2实验了两种类型的LLMs:基于解码器的LLMs和基于编码器-解码器的LLMs。

  • 对于基于解码器的LLM,BLIP-2使用语言建模损失进行预训练,其中冻结的LLM的任务是根据Q-Former的视觉表示生成文本。
  • 对于基于编码器-解码器的LLMs,BLIP-2使用前缀语言建模损失进行预训练,BLIP-2将文本分成两部。前缀文本与可视化表示相连接,作为LLM编码器的输入;后缀文本用作LLM解码器的生成目标。

参考文献

github地址
论文地址

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

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

相关文章

【Docker】Docker的网络与资源控制

Docker网络实现原理 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内…

什么是外汇杠杆交易?

外汇杠杆交易是目前的外汇交易市场中,投资者进行外汇交易的重要方式,通过这样的交易方式,投资者就有机会进行以小搏大的交易,他们的交易就有可能会更成功,因此,投资者应该对这样的交易方式进行了解&#xf…

【车展直播(1)】电机的知识

背景,最近在2024 北京车展,然后需要做一些直播讲解。 首先需要关注的是电动车的电机。其实这个东西吧,我不能算是完全知道,但是自己做做PWM 控制器,MOS管驱动,做两轮电机Motor 的控制这种基础的工作还是有…

Docker数据管理+镜像的创建

Docker容器数据管理方式 数据卷 数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主的目录挂载到数据卷上,对数据卷的修改操作立即可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷…

C#反射应用

1.根据类名名称生成类实例 CreateInstance后面的参数部分一定要和所构造的类参数数量对应,即使设置参数默认值,也不可省略。 2.只知道类名,需要将该类作为参数调用泛型接口。 3.只知道类名,需要将该类的数组作为参数调用泛型接口…

CentOS yum make cache/clean all 提示yum lock

错误信息 Another app is currently holding the yum lock; waiting for it to exit 问题描述: 已加载插件:fastestmirror Repository base is listed more than once in the configuration Repository updates is listed more than once in the config…

数组和指针经典笔试题讲解

目录 创作不易,如对您有帮助,还望一键三连,谢谢!!! 1.sizeof和strlen的对比 1.1sizeof 1.2strlen 1.3sizeof和strlen对比 2.数组笔试题讲解 数组名的理解 2.1一维数组 2.2字符数组 题目一&#x…

MacOS 文件系统种类及介绍

MacOS 文件系统种类 详细介绍 详细介绍 从图片中我们可以看到一个文件系统选择器的界面,列出了多种不同的文件系统选项。这些文件系统各有其特点和用途,以下是它们之间的主要区别: APFS:Apple File System,是苹果公司为…

移动零 ----双指针

题目链接 题目: 分析: 上述题目, 是将数组分块, 分为前半非零, 后半零, 这种数组分块题我们首先想到双指针 思路: 定义两个指针, 一个cur 一个dest, cur用来遍历数组, dest 指向分界处的第一个零位置, 将数组分块首先让cur 0; dest 0;cur 遍历数组, 如果cur 0, 那么cur…

windows环境下安装Apache

首先apache官网下载地址:http://www.apachelounge.com/download/按照自己的电脑操作系统来安装 这里我安装的是win64 主版本是2.4的apache。 然后解压压缩包到一个全英文的路径下!!!一定一定不要有中文 中文符号也不要有&#xff…

Vue入门到关门之Vue介绍与使用

一、vue框架介绍 1、什么是Vue? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与…

OpenHarmony语言基础类库【@ohos.util.PlainArray (非线性容器PlainArray)】

PlainArray可用于存储具有关联关系的key-value键值对集合,存储元素中key值唯一,key值类型为number类型,每个key对应一个value。 PlainArray依据泛型定义,采用轻量级结构,集合中key值的查找依赖于二分查找算法&#xf…

65、二分-在排序数组中查找元素的第一个和最后一个位置

思路: 寻找数组中的目标值第一个和最后一个,如果不存在哪儿就是返回-1。 第一种方式直接线性遍历,找到目标值记录当前下标。继续寻找下一个不等于目标值,说明下一个目标值的下标就是结尾。直接返回。 第二种方式通过使用二分法…

《HCIP-openEuler实验指导手册》1.7 Apache虚拟主机配置

知识点 配置步骤 需求 域名访问目录test1.com/home/source/test1test2.com/home/source/test2test3.com/home/source/test3 创建配置文件 touch /etc/httpd/conf.d/vhost.conf vim /etc/httpd/conf.d/vhost.conf文件内容如下 <VirtualHost *.81> ServerName test1.c…

基于Python+Selenium的web自动化测试框架详解

简介 随着Web应用程序的广泛应用和不断发展&#xff0c;Web自动化测试已经成为软件质量保证中的一个重要环节。而PythonSelenium作为一组强大的工具和框架&#xff0c;已经成为Web自动化测试领域中的热门技术之一。PythonSelenium可以帮助我们快速、准确地模拟用户行为和操作&…

电脑教程1

一、介绍几个桌面上面的软件 1、火绒&#xff1a;主要用于电脑的安全防护和广告拦截 1.1 广告拦截 1.打开火绒软件点击安全工具 点击弹窗拦截 点击截图拦截 拦截具体的小广告 2、向日葵远程控制&#xff1a;可以通过这个软件进行远程协助 可以自己去了解下 这个软件不要…

BP算法-即误差反向传播法简介

BP算法-即误差反向传播法简介 1986年 反向传播算法&#xff08;back propagation&#xff0c;简称BP模型&#xff09;是1986年由Rumelhart、Hinton和Williams为首的科学家提出的概念&#xff0c;是用于多层神经网络训练的著名算法&#xff0c;有理论依据坚实、推导过程严谨、概…

java spring 07 createBean()(加载class文件,重写方法,实例化前)和doCreateBean()

01.createBean方法 protected Object createBean(String beanName, RootBeanDefinition mbd, Nullable Object[] args)throws BeanCreationException {if (logger.isTraceEnabled()) {logger.trace("Creating instance of bean " beanName "");}RootBea…

面试算法题精讲:最长公共子序列

面试算法题精讲&#xff1a;最长公共子序列 题面 题目来源&#xff1a;1143. 最长公共子序列 题目描述&#xff1a; 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长公共子序列&#xff08;LCS&#xff09;的长度。如果不存在公共子序列 &#xff0c;返回…

C++ ─── 匿名对象+变量的创建顺序

目录 1. 匿名对象&#xff08;临时对象&#xff09; 2. 编译器的优化 3.变量的创建与销毁 1. 匿名对象&#xff08;临时对象&#xff09; 我们先来看有名对象的创建 Date d1; Date d2(2024,4,27);匿名对象的创建 Date(2024,56,1); 生成了一个匿名对象&#xff0c;执行完Da…