万字长文解读深度学习——多模态模型BLIP2

news2025/2/5 11:53:41

🌺历史文章列表🌺

  1. 深度学习——优化算法、激活函数、归一化、正则化

  2. 深度学习——权重初始化、评估指标、梯度消失和梯度爆炸

  3. 深度学习——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总

  4. 万字长文解读深度学习——卷积神经网络CNN

  5. 万字长文解读深度学习——循环神经网络RNN、LSTM、GRU、Bi-RNN

  6. 万字长文解读深度学习——Transformer

  7. 深度学习——3种常见的Transformer位置编码【sin/cos、基于频率的二维位置编码(2D Frequency Embeddings)、RoPE】

  8. 万字长文解读深度学习——GPT、BERT、T5

  9. 万字长文解读深度学习——ViT、ViLT、DiT

  10. DiT(Diffusion Transformer)详解——AIGC时代的新宠儿

  11. 万字长文解读深度学习——CLIP、BLIP

  12. 万字长文解读深度学习——AE、VAE

  13. 万字长文解读深度学习——GAN

  14. 万字长文解读深度学习——训练、优化、部署细节


推荐阅读:
BLIP2-图像文本预训练论文解读
【多模态】BLIP-2模型技术学习


文章目录

  • 回顾BLIP
  • BLIP的问题及BLIP2的优化
      • 1. 模块化架构设计
      • 2. 引入 Q-Former 模块
      • 3. 分阶段训练策略
      • 4. 减少计算开销
  • BLIP2
    • 架构
    • 表征学习阶段 Representation Learning Stage
    • 生成式预训练阶段 Generative Pre-training Stage

回顾BLIP

论文:BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation

BLIP 是旨在改进图像-文本联合学习的效率多模态模型,特别是通过生成任务对比学习结合的方式,在低监督甚至无监督情况下提升模型性能。BLIP 的创新点在于它通过多任务预训练和自引导学习(bootstrapping)机制,能够以更少的数据达到更好的性能表现。

BLIP 的架构设计包含图像编码器文本编码器视觉文本编码器视觉文本解码器。它结合了对比学习和生成式任务,以自引导的方式提升模型性能。

在这里插入图片描述

BLIP的问题及BLIP2的优化

在 BLIP 的基础上,BLIP2 进行了以下几项主要优化,这些优化显著提升了模型的性能、计算效率和适配性:

1. 模块化架构设计

  • BLIP 的问题
    • BLIP 的图像编码器、文本编码器、视觉文本编码器和解码器之间的紧密耦合关系,是造成训练成本高、灵活性不足的重要原因。
    • BLIP 的架构限制了视觉编码器和语言模型的选择,适配性不足。
  • BLIP2 的优化
    • 采用模块化设计,将模型分为三个模块:
      1. 视觉编码器(Image Encoder):用于提取图像的底层视觉特征(支持复用已有的预训练视觉模型,如 CLIP 或 ViT)。
      2. Q-Former(Querying Transformer):用于从视觉特征中提取与语言相关的多模态嵌入。
      3. 预训练语言模型(LLM, Large Language Model):用于处理生成任务,如文本生成或问答任务。
    • 模块化设计使得 BLIP2 可以复用现有的强大视觉模型(如 CLIP、ViT)和语言模型(如 GPT、OPT),无需端到端联合训练,大大降低了开发和训练成本。

2. 引入 Q-Former 模块

  • BLIP 的问题
    • BLIP 直接将视觉特征与语言模型对接,特征提取过程可能包含冗余信息,导致对齐效率较低。
  • BLIP2 的优化
    • 引入了 Q-Former,这是一个轻量级的变换器模块,用于从视觉特征中提取与语言模态相关的嵌入表示:
      • 用于从视觉编码器生成高维视觉特征中提取与语言模态相关低维嵌入表示,从而实现高效的图像-文本对齐。
    • Q-Former 的加入显著提升了图像-文本对齐的效果,同时减少了计算负担。

