【大模型系列】统一图文理解与生成(BLIP/BLIPv2/InstructBLIP)

1 BLIP(2022, Salesforce Research)

BLIP:统一视觉-语言理解和生成的自举多模态模型,其下游的应用可以为检索任务、描述任务、VQA任务(视觉问答)、NLVR(Natural Language Vision Reasoning)

1.1 简介

BLIP(BLIP: Bootstrapping Language-Image Pretraining for Unified Vision-Language Understanding and Generation)是Salesforce Research在2022年公开的一个统一理解和生成的多模态模型,该方法的Motivaion如下:

  • 问题一:目前VLP(Vision-Language Pre-training)数据大多来自于网络爬取,如CLIP。其中的caption包含很多噪声,不是一个理想的监督来源;
  • 问题二:在以往的VLP框架中,仅在理解任务或者生成任务方面表现出色,很少有可以兼顾的模型。

BLIP针对以上的两个问题,提出了解决方案:

  • 针对问题一:提出一种bootstrapping caption的方案来“提纯”带噪声的网络爬取数据,从而提升多模态模型的能力;
  • 针对问题二:提出一种新的VLP框架BLIP统一视觉语言理解和生成任务,比现有的方法更适应广泛的下游任务;

1.2 数据角度

  • 先用含噪声的数据训练一遍BLIP
  • 再使用BLIP的生成功能Captioner生成一系列的字幕,把生成的字幕通过Filter过滤一遍得到干净的数据
  • 最后使用干净的数据训练一遍BLIP

Step1: 用人工标注的数据集图文对{Ih, Th}对预训练模型Image-ground text encoder和decoder进行微调;

Step2: 遍历web datasets {Iw, Tw}进行以下操作:

  • Step2.1: 通过image-ground text decoder(Captioner)预测Iw的caption Ts,此时图片有2个图文对,一个是网络上爬取的{Iw,Tw},一个是预测的{Iw, Ts};
  • Step2.2: 通过Image-ground text encoder(Filter)来判别{Iw,Tw}、{Iw, Ts}的图文是否matching,过滤不匹配的图文对;

Step3: 汇总所有匹配的图文对D = {{Iw,Tw},{Iw,Ts},{Ih, Th}}
在这里插入图片描述

1.3 模型角度

模型涉及4个结构:

  • Image Encoder (ViT) : 首先进行图像特征的提取,这个前向过程相对较重,就是ViT的架构;
  • Text Encoder (BERT) : 这是一个标准的 BERT,这里用 ITC (Image-Text Contrastive Loss) 目标函数激活 Text Encoder 模块,目标是对齐 Image Encoder Transformer 和 Text Encoder Transformer 的特征空间;其中 [CLS] token 附加到文本输入的开头以总结句子。作用是提取文本特征做对比学习。
  • Image-grounded Text Encoder (变种 BERT,Filter):在标准 BERT 的结构里,于 Bi Self-Att 和 Feed Forward 之间插入 Cross Attention (CA) 模块,以引入视觉特征。这里用 ITM (Image-Text Matching Loss) 目标函数激活,ITM 是一个二分类任务,用来预测 image-text pair 的 正匹配 还是 负匹配,目的是学习 image-text 的多模态表示,调整视觉和语言之间的细粒度对齐;添加一个额外的 [Encode] token,作为图像文本的联合表征。
  • Image-grounded Text Decoder (变种 BERT,Captioner) 将 Image-grounded Text Encoder 结构中的 Bi Self-Att 替换为 Causal Self-Att。这里用 Language Modeling Loss (LM) 目标函数激活,目标是生成给定图像的文本描述。添加一个额外的 [Decode] token 和结束 token,作为生成结果的起点和终点。

颜色相同的部分表示参数共享,即视觉-文本编码器和视觉-文本解码器共享除self-attention层之外的所有参数。每个image-text在输入时,Image只需要经过一个ViT模型,text部分需要经过3次BERT模型。

1.4 BLIP预训练的目标

BLIP 在预训练期间联合优化了3个目标,有两个理解任务的目标函数和一个生成任务的目标函数。

对比学习目标函数 (Image-Text Contrastive Loss, ITC)

