论文阅读 BLIP-2

news2024/11/25 12:58:26

Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models
使用冻结的图像编码器和大型语言模型进行语言-图像预训练的引导

BLIP-2 通过一个轻量级的查询变换器弥合了模态之间的差距。
Querying Transformer
第一阶段通过冻结的图像编码器引导视觉-语言表示学习。
第二阶段通过一个冻结的语言模型启动从视觉到语言的生成学习。

在这里插入图片描述

在这里插入图片描述

3.1 模型结构

Q-Former:从图像编码器中提取固定数量的输出特征,与输入图像的分辨率无关。

两个共享相同自注意力层的Transformer子模块。
一个与冻结的图像编码器交互的图像transformer、用于图像特征抽取;
一个文本transformer、可以兼作文本编码器和文本解码器。

我们在图像变换器中创建一组固定数量的可学习查询嵌入作为输入。
查询通过自注意力层相互作用,并通过交叉注意力层(每隔一个变换器块插入)与冻结的图像特征交互。
查询还可以通过相同的自注意力层与文本交互。
根据预训练任务的不同,我们应用不同的自注意力掩码来控制查询文本的交互。

我们将QFormer初始化为预训练的BERTbase(Devlin等,2019)权重,而交叉注意力层则随机初始化。Q-Former总共有1.88亿个参数(188M)。请注意,查询被视为模型参数。【对比qwenvl中的 VL adaptor 参数量是 0.08B = 80M

在我们的实验中,我们使用了32个查询,每个查询的维度为768(与Q-Former的隐藏维度相同)。

我们用Z表示输出的查询表示。Z的大小(32×768)远小于冻结的图像特征的大小(例如,ViT-L/14的大小为257×1024)。这种瓶颈架构与我们的预训练目标相结合,迫使查询提取与文本最相关的视觉信息。

3.2 第一阶段通过 冻结的图像编码器 引导 视觉-语言表示学习

在表征学习阶段,我们把Q-Former连接到一个冻结的图像编码器,并使用 图像-文本对 进行预训练。

我们的目标是训练Q-Former,使查询能够学会提取对文本最具信息性的视觉表示。灵感来自BLIP。

我们联合优化了三个预训练目标,它们共享相同的输入格式和模型参数。

每个目标使用不同的注意力掩蔽策略来控制查询与文本之间的交互。

image text contrastive learning (ITC)

该方法学习使图像表示和文本表示对齐,以最大程度地提高它们之间的互信息。

它通过 对比 正向对的图像-文本相似度 和 负向对的相似度来实现这一点。

由于Z包含多个输出嵌入(每个查询一个),我们首先计算每个查询输出与t之间的pairwise相似性,然后选择最高的一作为图像-文本相似度

为了避免信息泄露,我们使用了单模态自注意力掩码,其中查询和文本不允许相互可见

由于使用了冻结的图像编码器,与端到端方法相比,我们可以在每个GPU上适应更多的样本。 因此,我们使用批次内负样本,而不是BLIP中的动量队列。(增加比较次数)

Image-grounded text generation (ITG)

这个损失函数训练Q-Former生成文本,给定输入图像作为条件。

由于Q-Former的架构不允许冻结的图像编码器和文本令牌之间有直接的交互,因此必须先由查询提取生成文本所需的信息,然后通过自注意力层将这些信息传递给文本令牌。因此,查询必须提取能够捕获文本所有信息的视觉特征。

我们使用多模态因果自注意力掩码来控制查询文本交互,类似于UniLM中使用的那种。查询可以互相关注,但不能关注文本标记。每个文本令牌可以关注所有查询及其之前的文本令牌。我们还将[CLS]标记替换为新的[DEC]标记,作为第一个文本标记,以指示解码任务。

Image-Text Matching(ITM)

目标是学习图像和文本表示之间的细粒度对齐。这是一个二分类任务,模型需要预测一个图像-文本对是否为正(匹配)或负(不匹配)。

我们使用双向自注意力掩码,其中所有查询和文本可以相互关注。

输出查询嵌入Z因此捕获了多模态信息。

我们将每个输出查询嵌入输入到一个二元线性分类器中,以获取logit,并将所有查询的logit平均作为输出匹配分数。