3. 分阶段训练策略

  • BLIP 的问题
    • BLIP 需要联合训练四个组件,优化难度大,训练时间长,硬件需求高。
  • BLIP2 的优化
    • 分阶段训练策略:
      1. 第一阶段:图像-语言对齐
        • 使用视觉编码器和Q-Former。但是冻结视觉编码器的权重(如 CLIP 或 ViT 的预训练模型),仅训练 Q-Former 模块,通过对比学习和图文匹配任务优化视觉-语言的对齐表示。
        • 训练 Q-Former 模块,让其能够从视觉编码器生成的高维特征中提取与语言模态相关的信息。实现视觉模态和语言模态的对齐,构建统一的多模态嵌入表示。
      2. 第二阶段:文本生成任务
        • 使用Q-Former和将预训练语言模型。但是冻结的预训练语言模型(如 GPT 或 OPT),仅训练 Q-Former 来适应生成任务。
        • 使用 Q-Former 提取的多模态嵌入作为语言模型的输入,适配预训练语言模型(如 GPT、OPT 等)进行文本生成任务。
    • 这种策略避免了对大型语言模型的联合训练,显著降低了训练成本。

4. 减少计算开销

  • BLIP 的问题
    • 计算成本高,特别是在需要训练大型语言模型时,对硬件资源需求较高。
  • BLIP2 的优化
    • 通过模块化设计和冻结预训练模型参数计算需求集中在轻量级的 Q-Former 模块上,减少了大规模计算开销。
    • 与 BLIP 相比,BLIP2 的训练速度更快,资源需求更低,适合在资源有限的环境中使用。

BLIP2

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

上一节已经给出了问题及其解决方案,下面将介绍详细的实现。其改进主要体现在在架构训练过程的优化。

架构

BLIP本质上是在训练一个全新的视觉-语言模型,该过程成本大。为了解决这个问题,本文提出的方法是基于现有高质量视觉模型(frozen冻结)及语言大模型(frozen冻结)进行联合训练,同时为减少计算量及防止遗忘,论文对预训练模型进行frozen。为了实现视觉和语言的对齐,作者提出Querying Transformer (Q- Former) 预训练。
模型的架构实现为·冻结的预训练图像编码器 + Q-Former + 冻结的预训练大型语言模型,如下图:
在这里插入图片描述

图 1. BLIP-2 框架概述:我们通过预训练一个轻量级的查询变换器(Querying Transformer),采用两阶段策略弥合模态间的差距。第一阶段从冻结的图像编码器中引导视觉-语言表征学习【论文中图2】。第二阶段从冻结的大型语言模型(LLM)中引导视觉到语言的生成式学习【论文中图3】,从而实现零样本的指令化图像到文本生成(更多示例请参见图 4)。

Q-Former的核心结构如下:
在这里插入图片描述

Q-Former 是 BLIP-2 中用于视觉-语言交互的核心部分。它用于视觉输入(图像)和语言输入(文本)之间的相互理解和转换。图中将其分成了两个部分:图像 Transformer(左半部分)和文本 Transformer(右半部分),它们共享相同自注意力层self attention,使用 B E R T b a s e BERT_{base} BERTbase的预训练权重初始化QFormer,并且随机初始化交叉注意层。Q-Former总共包含1.88亿个参数。

Learned Queries被视为模型参数。在我们的实验中,我们使用了32个查询,其中每个查询具有768维(与Q-Former的隐藏维相同)。我们使用Z来表示输出查询表示。Z的大小(32 × 768)远小于冻结图像特征的大小(例如,ViT-L/14的大小为257 × 1024)。这种瓶颈结构与我们的预训练目标一起工作,迫使查询提取与文本最相关的视觉信息

  1. 图像 Transformer(左半部分)红框

    • 图像 Transformer 负责与Frozen Image Encoder交互,融合Learned Queries和Input Image中的信息,提取图像特征,
  2. 文本 Transformer(右半部分)绿框

    • 文本 Transformer 主要用于处理输入的文本信息(Learned Queries和Input Text)。它既可以作为一个文本编码器,也可以作为文本解码器,用来生成或理解图像相关的文本内容。

