19、BLIP-2

简介

github
在这里插入图片描述

 通过利用预训练的视觉模型和语言模型来提升多模态效果和降低训练成本,预训练的视觉模型能够提供高质量的视觉表征,预训练的语言模型则提供了强大的语言生成能力。

实现过程

在这里插入图片描述
 为了弥合模态差距,提出了一个分两个阶段预训练的 Querying Transformer (Q-Former):

  1. 使用冻结Image Transformer的视觉语言表示学习阶段
  2. 使用冻结LLM的视觉到语言生成学习阶段

model

 Q-Former由两个Transformer子模块组成,它们共享相同的自关注层:

  1. 与冻结Image Encoder交互以提取视觉特征的Image Transformer
  2. 既可以作为Image Encoder又可以作为Image Decoder的Text Transformer

 queries通过 self-attention layers 相互交互,并通过 cross-attention layers (每隔一个转换块插入)与冻结的图像特征交互。queries 还可以通过相同的 self-attention layers 与文本交互。

 根据预训练任务的不同,应用不同的 self-attention 掩码来控制 query-text 交互。使用 B E R T b a s e BERT_{base} BERTbase 的预训练权重初始化QFormer ,而 cross-attention layers 是随机初始化的。Q-Former共包含188M个参数。queries 被视为模型参数。

 论文中使用32个queries维度为768,与Q-Former的中间层维度一样,其输出的 Z 的大小(32 × 768)远远小于冻结图像特征的大小(例如viti - l /14的257 × 1024)

Training

 为了减少计算成本并避免灾难性遗忘的问题,BLIP-2 在预训练时冻结预训练图像模型和语言模型,但是,简单地冻结预训练模型参数会导致视觉特征和文本特征难以对齐,为此BLIP-2提出两阶段预训练 Q-Former 来弥补模态差距:表示学习阶段和生成学习阶段。

表示学习阶段

 在表示学习阶段,将 Q-Former 连接到冻结的 Image Encoder,训练集为图像-文本对,通过联合优化三个预训练目标,在Query和Text之间分别采用不同的注意力掩码策略,从而控制Image Transformer和Text Transformer的交互方式

Image-Text Contrastive Learning (ITC)

ITC的优化目标是对齐图像嵌入和文本嵌入,将来自Image Transformer输出的Query嵌入 z 与来自Text Transformer输出的文本嵌入 t 对齐,为了避免信息泄漏,ITC采用了单模态自注意掩码,不允许Query和Text相互注意。具体来说,Text Transformer的文本嵌入是 [CLS] 标记的输出嵌入,而Query嵌入则包含多个输出嵌入,因此首先计算每个Query输嵌入与文本嵌入之间的相似度,然后选择最高的一个作为图像-文本相似度。

Image-grounded Text Generation (ITG)

ITG 是在给定输入图像作为条件的情况下,训练 Q-Former 生成文本,迫使Query提取包含文本信息的视觉特征。由于 Q-Former 的架构不允许冻结的图像编码器和文本标记之间的直接交互,因此生成文本所需的信息必须首先由Query提取,然后通过 self-attention layers 传递给文本标记。ITG采用多模态Causal Attention掩码来控制Query和Text的交互,Query可以相互关注,但不能关注Text标记,每个Text标记都可以处理所有Query及其前面的Text标记。这里将 [CLS] 标记替换为新的 [DEC] 标记,作为第一个文本标记来指示解码任务。

Image-Text Matching (ITM)

ITM是一个二元分类任务,通过预测图像-文本对是正匹配还是负匹配,学习图像和文本表示之间的细粒度对齐。这里将Image Transformer输出的每个Query嵌入输入到一个二类线性分类器中以获得对应的logit,然后将所有的logit平均,再计算匹配分数。ITM使用 bi-directional self-attention 掩码,所有Query和Text都可以相互关注。

