当前位置: 首页 > news >正文

BLIP-2模型的详解与思考

大模型学习笔记------BLIP-2模型的详解与思考

    • 1、BLIP-2框架概述
    • 2、BLIP-2网络结构详解
    • 3、BLIP-2的几点思考

     上一篇文章上文中讲解了 BLIP(Bootstrapping Language-Image Pretraining)模型的一些思考,本文将讲述一个BLIP的升级版 BLIP-2,讲述BLIP-2模型的模型结构与自己的一些见解。

1、BLIP-2框架概述

    BLIP-2模型的整个框架与BLIP比较来看相对抽象,具体如下所示:
在这里插入图片描述
    从BLIP-2模型的整个框架爱上看,BLIP-2由这么几个部分组成,图像输入了图像编码器(Image Encoder),得到的结果与文本(Text)在Q-Former(BERT初始化)里进行融合,最后送入LLM模型,进行文本的生成。

  • Image Encoder:负责从输入图片中提取视觉特征,文章中试验了CLIP 训练的 ViT-L/14和EVA-CLIP训练的 ViT-g/14。
  • Q-Former:负责弥合视觉和语言两种模态的差距,Queries是训练的参数。
  • Large Language Model(LLM):负责文本生成,文章中试验了decoder-based LLM 和encoder-decoder-based LLM。

    从上述的网络框架可以看出,BLIP-2模型的主要训练任务其实是在训练Q-Former模块。当然,BLIP-2的最大创新点也是基于Q-Former模块。其次,比较重要的部分就是如何将Q-Former模块输出与LLM模型进行结合。

2、BLIP-2网络结构详解

    BLIP-2模型的整个框架与BLIP比较来看相对抽象,但是拆开来看并不复杂。我们从Q-Former模块入手。

2.1 表征学习阶段

    BLIP-2中Q-Former模块第一个阶段的训练过程可以称为表征学习阶段。具体如下所示:
在这里插入图片描述
    很显然,BLIP-2延续了BLIP的思想,联合优化3个具有相同输入格式和模型参数的预训练目标,每个目标函数使用不同的 mask Attention 来控制注意力的交互。

2.1.1 图文匹配任务 (Image-Text Matching, ITM)

    ITM 是个二分类任务,要求模型预测图像-文本对是正样本 (匹配) 还是负样本 (不匹配)。ITM可以更加细粒度地对齐图像和文本的表征,使其互信息最大化。实现过程:将Image Transformer输出的每个Query嵌入输入到一个二类线性分类器中以获得对应的logit,然后将所有的logit平均,再计算匹配分数。ITM 的 Attention Mask 方法如上图中绿色框中所示,采用 Bi-directional Self-Attention Mask,允许 Queries 和 Text 相互关注。

2.1.2 图文对比学习 (Image-Text Contrastive Learning, ITC)

    ITC是通过计算图像与文本的对比度来提高图文信息提取的能力。 Q-Former模块中, 作者实现 ITC 的方法是计算 Queries 的输出和 Text Transformer 的 [CLS] token 输出的对比学习损失。因为有多个 Queries 的输出,因此作者首先计算每个 Queries 的输出和[CLS] token 输出之间的成对相似度,然后选择最高的一个作为最终的图文相似度。ITC 的 Attention Mask 方法采用上图中红色框部分,采用Uni-modal Self-Attention Mask的方式,不允许 Queries 和 Text 相互关注。

2.1.3 基于图像的文本生成 (Image-Grounded Text Generation, ITG)

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

2.2 生成学习阶段

    在生成预训练的阶段,作者把 Q-Former 和冻结参数的 LLM 连接起来,以利用 LLM 的文本生成能力。图像的表征和 Queries 输入 Q-Former后得到 Queries 的输出 ,经过一个全连接层与 Text token 的维度对齐之后输入给 LLM Decoder或是LLM Encoder。其中, Queries 的输出就蕴含了视觉信息。整个Q-Former从本质上就是增强模型理图像和文本之间的交互的表现能力,输出作为LLM模型的Soft Visual Prompt。