在上图中,有三个输入,分别是Learned QueriesInput ImageInput Text 是三个重要的组成部分,它们在 Q-Former 模块中共同作用,进行图像-文本融合和交互。下面是它们的详细解释:

  1. Learned Queries (学习到的查询)

    • Learned Queries 是 Q-Former 中的一种机制,指的是模型通过训练学习得到的一组“查询向量”。这些查询向量用于从图像和文本中提取信息,帮助模型聚焦于最相关的部分。它们是一个动态学习的参数,在训练过程中更新和优化,以便更好地捕捉图像和文本之间的关系。

    • 在 BLIP-2 中,Learned Queries 主要通过交互式方式提取图像和文本的交叉信息。它们在图像和文本的交互过程中充当“桥梁”,帮助模型理解图像和文本之间的关联。

    • 作用:在 Q-Former 中,Learned Queries 的作用是引导图像和文本信息的融合,并决定哪些信息是最重要的。它们帮助 Q-Former 精确地匹配图像和文本,从而生成更准确的描述或进行正确的推理。

  2. Input Image (输入图像)

    • Input Image 是 BLIP-2 模型中的输入之一,指的是输入给模型的原始图像数据。这些图像数据会通过 Frozen Image Encoder(一个预训练的图像编码器)进行编码,转换为高维的视觉特征表示。

    • 在 Q-Former 中,图像通过编码器转换为一个固定的特征表示,然后与 Learned QueriesInput Text 进行交互。这些图像特征是图像和文本匹配任务的基础,帮助模型理解图像的内容。

    • 作用:图像输入提供了模型所需的视觉信息,帮助模型理解并生成与图像相关的文本描述或回答相关问题。

  3. Input Text (输入文本)

    • Input Text 是 BLIP-2 模型的另一个输入,指的是输入给模型的文本数据。通常,这个文本数据是描述图像的文字信息。这些文字数据会通过 Frozen Text Encoder(一个预训练的文本编码器)进行编码,转换为低维的文本特征表示。

    • 在 Q-Former 中,文本会经过 Text Encoder(文本编码器)处理,转化为文本的表示。文本与图像的特征表示通过 Learned Queries 相互作用,共同生成最终的输出(如图像描述、问题答案等)。

    • 作用:文本输入提供了模型所需的语言信息,帮助模型理解和生成与图像相关的语言输出。通过与图像特征的融合,文本输入使得模型能够在视觉-语言任务中进行推理和生成。

表征学习阶段 Representation Learning Stage

表征学习阶段【冻结的预训练图像编码器 + Q-Former】,在冻结的图像编码器中引导视觉-语言表征学习。使用图像-文本对进行预训练,目标是训练Q-Former,使得查询可以学习提取最能提供文本信息的视觉表示。

预训练过程如下图:
在这里插入图片描述

