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日,星期五,农历十月廿二 (甲辰年乙亥月庚寅日),法定工作日。 红榜生肖:马、猪、狗 需要注意:牛、蛇、猴 喜神方位:西北方 财神方位:…...
小米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)添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- 如果没有使用下面给出的工具类,那么就不需要引入 -…...
React的API✅
createContext createContext要和useContext配合使用,可以理解为 “React自带的redux或mobx” ,事实上redux就是用context来实现的。但是一番操作下来我还是感觉,简单的context对视图的更新的细粒度把控比不上mobx,除非配合memo等…...
什么是全渠道客服中心?都包括哪些电商平台?
什么是全渠道客服中心?都包括哪些电商平台? 作者:开源呼叫中心系统 FreeIPCC,Github地址:https://github.com/lihaiya/freeipcc 全渠道客服中心是一种能够同时接入并处理来自多个渠道客户咨询和请求的综合服务平台。以…...
Jtti:如何知晓服务器的压力上限?具体的步骤和方法
了解服务器的压力上限(也称为性能极限或容量)是确保系统在高负载下仍能稳定运行的重要步骤。这通常通过压力测试(也称为负载测试或性能测试)来实现。以下是详细的步骤和方法来确定服务器的压力上限: 1. 定义测试目标和指标 在进行压力测试前,明确测试目标…...
贪心算法(1)
目录 柠檬水找零 题解: 代码: 将数组和减半的最少操作次数(大根堆) 题解: 代码: 最大数(注意 sort 中 cmp 的写法) 题解: 代码: 摆动序列࿰…...
SpringBoot,IOC,DI,分层解耦,统一响应
目录 详细参考day05 web请求 1、BS架构流程 2、RequestParam注解 完成参数名和形参的映射 3、controller接收json对象,使用RequestBody注解 4、PathVariable注解传递路径参数 5、ResponseBody(return 响应数据) RestController源码 6、统一响…...
目标驱动学习python动力
文章目录 迟迟未开始的原因打破思维里的围墙抛砖引玉爬虫 结束词 迟迟未开始的原因 其实我也是很早就知道有python,当时听说这个用于做测试不错,也就一直没有提起兴趣,后来人工智能火了之后,再次接触python,安装好pyth…...
力扣-Hot100-回溯【算法学习day.39】
前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…...
小熊派Nano接入华为云
一、华为云IoTDA创建产品 创建如下服务,并添加对应的属性和命令。 二、小熊派接入 根据小熊派官方示例代码D6完成了小熊派接入华为云并实现属性上传命令下发。源码:小熊派开源社区/BearPi-HM_Nano 1. MQTT连接代码分析 这部分代码在oc_mqtt.c和oc_mq…...
【linux硬件操作系统】计算机硬件常见硬件故障处理
这里写目录标题 一、故障排错的基本原则二、硬件维护注意事项三、关于最小化和还原出厂配置四、常见故障处理及调试五、硬盘相关故障六、硬盘相关故障:硬盘检测问题七、硬盘相关故障:自检硬盘报错八、硬盘相关故障:硬盘亮红灯九、硬盘相关故障…...
谈学生公寓安全用电系统的涉及方案
学生公寓安全 学生公寓安全用电系统的设计方案主要包括以下几个方面: 电气线路设计: 合理布线:确保所有电气线路按照国家或地区的电气安全标准进行设计,避免线路过载和短路。使用阻燃材料:选用阻燃或低…...
自动语音识别(ASR)与文本转语音(TTS)技术的应用与发展
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
Go 语言数组
Go 语言数组 引言 Go 语言是一种静态类型、编译型语言,由 Google 开发,旨在提高多核处理器下的编程效率。数组作为 Go 语言中的一种基本数据结构,提供了存储一系列具有相同类型元素的能力。本文将深入探讨 Go 语言中数组的使用方法、特性以…...
13. 【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--完善TODO标记的代码
这篇文章特别短,短到可以作为一篇文章的一个章节,那让我们开始吧 一、编写代码 我们在代码中标记了大量的TODO标记,并且注明了这里暂时写死,等权限和授权完成后再改为动态获取这句话。那么到目前为止和权限有关的代码已经完成了…...
深入剖析Java内存管理:机制、优化与最佳实践
🚀 作者 :“码上有前” 🚀 文章简介 :Java 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 深入剖析Java内存管理:机制、优化与最佳实践 一、Java内存模型概述 1. Java内存模型的定义与作…...
【Amazon】亚马逊云科技Amazon DynamoDB 实践Amazon DynamoDB
Amazon DynamoDB 是一种完全托管的 NoSQL 数据库服务,专为高性能和可扩展性设计,特别适合需要快速响应和高吞吐量的应用场景,如移动应用、游戏、物联网和实时分析等。 工作原理 Amazon DynamoDB 在任何规模下响应时间一律达毫秒级ÿ…...
Qt-常用的显示类控件
QLabel QLabel有如下核心属性: 关于文本格式的验证: 其中<b>xxx<b>,就是加粗的意思。 效果: 或者再把它改为markdown形式的: 在markd中,#就是表示一级标题,我们在加上##后&#x…...
LabVIEW内燃机缸压采集与分析
基于LabVIEW开发的内燃机缸压采集与分析系统结合高性能压力传感器和NI数据采集设备,实现了内燃机工作过程中缸压的实时监测与分析,支持性能优化与设计改进。文中详细介绍了系统的开发背景、硬件组成、软件设计及其工作原理,展现了完整的开发流…...
【Linux学习】【Ubuntu入门】1-7 ubuntu下磁盘管理
1.准备一个U盘或者SD卡(插上读卡器),将U盘插入主机电脑,右键点击属性,查看U盘的文件系统确保是FAT32格式 2.右键单击ubuntu右下角图标,将U盘与虚拟机连接 参考链接 3. Ubuntu磁盘文件:/dev/s…...
VScode clangd插件安装
前提 在VScode中写C代码时,总会用到 C/C 这个插件,也就自然而然地使用了这个插件带来的代码跳转和代码提示功能。但是当代码变地很多时,就会变得非常慢。所以经过调查后弃用C/C 插件的这个功能,使用 clangd 这个插件来提示C代码和…...
【机器学习】- L1L2 正则化操作
目录 0.引言1.正则化的基本思想2.L1 正则化3.L2 正则化4.L1 与 L2 正则化的比较5.应用:控制模型复杂度6.超参数 λ \lambda λ 的选择7.总结 0.引言 在机器学习中,正则化是一种通过约束模型参数来控制模型复杂度的技术。它可以有效减少过拟合ÿ…...
Logback实战指南:基础知识、实战应用及最佳实践全攻略
背景 在Java系统实现过程中,我们不可避免地会借助大量开源功能组件。然而,这些组件往往功能丰富且体系庞大,官方文档常常详尽至数百页。而在实际项目中,我们可能仅需使用其中的一小部分功能,这就造成了一个挑战&#…...
跑腿网站建设/广告有限公司
PS:若有谬误请多多指教哈 转载请注明 大名鼎鼎的detour想必大家都知道,可以detour x64微软居然售价9999美刀...(此处省略吐槽一万字) 在此本菜向大家介绍一款美帝的免费开源库EasyHook(inline hook),下面是…...
网络服务主要包括哪些方面/广州网站营销seo费用
检测轮廓时我们使用canny边沿检测算法,这个算法其实也是基于梯度的。但是,与传统的梯度算法求边沿不同的是: 1.它可以精确的定位边沿的位置。通过沿幅角方向检测模值的极大值点,即边缘点,遍历8个方向图像像素ÿ…...
上海企业网站建设制/网站运营与维护
智合云教育部,带你不走寻常路!◤随着云计算的发展,如今,几乎每个企业计划或正在使用云计算,但不是每个企业都使用相同类型的云模式。实际上有三种不同的云模式,其中包括公有云,私有云和混合云。…...
台湾做电商网站/网站推广计划方案
客户关系管理系统(CRM)是现代企业管理中不可或缺的管理工具之一。一个好的**CRM系统**可以帮助企业更好地管理客户信息、提高销售和市场营销效率、增强客户忠诚度等。但是,如何选择适合自己企业的CRM系统呢?以下是一些选择CRM系统…...
商务网站模板免费下载/广州:推动优化防控措施落
杭州东识科技有限公司(DONWIT东识)致力于RFID产品及物联网解决方案领跑者。公司产品主要聚焦RFID智能制造、资产可视化定位追踪管理、3D可视化物资仓库管理、智慧物资装备管理等领域,我们持之以恒以RFID为核心为客户提供物联网整体解决方案。…...
南阳网站建设大旗电商/宁波企业网站seo
为了保证的可读性,本文采用意译而非直译。想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你!注意:自己尝试的时候,Mac(17, pro) 与原文提供的快捷键盘不太一样,mac 对应的 Ctrl 要换成 command做为前端开…...