我们采用了 前者的研究方法 的困难负样本挖掘策略来生成有意义的负对。

3.3 第二阶段通过一个冻结的语言模型启动从视觉到语言的生成学习

在生成预训练阶段,我们将QFormer(附带冻结的图像编码器)连接到一个冻结的LLM,以获取LLM的生成语言能力。

我们使用全连接(FC)层将输出查询嵌入Z线性投影到与LLM文本嵌入相同的维度。

将预测的查询嵌入添加到输入文本嵌入的前面。它们作为软视觉提示,条件化LLM(大语言模型)依赖于Q-Former提取的视觉表示。

在这里插入图片描述

由于Q-Former已经预训练为提取富含语言信息的视觉表示,它有效地充当了一个信息瓶颈,向LLM提供最有用的信息,同时去除不相关的视觉信息。

这减轻了LLM学习视觉-语言对齐的负担,从而缓解了灾难性遗忘问题。

我们使用两种类型的LLMs进行实验:基于解码器的LLMs和基于编码器-解码器的LLMs。

对于基于解码器的LLMs,我们使用语言建模损失进行预训练,其中冷冻的LLM的任务是根据Q-Former的视觉表示生成文本。

对于基于编码器-解码器的LLMs,我们使用前缀语言建模损失进行预训练,将文本拆分为两部分。

前缀文本与视觉表示连接作为LLM编码器的输入。后缀文本用作LLM解码器的生成目标。

3.4 模型与训练

4. 实验

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

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

相关文章

高纯PGME和PGMEA市场规模:2023年全球市场规模为6.43亿美元

研究对象:高纯PGME和PGMEA行业 高纯PGME(丙二醇甲醚)和PGMEA(丙二醇甲醚醋酸酯)是重要的有机溶剂,广泛应用于半导体和面板制造领域,尤其是在光刻胶和清洗剂中。高纯度的PGME和PGMEA对于确保电子…

软件测试面试题600多条及答案

这些问题都是软件测试领域常见的面试问题,以下是一些可能的答案: 什么是软件测试? 软件测试是一系列活动,旨在评估软件产品的质量和性能,以确保它符合规定的需求和标准。它包括执行程序或系统以验证其满足规定需求的过…

javaWeb-Mybatis操作

1.删除 2.新增 注意: 1. 使用对象来接收 2.插入的数据的名字,要和对象的属性名一致 3.新增(主键返回) 4.更新 5.查询(根据id查询) 会把查询到的数据映射到字段上。 6.查询(条件查询) %张%-->%${name}%

前端必知必会-Bootstrap 5 工具提示Tooltip

文章目录 Bootstrap 5 工具提示如何创建工具提示定位工具提示 总结 Bootstrap 5 工具提示 工具提示组件是一个小的弹出框,当用户将鼠标指针移到元素上时会出现: 如何创建工具提示 要创建工具提示,请将 data-bs-toggle“tooltip” 属性添加…

人工智能长期记忆的新突破:HippoRAG的创新框架

人工智能咨询培训老师叶梓 转载标明出处 大模型(LLMs)在预训练后,如何有效地整合大量新经验,同时避免灾难性遗忘,一直是人工智能领域的难题。尽管已有的检索增强生成(RAG)方法为LLMs提供了长期…

云轴科技ZStack入选信通院《高质量数字化转型产品及服务全景图》AI大模型图谱