图 2. (左)Q-Former 和 BLIP-2 第一阶段视觉-语言表示学习目标的模型架构。我们联合优化了三个目标,这些目标通过一组可学习的嵌入(queries)来提取与文本最相关的视觉表示。(右)针对每个目标的自注意力掩码策略,用于控制查询与文本的交互

  1. 左图(Q-Former 和 BLIP-2 第一阶段的模型架构),上图红框

    • 输入图像通过 冻结的Image Encoder(图像编码器) 提取初始视觉特征。
    • 视觉特征与一组可学习的查询(Learned Queries,作为嵌入)通过 Q-Former 模块交互(可学习的查询通过 自注意力(Self Attention) 层相互作用,并且通过 交叉注意力(Cross Attention) 层与frozen图像特征相互作用)。
    • 和BLIP一样,BLIP2使用3个目标函数来训练模型,并且它们共享相同的输入格式和模型参数。每个目标函数通过不同的注意力掩码(attention mask)策略来控制查询和文本交互和影响
    • 模型目标分为三个子任务:
      • 图像文本对比学习(ITC)——在隐空间对齐图片编码和文本编码
      • 图文匹配(ITM)——二分类任务,让模型判断图文是否一致
      • 基于图像文本生成(ITG)——下一词预测,让模型学会给定图片输出caption
  2. 右图(注意力掩码策略)

    • 描绘了 Q-Former 不同任务的注意力掩码机制,用于控制查询和文本的交互模式:
      • 双向自注意力掩码(Bi-directional Self-Attention Mask)
        • 用于图像-文本匹配任务(Image-Text Matching)。
        • 允许查询和文本令牌之间的全连接交互。
      • 多模态因果自注意力掩码(Multi-modal Causal Self-Attention Mask)
        • 用于基于图像的文本生成任务(Image-Grounded Text Generation)。
        • 查询令牌可以访问文本令牌(包括过去和当前),但文本令牌仅关注其过去的令牌,保证生成的因果性。
      • 单模态自注意力掩码(Uni-modal Self-Attention Mask)
        • 用于图像-文本对比学习任务(Image-Text Contrastive Learning)。
        • 查询令牌与文本令牌的交互被掩盖,仅进行单模态内部的学习。

论文中实验了两种预训练图像编码器:

  1. ViT-L/14 from CLIP
  2. ViT-G/14 from EVA-CLIP

生成式预训练阶段 Generative Pre-training Stage

这个阶段使用【Q-Former + 冻结的预训练大型语言模型】,在冻结的预训练大型语言模型中引导视觉到语言的生成式学习。经过第一阶段的预训练,Q-Former有效地充当了信息瓶颈,将最有用的信息提供给LLM,同时删除不相关的视觉信息。这减少了LLM学习视觉语言对齐的负担,从而减轻了灾难性的遗忘问题。

预训练过程如下如下图:
在这里插入图片描述

图 3. BLIP-2 的第二阶段视觉到语言生成预训练: 从冻结的大型语言模型(LLMs)中引导生成能力。顶部:从基于解码器的大型语言模型(例如 OPT)中引导。 底部:从基于编码器-解码器的大型语言模型(例如 FlanT5)中引导。 全连接层的作用是将 Q-Former 的输出维度调整为所选语言模型的输入维度。

论文中实验了两种LLM:

  1. 无监督训练的OPT作为Decoder-based LLM,使用语言建模损失(language modeling loss)进行预训练,冻结的 LLM 的任务是根据 Q-Former 的视觉表示生成文本,也就是说直接根据图像生成文本;
  2. 基于指令训练的FlanT5作为Encoder-Decoder-based LLM,使用前缀语言建模损失进行预训练(prefix language modeling loss)预训练,将文本分成两部分,前缀文本perfix test与视觉表示连接起来作为 LLM 编码器的输入,后缀文本用作 LLM 解码器的生成目标,也就是说根据前缀文本+图像生成后缀连续的文本。

  1. 无监督训练的 OPT 作为 Decoder-based LLM

    • OPT(Open Pre-trained Transformer) 是一种基于解码器的语言模型,通常用于自回归文本生成任务。在 BLIP-2 中,OPT 作为解码器使用,结合 Q-Former的视觉表示来生成文本。
    • 训练方式:OPT 使用 语言建模损失(language modeling loss)进行无监督训练。语言建模损失的目标是预测文本序列中的下一个词,典型的任务是让模型根据已有的文本预测下一个词或字符。在 BLIP-2中,任务是让 OPT 根据输入的视觉表示(来自 Q-Former 的输出)生成与图像相关的文本。
      OPT作为解码器,它根据视觉输入生成完整的文本描述,进行 图像到文本的生成。适合用于 图像到文本的直接生成 任务。
  2. 基于指令训练的 FlanT5 作为 Encoder-Decoder-based LLM

    • FlanT5 是一个指令调优版本的 T5(Text-to-Text Transfer Transformer),在其基础上进行了特定任务的优化,使其能够更好地处理各种指令任务。在 BLIP-2 中,FlanT5 作为编码器-解码器模型,其设计允许模型同时进行编码和解码。
    • 训练方式:FlanT5 使用 前缀语言建模损失(prefix language modeling loss)进行训练。这种损失函数的核心思想是将输入分为两个部分:
      • 前缀文本(prefix text):这部分文本与 视觉表示 结合,作为 FlanT5 编码器的输入。
      • 后缀文本(suffix text):这部分文本作为解码器的目标,用于生成与前缀文本相对应的文本内容。
    • 在训练过程中,模型的任务是根据输入的前缀文本和图像表示生成后缀文本。也就是说,模型通过 前缀文本+视觉表示 来生成 后续的文本描述。能够处理 更复杂的多模态任务,适合需要 图像和文本交互理解 的任务。

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

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