ITC 作用于1 视觉编码器 和 2 文本编码器,目标是对齐视觉和文本的特征空间。方法是使得正样本图文对的相似性更大,负样本图文对的相似性更低,在 ALBEF 里面也有使用到。作者在这里依然使用了 ALBEF 中的动量编码器,它的目的是产生一些伪标签,辅助模型的训练。

图文匹配目标函数 (Image-Text Matching Loss, ITM)

ITM 作用于1 视觉编码器 和 3 视觉文本编码器,目标是学习图像文本的联合表征,以捕获视觉和语言之间的细粒度对齐。ITM 是一个二分类任务,使用一个分类头来预测图像文本对是正样本还是负样本。作者在这里依然使用了 ALBEF 中的 hard negative mining 技术。

语言模型目标函数 (Language Modeling Loss, LM)

BLIP 包含解码器,用于生成任务。既然有这个任务需求,那就意味着需要一个针对于生成任务的语言模型目标函数。LM 作用于1 视觉编码器 和 4 视觉文本编码器,目标是根据给定的图像以自回归方式来生成关于文本的描述。与 VLP 中广泛使用的 MLM 损失 (完形填空) 相比,LM 使模型能够将视觉信息转换为连贯的字幕。

2 BLIP2(ICML2023, Salesforce)

BLIPv2:节约多模态训练成本,冻结预训练好的视觉语言模型参数

2.1 简介

BLIP2也是salesforce在2023发表在ICML2023上的方法,这个工作提出了一种借助现成的冻结参数的预训练视觉模型和大型语言模型的,高效的视觉语言预训练方法。但是,简单的冻结预训练好的视觉模型的参数或者语言模型的参数会带来一个问题:就是视觉特征的空间和文本特征的空间,它不容易对齐。那么为了解决这个问题,BLIP-2 提出了一个轻量级的 Querying Transformer,该 Transformer 分两个阶段进行预训练。

  • 第一阶段从冻结的视觉编码器中引导多模态学习,
  • 第二阶段从冻结的文本编码器中引导多模态学习。
    在这里插入图片描述

2.2 模型架构

在这里插入图片描述
在这里插入图片描述

  • QFormer(Querying Transformer): 用来对齐图片和文本特征,它包含图像transformer和文本transformer两个模块,后者少一个cross-attention层,且两个transformer共享self-attention参数;
  • Image Encoder: CLIP训练的Vit-L/14,EVA-CLIP训练的ViT-g/14
  • Text Encoder: OPT,FlanT5

2.3 训练细节

参考资料:https://zhuanlan.zhihu.com/p/664011842

Q-Former训练第一步:联合视觉编码器训练

Q-Former 训练的第一步,作者将 Q-Former 连接到冻结参数的图像编码器,并使用图像-文本对进行预训练,那么这一步的目标是训练好 Q-Former,以便 Queries 可以学习到如何更好地结合文本提取图片信息。

训练的目标函数,作者遵循 BLIP 的做法,联合优化3个具有相同输入格式和模型参数的预训练目标,每个目标函数使用不同的 mask Attention 来控制注意力的交互。

1. 图文对比学习(Image-Text Contrastive Learning,ITC)

与常规ITC任务不同的是:单个图片BLIP2产生的image embedding有32个(等于learned query的数量),而text embedding只有1个。BLIP2的操作是,同时计算32个image embedding与text embedding的距离,仅取最近的计算loss。下图详细梳理了整体pipeline及对应的shape变化(忽略了batchsize)

2. 图文匹配任务(Image-Text Matching,ITM)

这是多模态预训练中的经典目标函数,旨在更加细粒度地对齐图像和文本的表征,使其互信息最大化

此时会将query embedding与text embedding拼接起来作为输入,送入到QFormer中的Image Transformer中,通过一个二分类线性分类器,最后对Qformer在query embedding位置的输出向量取平均后进行预测。下图中详细展示了整体pipeline与shape变化(包含batch size维度)。

3. 基于图像的文本生成(Image-Grounded Text Generation,ITG)

ITG 给定一张输入图片,旨在训练 Q-Former 生成对应的文本描述。此处直接用QFormer的text transformer做image caption任务。有一个细节值得注意:作者将图片与文本表征的交互放到了self-attention中。