生成学习阶段

 在生成预训练阶段,将 Q-Former连接到冻结的 LLM,以利用 LLM 的语言生成能力。这里使用全连接层将输出的Query嵌入线性投影到与 LLM 的文本嵌入相同的维度,然后将投影的Query嵌入添加到输入文本嵌入前面。由于 Q-Former 已经过预训练,可以提取包含语言信息的视觉表示,因此它可以有效地充当信息瓶颈,将最有用的信息提供给 LLM,同时删除不相关的视觉信息,减轻了 LLM 学习视觉语言对齐的负担。
在这里插入图片描述
 BLIP-2试验了两种类型的 LLM:基于解码器的 LLM 和基于编码器-解码器的 LLM。对于基于解码器的 LLM,使用语言建模损失进行预训练,其中冻结的 LLM 的任务是根据 Q-Former 的视觉表示生成文本。对于基于编码器-解码器的 LLM,使用前缀语言建模损失进行预训练,将文本分成两部分,前缀文本与视觉表示连接起来作为 LLM 编码器的输入,后缀文本用作 LLM 解码器的生成目标。

VQA-finetuning

在这里插入图片描述
LLM接收Q-Former的输出并将问题作为输入,然后预测答案。还将问题作为条件提供给Q-Former,使得提取的图像特征与问题更加相关。

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

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

相关文章

秋招复习之数组与链表

目录 前言 1 数组 初始化数组: 访问元素 插入元素 删除元素 遍历数组: 查找元素 扩容数组: 数组的优点与局限性 2 链表 初始化链表 插入节点 删除节点 访问节点 查找节点 数组 vs. 链表 常见链表类型 3 列表 初始化列表 访问元素 插入与删…

6. Mybatis 缓存