在这里插入图片描述

    BLIP-2试验了两种类型的 LLM,分别是基于纯 Decoder 架构的和基于 Encoder-Decoder 架构的。对于基于纯 Decoder 架构的模型(黄色框部分),使用语言建模目标函数进行训练。冻结参数的 LLM 的任务是根据 Q-Former 提供的视觉表征来生成文本。对于基于 Encoder-Decoder 架构的模型(红色框部分),把文本分成两段,前缀文本与Queries 的输出作为LLM中Encoder的输入,Decoder输出后缀文本。

    BLIP-2中的视觉模型使用CLIP训练的 ViT-L/14和EVA-CLIP训练的 ViT-g/14,LLM模型采用的是OPT(纯Decoder 架构)和FlanT5(Encoder-Decoder 架构)。

3、BLIP-2的几点思考

1)Q-Former 的主要作用

    Q-Former经过预训练后,可以提取包含语言信息的视觉表示,因此它可以有效地充当信息瓶颈,将最有用的信息提供给 LLM,同时删除不相关的视觉信息,减轻了 LLM 学习视觉语言对齐的负担。

2)BLIP与BLIP-2 在图文信息融合方面有哪些不同的思路

  • BLIP主要是通过视觉-文本编码器中的Cross Attention直接进行图像与文本的融合;
  • BLIP-2分为两步,第一步是Queries与文本通过Self Attention进行特征融合,将融合的结果与图像进行Cross Attention的特征融合。

    我们可以认为BLIP是图像与文本的强制性融合,而BLIP-2通过可学习的Queries作为“润滑剂”间接完成图像与文本的融合。

3)BLIP-2 如何节约计算成本

    其实这个问题非常容易理解。BLIP-2在训练模型过程中使用已经预训练好的图像编码器与LLM模型,借助现成的冻结参数的预训练视觉模型和大型语言模型进行模型的训练。这个方法大大降低了训练的成本。

相关文章:

BLIP-2模型的详解与思考

大模型学习笔记------BLIP-2模型的详解与思考 1、BLIP-2框架概述2、BLIP-2网络结构详解3、BLIP-2的几点思考 上一篇文章上文中讲解了 BLIP(Bootstrapping Language-Image Pretraining)模型的一些思考,本文将讲述一个BLIP的升级版 BLIP-2&am…...

2024年11月22日 十二生肖 今日运势

小运播报:2024年11月22日,星期五,农历十月廿二 (甲辰年乙亥月庚寅日),法定工作日。 红榜生肖:马、猪、狗 需要注意:牛、蛇、猴 喜神方位:西北方 财神方位&#xff1a…...

小米C++ 面试题及参考答案上(120道面试题覆盖各种类型八股文)

进程和线程的联系和区别 进程是资源分配的基本单位,它拥有自己独立的地址空间、代码段、数据段和堆栈等。线程是进程中的一个执行单元,是 CPU 调度的基本单位。 联系方面,线程是进程的一部分,一个进程可以包含多个线程。它们都用于…...

SQL SELECT 语句:基础与进阶应用

SQL SELECT 语句:基础与进阶应用 SQL(Structured Query Language)是一种用于管理关系数据库的编程语言。在SQL中,SELECT语句是最常用的命令之一,用于从数据库表中检索数据。本文将详细介绍SELECT语句的基础用法&#…...

微服务即时通讯系统的实现(服务端)----(1)

目录 1. 项目介绍和服务器功能设计2. 基础工具安装3. gflags的安装与使用3.1 gflags的介绍3.2 gflags的安装3.3 gflags的认识3.4 gflags的使用 4. gtest的安装与使用4.1 gtest的介绍4.2 gtest的安装4.3 gtest的使用 5 Spdlog日志组件的安装与使用5.1 Spdlog的介绍5.2 Spdlog的安…...

《Spring 依赖注入方式全解析》

一、Spring 依赖注入概述 Spring 依赖注入(Dependency Injection,DI)是一种重要的设计模式,它在 Spring 框架中扮演着关键角色。依赖注入的核心概念是将对象所需的依赖关系由外部容器(通常是 Spring 容器)进…...

【C++动态规划】1411. 给 N x 3 网格图涂色的方案数|1844