相关文章

大数据开发治理--大数据AI公共数据集分析

本文以分析公共数据集的数据示例,为您展示如何使用DataWorks进行简单数据分析工作。本教程以申请免费资源为例为您展示详细操作步骤,您也可以使用付费资源,操作类似。 教程简介 阿里云DataWorks基于多种大数据引擎,为数据仓库、…

ESP32-S3模组上跑通ES8388(13)

接前一篇文章:ESP32-S3模组上跑通ES8388(12) 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回解析了es8388_init函数中的第6段代码,本回继续往下解析。为了便于理解和回顾,再次贴出es8388_init函数源码,在…

【Mac】安装Gradle

1、说明 Gradle 运行依赖 JVM,需要先安装JDK,Gradle 与 JDK的版本对应参见:Java Compatibility IDEA的版本也是有要求Gradle版本的,二者版本对应关系参见:Third-Party Software and Licenses 本次 Gradle 安装版本为…

根据YAML文件创建Conda环境

YAML(全称为YAML Ain’t Markup Language)是一种轻量级的标记语言。在Python中,YAML文件包含conda环境名和依赖,如图所示。 根据yaml文件创建Conda环境 1.切换路径 找到miniAnaconda或Anaconda,打开Anaconda Powersh…

【分组去重】.NET开源 ORM 框架 SqlSugar 系列

💥 .NET开源 ORM 框架 SqlSugar 系列 🎉🎉🎉 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列…

故障诊断 | Transformer-LSTM组合模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | Transformer-LSTM组合模型的故障诊断(Matlab) 源码设计 %% 初始化 clear close all clc disp(此程序务必用2023b及其以上版本的MATLAB!否则会报错!) warning off %

亚马逊云(AWS)使用root用户登录

最近在AWS新开了服务器(EC2),用于学习,遇到一个问题就是默认是用ec2-user用户登录,也需要密钥对。 既然是学习用的服务器,还是想直接用root登录,下面开始修改: 操作系统是&#xff1…

Android笔记【12】脚手架Scaffold和导航Navigation

一、前言 学习课程时,对于自己不懂的点的记录。 对于cy老师第二节课总结。 二、内容 1、PPT介绍scaffold 2、开始代码实操 先新建一个screen包,写一个Homescreen函数,包括四个页面。 再新建一个compenent包,写一个displayText…

HookVip4.0.3 | 可解锁各大应用会员

HookVip是一款可以解锁会员的模块工具,需要搭配相应框架结合使用。这款插件工具支持多种框架如LSPosed、LSPatch、太极、应用转生等,并且完全免费,占用内存小。支持的软件包括now要想、神奇脑波、塔罗牌占卜、爱剪辑、人人视频、咪萌桌面宠物…

猎板 PCB特殊工艺:铸就电子行业核心竞争力新高度