Q-Former训练第二步:联合视觉编码器和大型语言模型训练 在生成预训练的阶段,作者把 Q-Former 和冻结参数的 LLM 连接起来,以利用 LLM 的文本生成能力。 其过程如下:

  • 输入图片到Image Encoder后得到图像的表征;
  • 图像表征与Queries一起送入到Q-Former中得到Queries的输出;
  • 再经过全连接层与Text tokens的维度对齐之后,输入给LLM Decoder中进行解码预测

在这里插入图片描述

作者尝试了2种大语言模型,分别时基于Decoder-only和介于Encoder-Decoder架构

  • Decoder-Only架构:使用语言建模目标函数进行训练,冻结参数的LLM任务时根据Q-Former提供的视觉表征俩生成预测文本;
  • Encoder-Decoder架构:把LLM分成两段,前缀模板随着Queries的输出喂给LLM的Encoder,希望Decoder输出后缀预测;

3 InstructBLIP(2023, Salesforce)

主要工作:基于BLIPv2,将指令微调的范式引入到视觉语言模型上。

文章的主要贡献:

  • 将26个数据集转化成instruction tuning的格式,全面系统地研究了指令微调技术在视觉-语言模型上使用;
  • 提出了一个基于指令(instruct-aware)的视觉特征提取框架;

3.1 指令微调技术(Instruction-tuning)

参考资料:https://www.datalearner.com/blog/1051681306547159

指令微调技术的主要思想就是在输入阶段对指令做调整,使其得到更好的结果输出。如对于问题任务,Instruction可以提供具体的指令,例如:“请回答下列问题:谁是美国的第一位总统?”。以InstructGPT为例,其基本流程如下:

  • 准备自然语言指令集: 针对特定任务,准备一组自然语言指令,描述任务类型和任务目标,例如情感分类任务的指令可以是“该文本的情感是正面的还是负面的?”。
  • 准备训练数据集: 针对特定任务,准备一个标记化的数据集,其中每个数据样本都包含输入文本和标签,例如情感分类任务的标签可以是“正面”或“负面”。
  • 将自然语言指令和数据集转换为模型输入: 将自然语言指令和数据集转换为模型输入,例如对于情感分类任务,将自然语言指令和文本拼接作为输入,例如:“该文本的情感是正面的还是负面的?这家餐厅的食物很好吃。”
  • 在指令上进行微调: 在指令上进行微调,以适应特定任务的需求,提高模型在任务上的性能。

这样的方式训练了出来的模型可以让模型更好地识别输入的意图,同时也在zero-shot中表现更好!InstructBLIP的自然语言指令集模板如下:

在这里插入图片描述

3.2 数据集准备

在这里插入图片描述

基于上一节的自然语言指令集模板,将26个数据集转化成Instruction tuning的形式。 其中13个用于训练(held-in),剩余13个用于验证和测试(held-out)。

在训练期间,把所有训练集held-in的数据混合后,在不同任务中均匀采样instruction templates,语言建模损失函数训练:给定输入图片和Instruction templates,希望它输出回答。

为了避免过拟合较小的数据集,欠拟合较大的数据集,作者修改了采样概率,数据集越大的,采样概率越高,越小的,采样概率越低:p = sqrt(S) / Σ(sqrt(Si)),其中S是每个数据集的大小。

3.3 Instruction-aware视觉特征提取框架

在这里插入图片描述

结构上:Image encoder(ViT-g/14)、LLM(FlanT5-XL-3B,FlanT5-XXL-11B,Vicuna-13B)都冻结,只微调Q-Former 。其中可学习的Queries通过Self-attention层与Instructions进行交互,可学习的Queries通过Cross-attention再与Image embeddings进行交互,这样就可以鼓励网络提取与任务相关的图像特征,整个过程非常直观和符合直觉。

推理阶段:

  • 针对大部分描述性任务,如 image captioning,open-ended VQA 等,InstructBLIP 可以直接使用 LLM 生成的文本作为输出;
  • 针对选择性任务,如 classification 和 multi-choice VQA ,将LLM生成的内容词汇限制为候选列表进行排序,计算每个候选的对数似然,选择最高值的一个作为最终预测。