6. Mybatis 缓存 MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。缓存可以极大的提升查询效率MyBatis系统中默认定义了两级缓存 一级缓存二级缓存 默认情况下,只有一级缓存(SqlSession级别的缓存,也称为本地缓存&…

vuex基础用法 与 辅助函数使用

效果图 index.js文件 import Vue from "vue"; import Vuex from vuexVue.use(Vuex)export default new Vuex.Store({state: {shopsList: [{goodsName: "手机1", //商品名goodsAmount: 0, //购买的商品数量goodsPrice: 100, //单个商品价格totalPrice: 0,i…

14.用户管理

目录 1、权限表 1、user表 1.用户列 2.权限列 3.安全列 4.资源控制列 2、db表和host 表 1.用户列 2.权限列 3. tables_priv 表和 columns _priv 表 4.procs_priv 表 2、账户管理 1. 登录和退出MySQL服务器 2、创建普通用户: 1.使用CREATE USER语创建…

C#最佳工具集合:IDE、分析、自动化工具等

C#是企业中广泛使用的编程语言,特别是那些依赖微软的程序语言。如果您使用C#构建应用程序,则最有可能使用Visual Studio,并且已经寻找了一些扩展来对您的开发进行管理。但是,这个工具列表可能会改变您编写C#代码的方式。 C#编程的…

找不到vcruntime140.dll怎么处理?6个修复教程分享

本文将详细介绍vcruntime140.dll文件的相关内容,并提供6个不同的修复教程,帮助大家解决这一问题。 一、vcruntime140.dll是什么文件? vcruntime140.dll是Visual C Redistributable Packages的一部分,它是Microsoft Visual Studi…

连续分配管理方式-第四十三天

目录 前言 单一连续分配 固定分区分配 分区大小相等 分区大小不等 分区说明表 动态分区分配 问题 用什么样的数据结构记录内存的使用情况 应该选择哪个分区进行分配 分区的分配与回收操作 分配 回收 结论 本节思维导图 前言 连续分配指为用户进程分配的必须是一…

条件随机场 (CRF) 的损失函数以及faiss 的原理介绍

1、条件随机场 (CRF) 的损失函数 条件随机场(CRF)是一种统计建模方法,常用于结构化预测问题,如序列标注、分词和命名实体识别等。在CRF模型中,损失函数用于衡量模型预测的标记序列与真实标记序列之间的差异。CRF的目标…

【Redux】自己动手实现redux和react-redux

1. React提供context的作用 在class组件的世界里,如果后代组件共享某些状态,比如主题色、语言键,则需要将这些状态提升到根组件,以props的方式从根组件向后代组件一层一层传递,这样则需要在每层写props.someData&#…

控制障碍函数(Control Barrier Function,CBF) 二、示例

二、示例 2.1、系统模型 这里我们举一个CBF作者给出的经典示例 我们定义控制输入 u u u 为蓝色车的推力。 p p p 为蓝色车的位置, v v v 为蓝色车的速度, z z z 为蓝色车与黄色车之间的距离, v 0 v_0 v0​ 为黄色车的速度。我们定义系统的…

功能介绍 | 探秘Goby功能世界:点击URL,即刻畅享快速调起之旅!

​​0x01 前言 ​我们从只会点鼠标的猴子到CtrlC,CtrlV来回切换的工具人,但有时候遇到大量需要复制的url界面,真的希望能有一个可以一键整理、一键扫描URL的功能来拯救! 好消息是,Goby从客户端版本2.8.6起,官方引入了…

CAN数据记录仪在新能源车上的应用

随着新能源汽车的快速发展,对车辆安全和性能的要求也越来越高。在新能源车中,液位传感器是必不可少的零部件之一,用于监测电池液位、冷却液位等关键参数。在测试阶段需要工作人员花费大量时间跟车去获取它的CAN数据,从而分析是否有…

web自动化测试从入门到持续集成

在很多刚学习自动化的可能会认为我只需要会运用selenium,我只需要在一个编辑器中实用selenium java编写了一些脚本那么就会自动化了,是真的吗?答案肯定是假的。自动化肯定是需要做到真的完全自动化,那如何实现呢?接着往…

学习Go语言Web框架Gee总结--前缀树路由Router(三)

学习Go语言Web框架Gee总结--前缀树路由Router router/gee/trie.gorouter/gee/router.gorouter/gee/context.gorouter/main.go 学习网站来源:Gee 项目目录结构: router/gee/trie.go 实现动态路由最常用的数据结构,被称为前缀树(Trie树) 关…

MySQL之CRUD,函数与union使用

目录 一.CRUD 1.1.SELECT(查询) 1.2.INSERT(新增) 1.3.UPDATE(修改) 1.4.DELETE(删除) 二.函数 2.1.常见函数 2.1.1.字符函数 2.1.2.数字函数 2.1.3.日期函数 2.2.流程控制函数 2.3.聚合函数 三.union与union all 四…

物流实时数仓:数仓搭建(DWS)一

系列文章目录 物流实时数仓:采集通道搭建 物流实时数仓:数仓搭建 物流实时数仓:数仓搭建(DIM) 物流实时数仓:数仓搭建(DWD)一 物流实时数仓:数仓搭建(DWD&am…

JMeter CSV 参数文件的使用方法

.在 JMeter 测试中,参数化是非常重要的,参数化允许我们模拟真实世界中的各种情况。本文我们将探讨如何在 JMeter 中使用 CSV 参数文件。 创建 CSV 文件 首先,我们需要创建一个逗号分隔的值(CSV)文件,其中…

创建企业邮箱帐户指南:常见问题与解决方法分享

专业的电子邮件地址可以帮助客户识别商务人士,并了解公司给他们发邮件的目的。如果你从事管理、信息技术或人力资源工作,你可能会负责为一个企业建立一个企业邮箱帐户。了解如何为新员工和现有员工设置电子邮件帐户可以帮助您简化公司内部的沟通。 在这篇…

python小工具之弱密码检测工具

一、引用的python模块 Crypto: Python中一个强大的加密模块,提供了许多常见的加密算法和工具。它建立在pyc.ypodome或pyc.ypto等底层加密库之上,为Python程序员提供了简单易用的API,使其可以轻松地实现各种加密功能。 commands…

牵绳遛狗你我他文明家园每一天,助力共建文明社区,基于YOLOv5开发构建公共场景下未牵绳遛狗检测识别系统

遛狗是每天要打卡的事情,狗狗生性活泼爱动,一天不遛就浑身难受,遛狗最重要的就是要拴绳了,牵紧文明绳是养犬人的必修课。外出遛狗时,主人手上的牵引绳更多是狗狗生命健康的一道重要屏障。每天的社区生活中,…