在当今竞争激烈且技术驱动的电子制造领域,印制电路板(PCB)作为电子产品的关键基石,其特殊工艺的发展水平直接影响着整个行业的创新步伐与产品品质。猎板 PCB 凭借在厚铜板、孔口铺铜、HDI 板、大尺寸板以及高频高速板等特殊工艺方…

【教学类-43-25】20241203 数独3宫格的所有可能-使用模版替换(12套样式,空1格-空8格,每套510张,共6120小图)

前期做数独惨宫格的所有排列,共有12套样式,空1格-空8格,每套510张,共6120小图) 【教学类-43-24】20241127 数独3宫格的所有可能(12套样式,空1格-空8格,每套510张,共6120…

Redis+Caffeine 多级缓存数据一致性解决方案

RedisCaffeine 多级缓存数据一致性解决方案 背景 之前写过一篇文章RedisCaffeine 实现两级缓存实战,文章提到了两级缓存RedisCaffeine可以解决缓存雪等问题也可以提高接口的性能,但是可能会出现缓存一致性问题。如果数据频繁的变更,可能会导…

echarts地图立体效果,echarts地图点击事件,echarts地图自定义自定义tooltip

一.地图立体效果 方法1:两层地图叠加 实现原理:geo数组中放入两个地图对象,通过修改zlevel属性以及top,left,right,bottom形成视觉差 配置项参考如下代码: geo: [{zlevel: 2,top: 96,map: map,itemStyle: {color: #091A51ee,opacity: 1,borderWidth: 2,borderColor: #16BAFA…

D87【python 接口自动化学习】- pytest基础用法

day87 pytest运行参数 -m -k 学习日期:20241203 学习目标:pytest基础用法 -- pytest运行参数-m -k 学习笔记: 常用运行参数 pytest运行参数-m -k pytest -m 执行特定的测试用例,markers最好使用英文 [pytest] testpaths./te…

总结拓展十七:特殊采购业务——委外业务

SAP中委外采购业务,又称供应商分包(或外协、转包、、外包、托外等),是企业将部分生产任务委托给外部供应商/集团其他分子公司完成的一种特殊采购业务模式。 委外业务主要有2大类型,分别是标准委外(委外采购…

ESP8266作为TCP客户端或者服务器使用

ESP8266模块,STA模式(与手机搭建TCP通讯,EPS8266为服务端)_esp8266作为station-CSDN博客 ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266 为客户端)_esp8266 sta 连接tcp-CSDN博客…

ATTCK红队评估实战靶场(四)

靶机链接:http://vulnstack.qiyuanxuetang.net/vuln/detail/6/ 环境搭建 新建两张仅主机网卡,一张192.168.183.0网段(内网网卡),一张192.168.157.0网段(模拟外网网段),然后按照拓补…

C 语言 “神秘魔杖”—— 指针初相识,解锁编程魔法大门(一)

文章目录 一、概念1、取地址操作符(&)2、解引用操作符(*)3、指针变量1、 声明和初始化2、 用途 二、内存和地址三、指针变量类型的意义1、 指针变量类型的基本含义2、 举例说明不同类型指针变量的意义 四、const修饰指针1、co…

封装loding加载动画的请求

图片 /*** Loading 状态管理类*/ export class Loading {constructor(timer300) {this.value falsethis.timer timer}/*** 执行异步操作并自动管理 loading 状态* param {Promise|Function|any} target - Promise、函数或其他值* returns {Promise} - 返回请求结果*/async r…

人形机器人训练、机器臂远程操控、VR游戏交互、影视动画制作,一副手套全部解决!

广州虚拟动力基于自研技术推出了多节点mHand Pro动捕数据手套,其最大的特点就是功能集成与高精度捕捉,可以用于人形机器人训练、机器臂远程操控、VR游戏交互、影视动画制作等多种场景。 一、人形机器人训练 mHand Pro动捕数据手套双手共装配16个9轴惯性…