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

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

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

相关文章

java-贪心算法

1. 霍夫曼编码(Huffman Coding) 描述: 霍夫曼编码是一种使用变长编码表对数据进行编码的算法,由David A. Huffman在1952年发明。它是一种贪心算法,用于数据压缩。霍夫曼编码通过构建一个二叉树(霍夫曼树&a…

RK3568平台(中断篇)ARM中断流程

一.ARM 处理器程序运行的过程 ARM芯片属于精简指令集计算机 (RISC: Reduced Instruction Set Computing),它所用的指令比较简单,有如下特点: ① 对内存只有读、写指令 ② 对于数据的运算是在CPU内部实现 ③ 使用RISC指令的CPU复杂度小一点,易于设计 比如对于 a=a+b 这…

SpringBoot与MongoDB深度整合及应用案例

SpringBoot与MongoDB深度整合及应用案例 在当今快速发展的软件开发领域,NoSQL数据库因其灵活性和可扩展性而变得越来越流行。MongoDB,作为一款领先的NoSQL数据库,以其文档导向的存储模型和强大的查询能力脱颖而出。本文将为您提供一个全方位…

项目实战(webshop)

一、搭建靶场webshop(www.example1.com) 二、信息收集 1、获取IP winR→cmd→ping www.example1.com→显示出ip(192.168.51.128) 注:TTL为IP包的生存时间,拿到TTL我们可以大概的判断一下目标机器的操作系统,但不是很准确,因为…

初识算法 · 分治(3)

目录 前言: 归并排序 题目解析 算法原理 算法编写 求逆序对总数 题目解析 算法原理 算法编写 前言: ​本文的主题是分治,通过两道题目讲解,一道是归并排序,一道是求逆序对。 链接分别为: 912. 排…

MyBatis——#{} 和 ${} 的区别和动态 SQL

1. #{} 和 ${} 的区别 为了方便,接下来使用注解方式来演示: #{} 的 SQL 语句中的参数是用过 ? 来起到类似于占位符的作用,而 ${} 是直接进行参数替换,这种直接替换的即时 SQL 就可能会出现一个问题 当传入一个字符串时&#xff…

学习threejs,导入FBX格式骨骼绑定模型

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.FBXLoader fbx 模型加…

【腾讯云产品最佳实践】腾讯云CVM入门技术与实践:通过腾讯云快速构建云上应用

目录 前言 什么是腾讯云CVM? 腾讯云CVM的技术优势 基于最佳技术实践,使用腾讯云CVM搭建应用 1. 开通CVM实例 2. 连接CVM实例 3. 配置Web环境 4. 部署PHP应用 腾讯云CVM行业应用案例:电商平台的双十一攻略 1. 弹性伸缩解决高并发问题…

mongodb多表查询,五个表查询

需求是这样的,而数据是从mysql导入进来的,由于mysql不支持数组类型的数据,所以有很多关联表。药剂里找药物,需要药剂与药物的关联表,然后再找药物表。从药物表里再找药物与成分关联表,最后再找成分表。 这里…

STL中vector实现——简单易懂版

本章内容 模拟实现 vector 的部分重要功能 1.迭代器的引入1.1 之前写法1.2 STL库中的写法 2.默认成员函数2.1构造与拷贝构造2.2拷贝赋值2.3析构函数 3.增删查改功能3.1插入3.2删除 4.为什么STL中vector没有find函数?5.🔥🔥迭代器失效场景&am…

Springboot + vue 健身房管理系统项目部署

1、前言 ​ 许多人在拿到 Spring Boot 项目的源码后,不知道如何运行。我以 Spring Boot Vue 健身房管理系统的部署为例,详细介绍一下部署流程。大多数 Spring Boot 项目都可以通过这种方式部署,希望能帮助到大家。 ​ 2、项目查看 ​ 首…

NuGet如何支持HTTP源

今天是2024年11月21号,最近更新了VisualStudio后发现HTTP的包源已经默认禁止使用了,生成时会直接报错。如下图: 官方也明确指出了要想使用HTTP包源的解决办法,这里就简单总结一下。 一、全局配置 1、全局NuGet包的配置文件路径在…

SpringBoot学习记录(四)之分页查询

SpringBoot学习记录(四)之分页查询 一、业务需求1、基本信息2、请求参数3、相应数据 二、传统方式分页三、使用PageHelper分页插件 一、业务需求 根据条件进行员工数据的条件分页查询 1、基本信息 请求路径: /emps 请求方式: …

JavaParser如何获取方法的返回类型

使用JavaParser 如何获取一个Java类中的某个方法的返回类型呢? 假如有一个如下的简单的Java 类: /*** Copyright (C) Oscar Chen(XM):* * Date: 2024-11-21* Author: XM*/ package com.osxm.ai.sdlc.codeparse.codesample;public class MyClass {public…

2024亚太杯国际赛C题宠物预测1234问完整解题思路代码+成品参考文章

中国宠物业发展趋势及预测模型 一、问题背景与研究目标 近年来,中国宠物业经历了快速发展,特别是在城市化进程加快、人口结构变化和消费水平提升的背景下,宠物作为家庭成员的角色变得愈发重要。根据相关数据,中国宠物数量&#…

Java实现离线身份证号码OCR识别

最近公司要求做离线身份证OCR功能,找了一圈总算是找到了,在这里对文档做个整理,方便后来者,感谢码龄23年博主的分享 系统:Windows11,红旗Linux Asianux8.1 文档中Linux全root用户操作;需先安装…

Gradle核心概念总结

这部分内容主要根据 Gradle 官方文档整理,做了对应的删减,主要保留比较重要的部分,不涉及实战,主要是一些重要概念的介绍。 Gradle 这部分内容属于可选内容,可以根据自身需求决定是否学习,目前国内还是使用…

鸿蒙网络编程系列50-仓颉版TCP回声服务器示例

1. TCP服务端简介 TCP服务端是基于TCP协议构建的一种网络服务模式,它为HTTP(超文本传输协议)、SMTP(简单邮件传输协议)等高层协议的应用程序提供了可靠的底层支持。在TCP服务端中,服务器启动后会监听一个或…

第5-1节:SpringBoot对SpringMVC的自动配置

我的后端学习大纲 SpringBoot学习大纲 1、SpringBoot对SpringMVC自动配置概览

Emacs进阶之插入时间信息(一百六十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…