论文阅读——BLIP-2

BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models

1 模型

在预训练视觉模型和预训练大语言模型中间架起了一座桥梁。两阶段训练,视觉文本表示和视觉到语言生成学习。

Q-Former由两个转换器子模块组成,它们共享相同的自注意层:(1)与冻结图像编码器交互用于视觉特征提取的图像转换器,(2)既可以用作文本编码器又可以用作文本解码器的文本转换器

可以通过相同的自关注层与文本进行交互。根据预训练任务的不同,应用不同的自我注意掩码来控制查询-文本交互。用BERTbase的预训练权重初始化Q Former,而交叉注意力层是随机初始化的。Q-Former总共包含188M个参数。

1.1 Bootstrap Vision-Language Representation Learning from a Frozen Image Encoder

共同优化三个共享相同输入格式和模型参数的预训练目标。每个对象在查询和文本之间使用不同的注意力掩蔽策略来控制它们的交互。

Image-Text Contrastive Learning (ITC)

学习对齐图像表示和文本表示,使得它们的相互信息最大化。它通过对比正对与负对的图像文本相似性来实现这一点。

视觉输出查询表示Z,有很多向量,文本用[CLS] token输出t,一个向量。计算Z的每个向量和t的相似性,选最高的作为图片文本相似性。为了避免信息泄露,我们使用了一个unimodal self-attention mask,,其中查询和文本不允许相互看到。

Image-grounded Text Generation (ITG) loss

模型不允许冻结的图片编码器和文本tokens直接交互提取信息,所以产生文本的信息必须通过查询提取,然后通过自注意机制传递给文本tokens。怎么做到这一点?通过多模态因果自注意力掩码(multimodal causal self-attention mask)控制查询文本的交互。用[DEC]替代原来的[CLS]用来标志第一个文本token。

Image-Text Matching (ITM)

文本图片对齐。它是一个二值分类任务,是,还是不是。用了一个双向自注意力掩码(bi-directional self-attention mask),所有查询和文本都可以相互关注。

1.2 Bootstrap Vision-to-Language Generative Learning from a Frozen LLM

这部分加上了冻结的LLM模型,生成文本。上面几部分已经训练好一个提取语言信息视觉表示(extract language-informative visual representation)的模型,也就是,上面训练好的Q-Former已经可以从视觉编码器中提取和文本相关的视觉信息了。直接在上面的模型的基础上,加一个FC层,将Q-Former输出向量的维度和LLM输入的维度一样。将经过FC层后的维度预置到文本向量作为软视觉提示(soft visual prompts)。

介入两种LLM,decoder-based LLMs 和 encoder-decoder-based LLMs。

对于decoder-based LLMs,用language modeling loss预训练

对于encoder-decoder-based LLMs,用prefix language modeling loss预训练。前缀文本与视觉表示连接,作为LLM编码器的输入。后缀文本用作LLM解码器的生成目标。

实验:

Pre-trained image encoder and LLM:

ViT-L/14 from CLIP,ViT-g/14 from EVA-CLIP;

unsupervised-trained OPT model family for decoder-based LLMs,the instruction-trained FlanT5 model family  for encoder-decoder-based LLMs。

        

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python三大开发框架django、 flask 和 fastapi 对比

本文讲述了什么启发了 FastAPI 的诞生,它与其他替代框架的对比,以及从中汲取的经验。 如果不是基于前人的成果,FastAPI 将不会存在。在 FastAPI 之前,前人已经创建了许多工具 。 几年来,我一直在避免创建新框架。首先&…

SpringBoot集成opencc4j实现繁体中文转为简体中文

背景 繁体中文转为简体中文的需求非常常见,特别是在中文语境下的文本处理和翻译应用中。有很多现成的工具和库可以实现这个功能,比如 OpenCC 、 HanLP 等。从网上下载的 MySQL 版诗词数据库中的诗词数据都是繁体字,这里使用 SpringBoot 集成…

Java并发工具类---ForkJoin、countDownlatch、CyclicBarrier、Semaphore

一、Fork Join fork join是JDK7引入的一种并发框架,采用分而治之的思想来处理并发任务 ForkJoin框架底层实现了工作窃取,当一个线程完成任务处于空闲状态时,会窃取其他工作线程的任务来做,这样可以充分利用线程来进行并行计算&a…

C++哈希表的实现

C哈希表的实现 一.unordered系列容器的介绍二.哈希介绍1.哈希概念2.哈希函数的常见设计3.哈希冲突4.哈希函数的设计原则 三.解决哈希冲突1.闭散列(开放定址法)1.线性探测1.动图演示2.注意事项3.代码的注意事项4.代码实现 2.开散列(哈希桶,拉链法)1.概念2.动图演示3.增容问题1.拉…

C# WPF上位机开发(文件对话框和目录对话框)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 一个上位机软件在处理数据的时候,除了配置文件、数据文件之外,一般还需要使用选择对话框进行文件和目录的选取。如果不这样…

JavaWeb笔记之SVN

一、版本控制 软件开发过程中 变更的管理; 每天的新内容;需要记录一下; 版本分支;整合到一起; 主要的功能对于文件变更的追踪; 多人协同开发的情况下,更好的管理我们的软件。 大型的项目;一个团队来进行开发; 1: 代码的整合 2: 代…

如何在Linux下搭建接口自动化测试平台

我们今天来学习一下在Linux下如何搭建基于HttpRunner开发的接口自动化测试平台吧! 需要在Linux上提前准备的环境(下面是本人搭建时的环境): 1,Python 3.6.8 2,MySQL 5.7 一:下载HttpRunner…

SpringIOC之LocaleContext

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

.raw 是一个 Anndata 包中的对象,用于存储原始的单细胞数据。scanpy种如何查看 .raw 对象的内容,

1查看 .raw 对象的内容,可以使用以下方法: .raw 是一个 Anndata 包中的对象,用于存储原始的单细胞数据。 使用 .X 属性查看原始数据矩阵:.raw.X 这将返回一个 Numpy 数组,其中包含原始数据的数值。 使用 .var_names 属…

金蝶云星空业务对象添加网络互控存储在哪些表

文章目录 金蝶云星空业务对象添加网络互控存储在哪些表【网控操作列表】确定后数据写入《网络控制对象》主表《网络控制对象》多语言 二、【网络互斥列表】数据写入《网络控制互斥对象》 金蝶云星空业务对象添加网络互控存储在哪些表 【网控操作列表】确定后数据写入 《网络控…

用Python处理PDF:拆分与合并PDF文档

PDF文档在信息共享和数据保存方面被广泛使用,处理PDF文档也成为常见需求。其中,合并和拆分PDF文档能够帮助我们更有效地管理PDF文档,使文档内容分布更合理。通过合并,可以将相关文档整合成一个文件,以便更好地组织和提…

基于python的excel检查和读写软件

软件版本:python3.6 窗口和界面gui代码: class mygui:def _init_(self):passdef run(self):root Tkinter.Tk()root.title(ExcelRun)max_w, max_h root.maxsize()root.geometry(f500x500{int((max_w - 500) / 2)}{int((max_h - 300) / 2)}) # 居中显示…