<think>好的,用户的问题是关于在IT环境中了解和参BLIP相关的实验。首先,我需要明确BLIP在IT领域的应用场景,可能涉及自然语言处理和计算机视觉的结合,比如图像描述、视觉问答等。根据用户提供的引用,特别是引用[3],BLIP-2使用了冻结的图像编码器和大型语言模型,因此实验可能涉及这两个模块的协同工作。 接下来,我需要考虑用户可能的背景。他们可能是研究人员或开发者,想要在自己的IT项目中应用BLIP模型,比如开发智能客服、内容审核工具或增强数据注释流程。需要分步骤指导他们如何参实验,包括环境配置、数据准备、模型使用和结果分析。 同时,用户可能关心如何获取相关资源,比如预训练模型和数据集,以及如何调整模型以适应特定任务。需要确保提到的步骤具体可行,并引用提供的资料,比如引用[3]中的方法,以及引用[1]和[2]中提到的性能分析和实验设计注意事项。 另外,用户可能对实际应用场景感兴趣,需列举几个典型的IT用例,如智能文档处理、自动化测试中的图像识别等,并建议参考相关文献和社区资源。需要确保回答结构清晰,逐步引导用户从准备到实施实验,同时提醒他们注意模型优化和结果验证的重要性。 最后,生成的相关问题要围绕BLIP的技术细节、优化方法和应用扩展,帮助用户进一步探索。需要检查是否符合格式要求,如数学表达式的正确使用,引用标识的正确添加,以及代码块的正确呈现(如果有的话)。确保回答用中文,语言自然,避免使用Markdown格式。</think>### BLIP实验在IT领域的应用方式 BLIP(Bootstrapping Language-Image Pre-training)是一种结合语言图像预训练的模型,在IT领域的实验中主要用于多模态任务(例如图像描述生成、视觉问答、跨模态检索等)。以下是参BLIP相关实验的关键步骤和场景: #### 1. **实验目标场景** - **图像-文本对齐**:通过BLIP模型验证图像内容文本描述的一致性,例如在智能客服中自动生成产品图片的说明[^3]。 - **跨模态检索**:在IT系统中实现基于文本查询图像或基于图像搜索文本的功能,例如企业内部知识库的增强搜索。 - **数据增强**:利用BLIP生成合成数据,缓解特定领域(如医学影像)标注数据不足的问题。 #### 2. **实验准备** - **环境配置**: - 安装深度学习框架(如PyTorch),并下载BLIP-2的预训练模型[^3]。 - 配置GPU资源以支持大规模多模态计算。 - **数据集选择**: - 公开数据集:COCO、Flickr30k(图像-文本对)。 - 自定义数据:需整理成`(图像路径, 文本描述)`的格式。 #### 3. **实验实施示例** 以下是一个简化的图像描述生成实验代码框架: ```python from transformers import Blip2Processor, Blip2ForConditionalGeneration import requests from PIL import Image # 加载预训练模型处理器 processor = Blip2Processor.from_pretrained("Salesforce/blip2-opt-2.7b") model = Blip2ForConditionalGeneration.from_pretrained("Salesforce/blip2-opt-2.7b") # 输入图像生成描述 image_url = "https://example.com/image.jpg" image = Image.open(requests.get(image_url, stream=True).raw) inputs = processor(images=image, return_tensors="pt") generated_ids = model.generate(**inputs) description = processor.batch_decode(generated_ids, skip_special_tokens=True)[0] print(f"生成描述: {description}") ``` #### 4. **结果分析优化** - **评估指标**:使用BLEU、CIDEr等衡量生成文本真实标注的相似性[^1]。 - **模型微调**:在特定领域数据上进一步训练,例如调整IT设备故障诊断的视觉问答任务。 - **性能优化**:通过量化、剪枝等技术减少模型推理时间,适应边缘计算场景[^2]。 #### 5. **典型IT应用场景** - **智能文档处理**:从技术图表中提取信息并生成报告。 - **自动化测试**:结合UI截图生成测试用例描述。 - **内容审核**:识别违规图片并自动生成审核理由。 #### 6. **参资源** - 论文代码库:BLIP-2官方GitHub仓库及论文。 - 社区支持:Hugging Face社区提供模型和示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值