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

🌺历史文章列表🌺

  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.mzph.cn/diannao/62721.shtml

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

相关文章

【Android】ARouter——强大的路由框架

引言 在我们使用组件化的时候,活动并不在一个模块当中,但是毕竟是一个程序我们需要在不同的模块之间进行跳转,我们会首先想到在需要进行通信的模块下都添加相应的依赖就可以解决这个问题,但这样无疑增加了各个组件之间的耦合性。…

Apache Doris 现行版本 Docker-Compose 运行教程

特别注意!Doris On Docker 部署方式仅限于开发环境或者功能测试环境,不建议生产环境部署! 如有生产环境或性能测试集群部署诉求,请使用裸机/虚机部署或K8S Operator部署方案! 原文阅读:Apache Doris 现行版…

springboot363高校竞赛管理系统(论文+源码)_kaic

毕 业 设 计(论 文) 题目:高校竞赛管理系统的设计与实现 摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解…

RAG数据拆分之PDF

引言RAG数据简介PDF解析方法及工具代码实现总结 二、正文内容 引言 本文将介绍如何将RAG数据拆分至PDF格式,并探讨PDF解析的方法和工具,最后提供代码示例。 RAG数据简介 RAG(关系型属性图)是一种用于表示实体及其关系的图数据…

labelimg每次标注的时候自动导入预设标签

背景说明 最近在做一个视频行为识别项目的时候,已经采集了视频样例片段,需要对视频的行为动作进行图片标注,自己很快完成了视频到图片的分割,在进行图片标注的时候,选用的标注工具是labelimg,由于视频转成图片后数量很…

Java对接AI大模型

随着AI大模型技术的升起,人们越来越感觉到生活上的便捷以及人机对话照进现实.什么是大模型呢? 大模型(Large Model),通常是指参数量非常庞大的深度学习模型,特别是在自然语言处理(NLP)、计算机视觉&#…

Java开发网络安全常见问题

1、敏感信息明文传输 用户敏感信息如手机号、银行卡号、验证码等涉及个人隐私的敏感信息不通过任何加密直接明文传输。 如下图中小红书APP 的手机短信验证码登录接口,此处没有对用户手机号和验证码等信息进行加密传输,可以很简单的截取并开展一些合法的…

【CSS in Depth 2 精译_063】10.2 深入理解 CSS 容器查询中的容器

当前内容所在位置(可进入专栏查看其他译好的章节内容) 【第十章 CSS 容器查询】 ✔️ 10.1 容器查询的一个简单示例 10.1.1 容器尺寸查询的用法 10.2 深入理解容器 ✔️ 10.2.1 容器的类型 ✔️10.2.2 容器的名称 ✔️10.2.3 容器与模块化 CSS ✔️ 10.3…

基于Springboot开发的时光兼职网

一、功能介绍 时光兼职网包含管理员、用户、商家三个角色以及前后台系统。 前台系统功能 首页、兼职信息推荐、查看更多等 职位申请、申请日期、上传简历、点击下载简历、留言反馈等 个人中心、上传图片、更新信息等 后台系统功能 用户登录: 个人中心、修改密码…

计算机的错误计算(一百七十一)

摘要 探讨 MATLAB 中秦九韶(Horner)多项式的错误计算。 例1. 用秦九韶(Horner)算法计算(一百零七)例1中多项式 直接贴图吧: 这样,MATLAB 给出的仍然是错误结果,因为准…

代码美学3:RGB转化+MATLAB制作渐变色

RGB颜色转化器(转换成matlab可以读取的形式) n input(请输入 n:); color_matrix cell(1, n); for i 1:nR input(请输入 R 值:);G input(请输入 G 值:);B input(请输入 B 值:);color_matrix{i} [R/2…

kafka数据在服务端时怎么写入的

学习背景 接着上篇,我们来聊聊kafka数据在服务端怎么写入的 服务端写入 在介绍服务端的写流程之前,我们先要理解服务端的几个角色之间的关系。 假设我们有一个由3个broker组成的kafka集群,我们在这个集群上创建一个topic叫做shitu-topic&…

rabbitmq原理及命令

目录 一、RabbitMQ原理1、交换机(Exchange)fanoutdirecttopicheaders(很少用到) 2、队列Queue3、Virtual Hosts4、基础对象 二、RabbitMQ的一些基本操作:1、用户管理2、用户角色3、vhost4、开启web管理接口5、批量删除队列 一、Ra…

Kali Linux怎么开python虚拟环境

相信很多朋友再学习的过程中都会遇到一些pip失效,或者报错的时候,他们要求我们要使用虚拟环境,但是不知道怎么搭建,下面这篇文章就来告诉你如何搭建虚拟环境,这个方法在所有Linux的服务器都通用,就两行命令…

【博主推荐】C# Winform 拼图小游戏源码详解(附源码)

文章目录 前言摘要1.设计来源拼图小游戏讲解1.1 拼图主界面设计1.2 一般难度拼图效果1.3 普通难度拼图效果1.4 困难难度拼图效果1.5 地域难度拼图效果1.6 内置五种拼图效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载结束语 前言 在数字浪潮汹涌澎湃的时代,程序开…

React Native学习笔记(三)

一 组件简介 1.1 简介 RN中的核心组件,是对原生组件的封装 原生组件:Android或ios内的组件核心组件:RN中常用的,来自react-native的组件 原生组件 在 Android 开发中是使用 Kotlin 或 Java 来编写视图;在 iOS 开发…

视觉语言动作模型VLA的持续升级:从π0之参考基线Octo到OpenVLA、TinyVLA、DeeR-VLA、3D-VLA

第一部分 VLA模型π0之参考基线Octo 1.1 Octo的提出背景与其整体架构 1.1.1 Octo的提出背景与相关工作 许多研究使用从机器人收集的大量轨迹数据集来训练策略 从早期使用自主数据收集来扩展策略训练的工作[71,48,41,19-Robonet,27,30]到最近探索将现代基于transformer的策略…

C与指针。

目录 1_指针理解 1.1变量的值 1.2变量的地址 1.3指针 1.4取变量的地址 2_分析指针 2.1分析指针变量的要素 2.2根据需求定义指针变量 3_指针的使用 3.1指针对变量的读操作 3.2指针对变量的写操作 4_指针占用空间的大小与位移 4.1指针占用空间的大小 4.2指针的位移…

单片机学习笔记 15. 串口通信(理论)

更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…

树莓派5+文心一言 -> 智能音箱

一、简介 效果:运行起来后,可以连续对话 硬件:树莓派5、麦克风、音箱,成本500-1000 软件:snowboy作为唤醒词、百度语音作为语音识别、brain作为指令匹配、百度文心一言作为对话模块、微软的edge-tts语音合成... 二…