从BLIP-2到Qwen2-VL,多模态大模型的技术点总结


总结

01

BLIP2

论文地址:https://arxiv.org/pdf/2301.12597

发布时间:2023.06.15

模型结构:

  • Vision Encoder:ViT-L/14

  • VL Adapter:Q-Former

  • LLM:OPT (decoder-based),FlanT5(encoder-decoder-based)

Overview of BLIP-2's framework

论文主要提出Q-Former(Lightweight Querying Transformer)用于连接模态之间的gap。BLIP-2整体架构包括三个模块:视觉编码器、视觉和LLM的Adapter(Q-Former)、LLM。其中Q-Former是BLIP-2模型训练过程中主要更新的参数,视觉Encoder和大语言模型LLM在训练过程中冻结参数。

BLIP-2的预训练包括两个阶段:

Stage 1)Vision-and-Language Representation Learning. Q-Former与冻结的Image Encoder(ViT-L/14)连接,在和文本交互中学习图文相关性表示(3个预训练任务)。

Stage 2)Vision-to-Language Generative Learning. 第一个阶段训练得到的Q-Former的输出接入一个大语言模型,学习视觉到文本生成(1个预训练任务)。

下面分别介绍两个阶段:

阶段1:左侧为Q-Former的结构以及如何学习视觉文本表征,右侧self-attention masking策略

阶段1:Q-Former的结构如上图所示,包括两个Transformer子模块(共享Self-Attention层),一个image transformer与image encoder交互提取视觉表征(图中黄色区域左侧),一个text transformer既作为text encoder也作为text decoder(图中黄色区域右侧)。首先创建一个可学习的query向量(Learnable query embeddings)作为image transformer的输入,queries通过self-attention层进行自我交互,然后与冻结参数的image features(来自image encoder)通过cross-attention层(插入每隔一个block)进行交互,此外这个query向量还与text通过同一个self-attention进行交互。在不同的预训练任务中,使用不同的self-attention masks来影响查询文本的交互,在这个阶段的预训练中,一共通过三个任务进行学习(类似BLIP),分别为:

ITM:图文匹配任务,使用双向self-attention mask, 不进行掩码,该任务目标是学习细粒度的图文表示对齐。训练过程中queries和text可以完全互相看到,query embeddings的输出Z包含了多模态的信息,将它输入一个2分类linear层得到一个logit,平均来自所有queries的logits作为最终的匹配分数,论文采纳了难负样例挖掘的策略创建更具信息量的负样本对。

ITG:图引导文本生成,使用causal self

### 关于多模态模型 CLIP、BLIPBLIP-2 的介绍与比较 #### CLIP 模型概述 CLIP(Contrastive Language–Image Pre-training)是一种开创性的多模态模型,能够将图像和文本映射到同一嵌入空间中。该模型通过大规模无监督的方式训练,在大量互联网图片及其对应的标题上进行对比学习。这种设计使得CLIP能够在多种下游任务中表现出色,而无需针对特定任务重新训练。 #### BLIP 模型特点 BLIP(Bootstraping Language-Image Pretraining with Frozen Image Encoders and Large-Scale Web Data)进一步推进了这一领域的发展。它引入了一个冻结的视觉编码器以及一个强大的解码器结构用于处理语言部分。具体来说: - **CapFilt机制**:利用两种不同的方式——基于检索的任务和生成式的描述任务来增强模型的能力[^3]。 - **联合训练目标**:包括但不限于图像文本的对比学习、图像文本匹配以及图像条件下的语言建模等三个方面[^4]。 这些特性使BLIP不仅能在零样本设置下完成复杂的跨模态推理工作,而且还能有效地适应各种实际应用场景中的需求变化。 #### BLIP-2 架构改进 作为BLIP系列的新成员,BLIP-2继承并优化了许多前代版本的优点。其主要贡献在于提出了InstructBLIP框架,这是一个专门为指令跟随场景定制化的解决方案。相比于原始版,BLIP-2做了如下调整: - 更加注重交互性和可控性; - 提升了对于复杂命令的理解能力; - 改进了生成质量,特别是在遵循指示方面表现尤为突出[^1]。 此外,BLIP-2还特别强调了如何更好地支持开放域问答、对话系统以及其他涉及自然语言理解和生成的应用程序开发。 综上所述,虽然这三个模型都属于多模态研究范畴内的成果,但是各自侧重点有所不同。CLIP侧重于构建通用表征;BLIP则致力于提高泛化能力和应用灵活性;至于最新的BLIP-2,则是在此基础上增加了更多面向用户的特性和功能。 ```python # 示例代码展示不同模型加载方法 import clip from blip import BlipModel from blip2 import Blip2Model model_clip, preprocess = clip.load("ViT-B/32") # 加载CLIP模型 blip_model = BlipModel(pretrained=True) # 初始化BLIP实例 blip2_model = Blip2Model(pretrained="instruct") # 使用预定义配置创建BLIP-2对象 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值