多模态论文笔记——BLIP

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍这几年AIGC火爆的隐藏功臣,多模态模型:BLIP。

文章目录

  • [BLIP(Bootstrapping Language-Image Pre-training)](#BLIP(Bootstrapping Language-Image Pre-training))
    • [1. BLIP 的核心思想](#1. BLIP 的核心思想)
    • [2. BLIP 的模型架构和损失函数](#2. BLIP 的模型架构和损失函数)
      • [视觉编码器Image Encoder(ViT)------提取图片特征](#视觉编码器Image Encoder(ViT)——提取图片特征)
      • [文本编码器Text Encoder(BERT)------提取文本特征](#文本编码器Text Encoder(BERT)——提取文本特征)
      • [视觉文本编码器Image-grounded Text Encoder(变种 BERT)------BERT中插入交叉注意层,从而针对图片特征和文本特征做二分类](#视觉文本编码器Image-grounded Text Encoder(变种 BERT)——BERT中插入交叉注意层,从而针对图片特征和文本特征做二分类)
      • [视觉文本解码器Image-grounded Text Decoder(变种 BERT)------根据图片特征和文本特征做文本生成](#视觉文本解码器Image-grounded Text Decoder(变种 BERT)——根据图片特征和文本特征做文本生成)
      • 总结
    • [3. BLIP 的多任务学习框架](#3. BLIP 的多任务学习框架)
      • [3.1 对比学习任务](#3.1 对比学习任务)
      • [3.2 图文匹配任务](#3.2 图文匹配任务)
      • [3.3 图像到文本生成任务](#3.3 图像到文本生成任务)
      • [3.4 广义的文本到图像重构任务](#3.4 广义的文本到图像重构任务)
    • [4. BLIP 的训练方式](#4. BLIP 的训练方式)
      • [4.1 输入数据质量处理](#4.1 输入数据质量处理)
      • [4.2 自引导学习(Bootstrapping Learning)](#4.2 自引导学习(Bootstrapping Learning))
      • [4.3 多任务联合训练](#4.3 多任务联合训练)
    • [5. BLIP 的应用场景](#5. BLIP 的应用场景)
      • [5.1 图像描述生成](#5.1 图像描述生成)
      • [5.2 跨模态检索](#5.2 跨模态检索)
      • [5.3 零样本学习](#5.3 零样本学习)
    • [6. BLIP 的优势](#6. BLIP 的优势)
      • [6.1 多任务学习](#6.1 多任务学习)
      • [6.2 自引导学习机制](#6.2 自引导学习机制)
      • [6.3 强大的生成能力](#6.3 强大的生成能力)
    • [7. BLIP 的局限性](#7. BLIP 的局限性)
      • [7.1 计算资源需求](#7.1 计算资源需求)
      • [7.2 数据依赖](#7.2 数据依赖)
      • [7.3 复杂的场景生成文本质量不精确](#7.3 复杂的场景生成文本质量不精确)

BLIP(Bootstrapping Language-Image Pre-training)

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

BLIP 主要用于处理图像与文本的多模态任务,例如图像描述生成文本到图像的检索图像到文本的匹配等。

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


1. BLIP 的核心思想

BLIP 通过结合对比学习图文匹配生成任务 ,模型能够更高效地学习图像与文本之间的关系。还在模型训练的过程中,引入了自引导机制,使得模型在训练的过程中,可以自我提升性能。

2. BLIP 的模型架构和损失函数

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

参考:AI绘画原理解析:从CLIP、BLIP到DALLE、DALLE 2、DALLE 3、Stable Diffusion

BLIP模型主要由4个部分组成,从左至右分别是

视觉编码器Image Encoder(ViT)------提取图片特征

视觉编码器本质就是ViT 的架构 :将输入图像分割成一个个的 Patch 并将它们编码为一系列 Image Embedding,并使用额外的 [CLS] token 来表示全局的图像特征

文本编码器Text Encoder(BERT)------提取文本特征

文本编码器就是 BERT 的架构 ,其中 [CLS] token 附加到文本输入的开头以总结句子,作用是提取文本特征与第1部分的图像特征做对比学习

对比学习目标函数ITC

在这个过程中会训练一个文本-图像特征对比学习目标函数 (Image-Text Contrastive Loss, ITC )。ITC 作用于第1部分的视觉编码器(ViT)和第2部分的文本编码器(BERT),目标是 对齐视觉和文本的特征空间 ,方法是使得正样本图文对的相似性更大,负样本图文对的相似性更低。【和CLIP一样】

ITC 使用对比学习损失(如 InfoNCE Loss),它与 CLIP 类似。给定一个图像和文本的批次,模型最大化图像和其匹配文本的相似度,同时最小化图像和其他文本的相似度。

损失函数可以表示为:

L L T C = − 1 N ∑ i = 1 N ( log ⁡ exp ⁡ ( sim ( v i , t i ) / τ ) ∑ j = 1 N exp ⁡ ( sim ( v i , t j ) / τ ) + log ⁡ exp ⁡ ( sim ( v i , t i ) / τ ) ∑ j = 1 N exp ⁡ ( sim ( v j , t i ) / τ ) ) \mathcal{L}{LTC} = - \frac{1}{N}\sum{i = 1}^{N}\left(\log\frac{\exp(\text{sim}(v_i,t_i)/\tau)}{\sum_{j = 1}^{N}\exp(\text{sim}(v_i,t_j)/\tau)}+\log\frac{\exp(\text{sim}(v_i,t_i)/\tau)}{\sum_{j = 1}^{N}\exp(\text{sim}(v_j,t_i)/\tau)}\right) LLTC=−N1i=1∑N(log∑j=1Nexp(sim(vi,tj)/τ)exp(sim(vi,ti)/τ)+log∑j=1Nexp(sim(vj,ti)/τ)exp(sim(vi,ti)/τ))

其中,( τ \tau τ ) 是温度参数,( v i v_i vi ) 和 ( t i t_i ti ) 分别是图像和文本的嵌入表示。

视觉文本编码器Image-grounded Text Encoder(变种 BERT)------BERT中插入交叉注意层,从而针对图片特征和文本特征做二分类

视觉文本编码器的具体做法是在文本编码器(比如BERT)的每个transformer block的自注意(Bi Self-Att)层和前馈网络(Feed Forward)之间额外插入一个交叉注意(Cross-Attention),以引入视觉特征 ,作用是根据 ViT 给的图片特征和文本输入做二分类 ,所以使用的是编码器 ,且注意力部分是双向 的 Self-Attention,且添加一个额外的 [Encode] token ,作为图像文本的联合表征

图文匹配目标函数ITM

在这个过程中则训练一个图文匹配目标函数 (Image-Text Matching Loss, ITM )

ITM 作用于第1部分的视觉编码器第3部分的视觉文本编码器 ,是一个二分类 任务,目标是学习图像文本的联合表征 ,使用一个分类头来预测 image-text pair 的 正匹配 还是 负匹配,目的是学习 image-text 的多模态表示,调整视觉和语言之间的细粒度对齐,作者在这里依然使用了 ALBEF 中的 hard negative mining 技术。

ITM 使用二分类交叉熵损失 。对于每一对图像和文本,模型会预测它们是否匹配,匹配的对标签为 1,不匹配的对标签为 0。

损失函数可以表示为:

L I T M = − 1 N ∑ i = 1 N ( y i log ⁡ ( p i ) + ( 1 − y i ) log ⁡ ( 1 − p i ) ) \mathcal{L}{ITM} = - \frac{1}{N}\sum{i = 1}^{N}(y_i\log(p_i)+(1 - y_i)\log(1 - p_i)) LITM=−N1i=1∑N(yilog(pi)+(1−yi)log(1−pi))

其中,( y i y_i yi ) 表示是否匹配(1 表示匹配,0 表示不匹配),( p i p_i pi ) 是模型预测的匹配概率。

视觉文本解码器Image-grounded Text Decoder(变种 BERT)------根据图片特征和文本特征做文本生成

视觉文本解码器使用 Cross-Attention,作用是根据 ViT 给的图片特征和文本输入做文本生成的任务 ,所以使用的是解码器 ,且将 上图第3部分的 Image-grounded Text Encoder 结构中的 Bi Self-Att 替换为 Causal Self-Att,目标是预测下一个 token ,且添加一个额外的 [Decode] token 和结束 token,作为生成结果的起点和终点

一个需要注意的点是:相同颜色的部分是参数共享的,即视觉文本编码器和视觉文本解码器共享除 Self-Attention 层之外的所有参数。每个 image-text 在输入时,image 部分只需要过一个 ViT 模型,text 部分需要过3次文本模型

语言模型目标函数LM

过程中训练一个语言模型目标函数 (Language Modeling Loss, LM )。

毕竟由于BLIP 包含解码器,用于生成任务 。既然有这个任务需求,那就意味着需要一个针对于生成任务的语言模型目标函数,LM 作用于第1部分的视觉编码器第4部分的视觉文本解码器 ,目标是根据给定的图像以自回归方式来生成关于文本的描述

与 VLP(Vision-Language Pre-training 的简称,指视觉-语言联合预训练模型。其目标是通过联合训练视觉和语言模态,学习一个能够理解和生成多模态信息的模型。) 中广泛使用的 MLM 损失(完形填空)相比,LM 使模型能够将视觉信息转换为连贯的字幕

  • 目标 :根据输入图像生成自然语言描述。该任务用于训练模型生成语义丰富的文本,用于描述输入图像的内容
  • 损失函数 :LM 使用自回归的交叉熵损失 。给定图像的特征表示,解码器生成描述性文本,每一步的预测结果目标词进行对比 ,计算交叉熵损失。
    损失函数可以表示为:

总结

  1. 第1部分的视觉编码器(ViT)和第2部分的文本编码器(BERT)用于对比学习任务,处理跨模态检索和分类任务。
  2. 第1部分的视觉编码器和第3部分的视觉文本编码器用于图文匹配 ,学习 image-text 的多模态表征学习任务,调整视觉和语言之间的细粒度对齐,处理多模态理解任务
  3. 第1部分的视觉编码器和第4部分的视觉文本解码器用于文本生成任务 ,目标是根据给定的图像以自回归方式来生成关于文本的描述。

BLIP 的总损失是多种任务损失的加权和,具体为:

L B L I P = λ I T C L I T C + λ I T M L I T M + λ L M L L M \mathcal{L}{BLIP} = \lambda{ITC} \mathcal{L}{ITC} + \lambda{ITM} \mathcal{L}{ITM} + \lambda{LM} \mathcal{L}_{LM} LBLIP=λITCLITC+λITMLITM+λLMLLM

  • ( λ I T C \lambda_{ITC} λITC )、( λ I T M \lambda_{ITM} λITM ) 和 ( λ L M \lambda_{LM} λLM ) 是损失的权重,用于平衡各任务的重要性。

BLIP 的损失函数通过整合 ITC、ITM 和 LM 三种目标,兼顾多模态对齐、理解和生成任务:

  1. ITC Loss:优化图像和文本模态的联合表示。
  2. ITM Loss:增强模型的匹配能力和判别能力。
  3. LM Loss:用于生成任务,使模型能够生成连贯的文本描述。
  • 自引导学习 是一种自我改进的学习机制 ,主要用于训练阶段,通过利用模型自身生成的输出来进一步优化模型,尤其适用于数据较少或无监督的场景。
  • 自回归 则是一种生成式模型 ,在生成阶段 使用,按顺序逐步生成输出,每一步依赖于之前的生成结果,主要用于自然语言生成和时间序列等任务。较少或无监督的场景,强调逐步生成每个元素

3. BLIP 的多任务学习框架

BLIP 的多任务学习框架包括以下几种核心任务:

3.1 对比学习任务

  • 与 CLIP 类似,BLIP 使用对比学习 来将图像和文本映射到一个共享的嵌入空间中。在该任务中,模型会最大化正确图像-文本对之间的相似度最小化不匹配对的相似度
  • 这种对比学习使模型能够很好地理解图像和文本之间的关系,适用于图像到文本匹配文本到图像检索任务。

3.2 图文匹配任务

  • CLIP 的训练目标是让图像和文本对彼此对齐 ,但它并没有显式地引入一个图文匹配任务来判断图像和文本是否匹配。CLIP 通过对比学习获得图文对的相似性,而不是直接判断配对关系。
  • BLIP 引入了 图文匹配(ITM) 任务,用于判断图像和文本是否匹配 。这一任务使用了二分类交叉熵损失,直接对匹配和不匹配的图文对进行区分。ITM 任务的引入可以让 BLIP 更有效地进行图文匹配和图文检索,尤其在需要判断图像和文本是否相关的任务中具有优势。

ITM 优化的优势:ITM 任务的引入使 BLIP 能够更精确地判断图像和文本之间的语义一致性,从而提升了图文检索任务的效果。

3.3 图像到文本生成任务

  • BLIP 引入了图像到文本生成任务 ,这是 BLIP 的一个关键创新。模型通过生成与图像对应的文本描述,来提升对图像语义的理解能力
  • 该任务不仅让 BLIP 能够处理多模态检索,还使它具有很强的生成能力,能够自动生成与图像相关的自然语言描述。

3.4 广义的文本到图像重构任务

  • BLIP 还支持文本到图像重构 任务,这一任务要求模型通过给定的文本生成与之相关的图像表示 。这种方式使模型理解文本语义的同时,推断出相应的视觉信息
  • 文本到图像的重构任务强化了模型的多模态对齐能力,使其在理解复杂文本和图像的关联时表现更好。

文本到图像重构:BLIP 可以根据文本线索推测图像的特征或对图像进行重构,但这更多是指在已有图像的基础上(已经有一个图像的嵌入表示)进行细化和调整,而不是从头生成图像

4. BLIP 的训练方式

BLIP的学习框架如下所示,详细介绍了模型训练中的数据优化流程:

图 3. BLIP 的学习框架。我们引入了一个生成器(Captioner)来为网络图像生成合成的描述 ,并引入了一个过滤器(Filter)来去除噪声图像-文本对。生成器和过滤器均从同一个预训练模型初始化,并在一个小规模的人工标注数据集上分别进行微调。通过这种方式生成的增强数据集被用于训练一个新的预训练模型。

整个数据优化流程如下:

  1. 数据过滤

    • 初始 Web 数据对 ( I W , T W ) (I_W, T_W) (IW,TW) Filter 过滤,得到高质量子集 ( I W , T W ′ ) (I_W, T_W') (IW,TW′)。
  2. 合成数据生成

    • Captioner 为 Web 图像生成合成的描述文本 ( I W , T S ) (I_W, T_S) (IW,TS)。
  3. 数据增强

    • 将过滤后的 Web 数据 ( I W , T W ′ ) (I_W, T_W') (IW,TW′)和合成的描述文本数据 ( I W , T S ) (I_W, T_S) (IW,TS)加入到原始数据集中,进一步增强数据量和质量。
  4. 人工标注数据的贡献

    • 高质量的人工标注数据 ( I H , T H ) (I_H, T_H) (IH,TH)作为模型优化的重要参考,用于对 Filter 和 Captioner 进行微调。

最终,扩展和优化后的数据集被用来训练新的多模态模型。

4.1 输入数据质量处理

BLIP 使用了图像-文本配对数据进行训练。类似于 CLIP,这些配对数据可能来自社交媒体上的图像和其描述文本。

CLIP 的数据来源于 Web 上爬来的图像-文本对 ,采用对比学习的方式,基本属于自监督了,不太需要做数据标注;

而BLIP的输入数据集由两部分组成:

  1. Web 数据:从互联网上获取的大规模图像和文本对(((I_W, T_W)))。
  2. 人工标注数据:小规模的高质量人工标注图像-文本对(((I_H, T_H)))。

BLIP 为了去除Web 数据噪声大的缺点 ,提出了Captioning and Filtering (CapFilt) 模块 ,并使用人工标注数据 进行微调。这个模块就是用来减小噪声、丰富数据的,主要包括两个模块:即字幕与过滤器方法CapFilt (Captioning and Filtering),详细介绍参考4.2节的自引导学习。

4.2 自引导学习(Bootstrapping Learning)

BLIP 的自引导机制允许模型根据自身的输出改进输入 的表示。这意味着模型在训练过程中,可以根据自己生成的文本或图像 表示进一步调整权重 ,从而改进模型性能。自引导机制在低监督或无监督学习场景中表现出色,能够有效提高训练效率

这一机制主要通过以上一节提到的CapFilt实现,CapFilt 方法包含两个模块::

  • 字幕器 Captioner用于生成给定Web图像的字幕 ,改进低质量输入文本表示(如网络爬取文本)。相当于给一张网络图片,生成字幕(合成文本)。它是一个视觉文本解码器(类似上述BLIP模型结构的第4部分)。
  • 过滤器 Filter :对图像-文本对进行质量评估去除嘈杂的图像-文本对。过滤掉噪声图文对image-text pair,它是一个视觉文本编码器(对类似上述BLIP模型结构的第3部分和第一部分),看原始 Web 文本/合成文本是否与图像匹配。

生成器 (Captioner) 和 过滤器 (Filter) 都是从相同的预训练MED模型 初始化的,并在COCO数据集上单独微调

  • MED(Multimodal Encoder-Decoder)模型:一个多模态模型,用于编码图像和文本之间的语义关系,支持生成任务(如图像描述)和匹配任务(如文本与图像的相关性判断)。
  • COCO 数据集:一个常用的高质量数据集,包含丰富的图像和其详细的文本描述,是多模态任务的重要基准。

自引导学习和自回归的区别:

  • 自引导学习 是一种自我改进的学习机制 ,主要用于训练阶段,通过利用模型自身生成的输出来进改进输入,进而优化训练。
  • 自回归 则是一种生成式模型 ,在生成阶段 使用,按顺序逐步生成输出,每一步依赖于之前的生成结果,通过利用模型已经生成的输出,优化新的输出

4.3 多任务联合训练

BLIP 的训练过程中,会同时优化对比学习、生成任务和图文匹配 。这种多任务学习方式让模型不仅能够进行对比学习 ,还能进行处理图像-文本匹配图生文

  • 多任务损失 :模型会根据对比学习任务和生成任务的表现来计算联合损失,从而优化图像编码器和文本编码器/解码器。

5. BLIP 的应用场景

5.1 图像描述生成

  • 步骤
    1. 图像编码器生成图像的嵌入表示。
    2. 文本解码器根据图像嵌入,逐步生成文本描述。

5.2 跨模态检索

文本检索图像

  • 步骤
    1. 文本编码器将输入的文本描述编码成向量。
    2. 模型在嵌入空间中找到与该文本向量最接近的图像向量。

图像检索文本

  • 步骤
    1. 图像编码器将输入的图像编码成向量。
    2. 文本编码器将文本候选描述编码为向量,模型找到与图像向量最接近的文本向量。

5.3 零样本学习

BLIP 在零样本学习场景中也具有一定的潜力。通过预训练的对比学习和生成任务,BLIP 可以在没有特定领域标注数据的情况下,进行图像分类、描述生成和跨模态检索。

6. BLIP 的优势

6.1 多任务学习

BLIP 结合了对比学习生成任务图文匹配,使其能够同时在理解和生成方面表现优异。这种多任务学习方式让 BLIP 能够更好地理解图像和文本之间的关系。

6.2 自引导学习机制

BLIP 引入了自引导学习机制 ,使得模型能够通过自己的输出改进训练。这一机制提高了模型在低监督或无监督场景中的表现,极大提升了数据效率。

6.3 强大的生成能力

BLIP 不仅能够理解多模态数据,还能够生成自然语言描述。这使得 BLIP 在生成任务中也表现出色,特别适合图像描述生成任务。

7. BLIP 的局限性

尽管 BLIP 在多模态任务中表现优异,但它也有一些局限性需要注意:

7.1 计算资源需求

BLIP 模型的训练依赖于大量的计算资源。

7.2 数据依赖

虽然 BLIP 引入了自引导学习机制,能够在低监督环境下提升性能 ,但它依然依赖于大量的高质量图像-文本配对数据来进行预训练。

7.3 复杂的场景生成文本质量不精确

某些复杂的场景中,生成的文本可能缺乏细节或者不够精确。

相关推荐
熙曦Sakura8 分钟前
【深度学习】数据预处理
人工智能·深度学习
刘大猫2610 分钟前
Openldap集成Kerberos
大数据·人工智能·机器学习
XianxinMao1 小时前
《大型语言模型与强化学习的融合:探索问题的新解决方案与开源验证需求》
人工智能·语言模型·开源
2401_897444641 小时前
AI驱动的可演化架构与前端开发效率
前端·人工智能·架构
墨绿色的摆渡人1 小时前
论文笔记(四十七)Diffusion policy: Visuomotor policy learning via action diffusion(下)
论文阅读
Zik----1 小时前
Pytorch初学
人工智能·pytorch·python
stone-jack1 小时前
from pytorch3d import _C问题
人工智能·pytorch·python
KeyPan1 小时前
【机器学习:十四、TensorFlow与PyTorch的对比分析】
人工智能·pytorch·python·深度学习·机器学习·计算机视觉·分类
cdut_suye1 小时前
基于Linux环境的进度条实现
linux·运维·服务器·数据库·人工智能·深度学习·中间件
青春~飞鸟1 小时前
再次梳理ISP的大致流程
图像处理·人工智能·计算机视觉