BLIP-2模型的详解与思考

news2024/11/25 19:56:17

大模型学习笔记------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模型,借助现成的冻结参数的预训练视觉模型和大型语言模型进行模型的训练。这个方法大大降低了训练的成本。

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

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

相关文章

strcat的模拟实现(递归)(c基础)

hi , I am 36 适合对象c语言初学者 strcat(arr1,arr2);函数是将arr2接到arr1后,返回arr1 链接介绍一下strcat(c基础)-CSDN博客 下面通过自定义函数来模拟实现 缺陷 该函数不适合arr1[] "";时因为该函数的功能是把arr2接到arr1后&#xf…

GeekChallenge 2024 第十五届极客大挑战 pwn AK

GeekChallenge 2024 第十五届极客大挑战 pwn AK 🍀前言☘️ez_shellcode(shellcode,栈溢出)🌿分析🌿解题🌿exp ☘️买黑吗喽了吗(整数溢出,栈溢出)&#x1f3…

springboot源码02-springboot启动主要步骤总结

文章目录 【README】【1】springboot应用启动主要步骤【1.1】springboot应用启动主要步骤总结 【2】springboot应用启动先后发布事件【2.1】springboot启动先后发布事件代码实践【2.1.1】自定义监听器【2.1.2】自定义SpringApplicationRunListener【2.1.3】springboot运行日志 …

数据结构——小小二叉树第二幕(二叉树链式结构的实现以及二叉树的遍历)超详细!!!

文章目录 前言一、实现链式结构二叉树1.1 前中后序遍历1.1.1 遍历规则 1.2 二叉树的结点个数以及高度等 总结 前言 上一篇我们初步认识了树的结构以及概念,同时也学习到了二叉树的顺序结构(堆)的实现,以及堆的初步应用。 时隔几日…

服务器端渲染 (SSR) 与客户端渲染 (CSR)

嘿程序员!我们都知道,新时代的 Javascript 已经彻底改变了现代网站的结构和用户体验。如今,网站的构建更像是一个应用程序,伪装成一个能够发送电子邮件、通知、聊天、购物、支付等的网站。今天的网站是如此先进、互动,…

【spring】spring单例模式与锁对象作用域的分析

前言:spring默认是单例模式,这句话大家应该都不陌生;因为绝大多数都是使用单例模式,避免了某些问题,可能导致对某些场景缺乏思考。本文通过结合lock锁将单例模式、静态变量、锁对象等知识点串联起来。 文章目录 synchr…

解析与修复vcruntime140_1.dll问题,总结四种vcruntime140_1.dll解决方法

在使用Windows系统的过程中,不少用户可能会遇到与vcruntime140_1.dll相关的问题。这个看似神秘的文件,其实在很多软件的运行中扮演着至关重要的角色。今天的这篇文章将教大家四种vcruntime140_1.dll解决方法。 一、vcruntime140_1.dll文件分析 &#xf…

django基于django的民族服饰数据分析系统的设计与实现

摘 要 随着网络科技的发展,利用大数据分析对民族服饰进行管理已势在必行;该平台将帮助企业更好地理解服饰市场的趋势,优化服装款式,提高服装的质量。 本文讲述了基于python语言开发,后台数据库选择MySQL进行数据的存储…

如何使用GPT API 自定义 自己的 RAG

要使用 GPT 的 API 实现自己的 RAG(Retrieval-Augmented Generation) 系统,可以结合检索工具和 GPT 模型,将外部知识库中的信息与生成模型结合起来,完成准确、高效的任务。以下是具体步骤和实现方法: 系统架…

对subprocess启动的子进程使用VSCode python debugger

文章目录 1 情况概要(和文件结构)2 具体设置和启动步骤2.1 具体配置Step 1 针对attach debugger到子进程Step 2 针对子进程的暂停(可选) Step 3 判断哪个进程id是需要的子进程 2.2 启动步骤和过程 3 其他问题解决3.13.2 ptrace: Operation not permitted…

cocos creator 3.8 一些简单的操作技巧,材质的创建 1

这是一个飞机的3D模型与贴图 导入到cocos中,法线模型文件中已经包含了mesh、material、prefab,也就是模型、材质与预制。界面上创建一个空节点Plane,将模型直接拖入到Plane下。新建材质如图下 Effect属性选择builtin-unlit,不需…

基于web的音乐网站(Java+SpringBoot+Mysql)

目录 1系统概述 1.1 研究背景 1.2研究目的 1.3系统设计思想 2相关技术 2.1 MYSQL数据库 2.2 B/S结构 2.3 Spring Boot框架简介 3系统分析 3.1可行性分析 3.1.1技术可行性 3.1.2经济可行性 3.1.3操作可行性 3.2系统性能分析 3.2.1 系统安全性 3.2.2 数据完整性 …

Web中间件漏洞总结——IIS篇

0x01 前言 渗透过程中会遇到各种中间件,某些中间件版本存在远程执行、任意文件上传等漏洞。本文对IIS相关漏洞进行整理,方便我们在渗透过程中快速查阅IIS漏洞。文章粗略浅显,适合刚入行的新手观看。 0x02 目录 IIS6.0 PUT漏洞IIS6.0 远程代…

关于中断向量表中没有EXTIx_IRQHandler的问题

如果你在中断向量表查找中断向量服务函数时,没有查找到EXTI7_IRQHandler等,是因为中断向量中根本就没有这个函数。 STM32 的中断向量表通常由启动文件(如 startup_stm32f1xx.s)定义。在该文件中,所有的中断服务例程&a…

idea启动服务报错Application run failed

现象是这样,在宝兰德部署报错: NoClassDefFoundError: org/apache/tomcat/util/codec/binary/Base64 本地启动报错:Application run failed:Failed to parse configuration class [***.WebApplication]; nested exception is java.lang.Illeg…

Easyexcel(4-模板文件)

相关文章链接 Easyexcel(1-注解使用)Easyexcel(2-文件读取)Easyexcel(3-文件导出)Easyexcel(4-模板文件) 文件导出 获取 resources 目录下的文件,使用 withTemplate 获…

神经网络问题之:梯度不稳定

梯度不稳定是深度学习中,特别是在训练深度神经网络时常见的一个问题,其本质涉及多个方面。 一、根本原因 梯度不稳定问题的根本原因在于深度神经网络的结构和训练过程中的一些固有特性。随着网络层数的增加,梯度在反向传播过程中会逐层累积变…

动态规划子数组系列一>等差数列划分

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; public int numberOfArithmeticSlices(int[] nums) {int n nums.length;int[] dp new int[n];int ret 0;for(int i 2; i < n; i){dp[i] nums[i] - nums[i-1] nums[i-1] - nums[i-2] ? dp[i-1]1 : 0;ret dp[i…

RedHat系统配置静态IP

1、执行nmtui命令进入字符配置界面如下图所示 2、选择编辑连接进入 3、选择编辑进入后&#xff0c;将IPv4设置为手动模式后&#xff0c;选择显示后进行ip地址、网关、DNS的配置&#xff0c;配置完成后选择确定退出编辑 4、进入主界面后选择启用连接进入后&#xff0c;选择启用&…

batchnorm与layernorn的区别

1 原理 简单总结&#xff1a; batchnorn 和layernorm是在不同维度上对特征进行归一化处理。 batchnorm在batch这一维度上&#xff0c; 对一个batch内部所有样本&#xff0c; 在同一个特征通道上进行归一化。 举个例子&#xff0c; 假设输入的特征图尺寸为16x224x224x256&…