近日,由中国互联网协会中小企业发展工作委员会主办的“2024大模型数字生态发展大会暨铸基计划年中会议”在北京成功召开。会上发布了中国信通院在大模型数字化等领域的多项工作成果,其中重点发布了《高质量数字化转型产品及服务全景图(2024上…

解决重写QSilder::sliderPress后点击位置与滑块显示位置不一样的问题

如下代码所示,我是用的是事件过滤器,也可以重写QSlider。 bool KuGouApp::eventFilter(QObject *watched, QEvent *event) {if(watched ui->progressSlider) {if (event->type()QEvent::MouseButtonPress) //判断类型{auto mouseEvent…

【封装案例】点和圆的关系

文章目录 前言1、point.h文件2、circle.h文件3、point.cpp文件4、circle.cpp文件5、主函数和全局函数6、测试 前言 本篇主要是用C实现一个判断点和圆关系的程序。 思路:已知点和圆心的坐标,通过比较两点间的距离和圆半径的大小,判断两者的关…

ubuntu下实时查看CPU,内存(Mem)和GPU的利用率

一、实时查看CPU和内存(Mem)利用率 htop官网:htop - an interactive process viewer sudo apt-get install htop htop ①. 顶部状态栏(System Metrics Overview) 这个区域显示系统的全局资源使用情况,包括…

18770 差值最大

### 思路 为了找到两个数x和y使得x - y的值最大,并且x在y的右侧,我们可以使用以下方法: 1. 从右向左遍历数组,记录当前遍历到的最大值max_right。 2. 对于每个元素a[i],计算max_right - a[i],并更新最大差…

我的研究生周报模板

2022.12.12——2022.12.18周报 本周计划 文献阅读:(说明是打算读哪方面的论文) 实验:(打算做什么实验,目的是什么) 项目:(打算完成项目中哪一部分) 本周进…

fastadmin 多商户模式下侧边栏跳转路径BUG

记录:仅作自己项目记录,在一个域名下部署多套项目时,若是多商户模式项目会出现跳转路径问题。 修改 \manystore\library\Auth.php 文件的 getSidebar 方法 // 1 改为: $v[url] isset($v[url]) && $v[url] ? $v[url] :…

Reqable抓包演示

1.Reqable下载 官网:Reqable 下载对应平台版本即可。 多个客户端。 2.使用教程 打开后如下图所示 根据提示安装完证书后即可使用。 这里以小猿口算的练习模式的抓包为例 1.打开雷电模拟器 在模拟器上安装Reqable,并安装证书,一定要安装…

【C++】基于红黑树封装set和map

🚀个人主页:小羊 🚀所属专栏:C 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 前言一、更高维度的泛型二、模版参数三、比较逻辑的重写四、迭代器4.1 const迭代器4.2 重载4.3 - -重载 五、完整代…

EXCEL SUM系列求和函数大全

大家好,这里是效率办公指南! 📊 在数据分析中,求和是一项基础而频繁的操作。Excel 提供了一系列求和函数,可以帮助我们快速汇总数据。今天,我们将介绍 Excel 中常用的求和函数,包括它们的语法和…

java 自定义填充excel并导出

首先在resources下面放一个excel模板 1. 方法签名和请求映射 RequestMapping(value "/ExportXls") public ResponseEntity<byte[]> rwzcExportXls(HttpServletRequest request, RequestBody JSONArray jsonArray) throws IOException { RequestMapping(val…

YOLO11改进 | 注意力机制 | 结合静态和动态上下文信息的注意力机制

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 上下文Transformer&#xff08;CoT&…

【MySQL 保姆级教学】数据库基础(重点)(2)

目录 1. 什么是数据库1.1 数据库的定义1.2 mysql 和 mysqld1.3 文件和数据库 2. 数据库的分类3. 连接数据库3.1 数据库的安装3.2 连接服务器&#xff08;数据库&#xff09;3.3 服务器 数据库 表 三者的关系 4. 数据库-表 和目录-文件 的关系5. MySQL 框架6. SQL 分类7. 储存引…

人工智能AI等级划分

人工智能等级划分 第一级“聊天机器人”。 第二级“推理者”水平。这一级别的AI系统具备类似拥有博士学位教育但未配备任何工具的人类&#xff0c;能执行基础的问题解决任务。据悉&#xff0c;OpenAI的管理层在会议中还向员工们展示了涉及GPT-4 AI模型的一个研究项目&#xff…

【面试宝典】深入Python高级:直戳痛点的题目演示(下)

目录 &#x1f354; Python下多线程的限制以及多进程中传递参数的⽅式 &#x1f354; Python是如何进⾏内存管理的&#xff1f; &#x1f354; Python⾥⾯如何拷⻉⼀个对象&#xff1f; &#x1f354; Python⾥⾯search()和match()的区别&#xff1f; &#x1f354; lambd…