本文涉及知识点 C动态规划 LeetCode1411. 给 N x 3 网格图涂色的方案数 提示 你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保相邻格子颜色不同(也就是有相同水平边或者垂直…...

外包干了3年,技术退步明显...

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…...

SpringBoot 2.x 整合 Redis

整合 1&#xff09;添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- 如果没有使用下面给出的工具类&#xff0c;那么就不需要引入 -…...

React的API✅

createContext createContext要和useContext配合使用&#xff0c;可以理解为 “React自带的redux或mobx” &#xff0c;事实上redux就是用context来实现的。但是一番操作下来我还是感觉&#xff0c;简单的context对视图的更新的细粒度把控比不上mobx&#xff0c;除非配合memo等…...

什么是全渠道客服中心?都包括哪些电商平台?

什么是全渠道客服中心&#xff1f;都包括哪些电商平台&#xff1f; 作者&#xff1a;开源呼叫中心系统 FreeIPCC&#xff0c;Github地址&#xff1a;https://github.com/lihaiya/freeipcc 全渠道客服中心是一种能够同时接入并处理来自多个渠道客户咨询和请求的综合服务平台。以…...

Jtti:如何知晓服务器的压力上限?具体的步骤和方法

了解服务器的压力上限(也称为性能极限或容量)是确保系统在高负载下仍能稳定运行的重要步骤。这通常通过压力测试(也称为负载测试或性能测试)来实现。以下是详细的步骤和方法来确定服务器的压力上限&#xff1a; 1. 定义测试目标和指标 在进行压力测试前&#xff0c;明确测试目标…...

贪心算法(1)

目录 柠檬水找零 题解&#xff1a; 代码&#xff1a; 将数组和减半的最少操作次数&#xff08;大根堆&#xff09; 题解&#xff1a; 代码&#xff1a; 最大数&#xff08;注意 sort 中 cmp 的写法&#xff09; 题解&#xff1a; 代码&#xff1a; 摆动序列&#xff0…...

SpringBoot,IOC,DI,分层解耦,统一响应

目录 详细参考day05 web请求 1、BS架构流程 2、RequestParam注解 完成参数名和形参的映射 3、controller接收json对象&#xff0c;使用RequestBody注解 4、PathVariable注解传递路径参数 5、ResponseBody&#xff08;return 响应数据&#xff09; RestController源码 6、统一响…...

目标驱动学习python动力

文章目录 迟迟未开始的原因打破思维里的围墙抛砖引玉爬虫 结束词 迟迟未开始的原因 其实我也是很早就知道有python&#xff0c;当时听说这个用于做测试不错&#xff0c;也就一直没有提起兴趣&#xff0c;后来人工智能火了之后&#xff0c;再次接触python&#xff0c;安装好pyth…...

力扣-Hot100-回溯【算法学习day.39】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&am…...

小熊派Nano接入华为云

一、华为云IoTDA创建产品 创建如下服务&#xff0c;并添加对应的属性和命令。 二、小熊派接入 根据小熊派官方示例代码D6完成了小熊派接入华为云并实现属性上传命令下发。源码&#xff1a;小熊派开源社区/BearPi-HM_Nano 1. MQTT连接代码分析 这部分代码在oc_mqtt.c和oc_mq…...

【linux硬件操作系统】计算机硬件常见硬件故障处理

这里写目录标题 一、故障排错的基本原则二、硬件维护注意事项三、关于最小化和还原出厂配置四、常见故障处理及调试五、硬盘相关故障六、硬盘相关故障&#xff1a;硬盘检测问题七、硬盘相关故障&#xff1a;自检硬盘报错八、硬盘相关故障&#xff1a;硬盘亮红灯九、硬盘相关故障…...

谈学生公寓安全用电系统的涉及方案

‌学生公寓安全 学生公寓安全用电系统的设计方案主要包括以下几个方面‌&#xff1a; ‌电气线路设计‌&#xff1a; ‌合理布线‌&#xff1a;确保所有电气线路按照国家或地区的电气安全标准进行设计&#xff0c;避免线路过载和短路。‌使用阻燃材料‌&#xff1a;选用阻燃或低…...

自动语音识别(ASR)与文本转语音(TTS)技术的应用与发展

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

stm32wle5 lpuart DMA数据不接收

配置波特率9600时&#xff0c;需要使用外部低速晶振...