BLIP系列粗暴解读 —— BLIP2

概述

BLIP系列是salesforce在多模态领域做的工作,个人觉得其设计思路较为精巧,稍作记录。本篇为BLIP系列的第一篇,记录的是这个系列的改进模型BLIP2.

设计思路简述

        用一个Q-former来对齐图像和文本信息,连接Image encoder和LLM,实现多模态输入的处理。

模型结构

        模型的核心结构是Q-Former,实际为插入了cross-attention的bert,增加了可学习的queries与image encoder的输出做cross-attention,提取图像特征中的关键部分。Image Encoder和LLM均为冻住的,复用训练好的模型。

        在BLIP2中,Q-Former是复用的,可以分别处理queries和text作为输入。Text输入时,cross-attention层会被跳过,直接输出text features。当queries和text一起输入时(多模态输入),会先分别算出他们的features然后拼接,将拼接后的特征输入LLM来获得最后的输出,因此将其称为Bridge。

训练策略 —— 两阶段训练

阶段一:对齐预训练

        该阶段下主要目的是实现图像和文本的对齐,提取图像中与文本最相关的重要特征。训练目标分为三个,分别是ITC、ITM和ITG。ITC是文本和图像的对比loss,ITM是一个二分类loss,给定image-text pair判断其是否为一对(0/1),ITG则是根据图像来做文本生成,类似captioner。在BLIP2的代码实现中,ITC是将文本和query分别输入来获取特征,然后做loss,不需要mask;其余两个则是query和text一起,用mask来控制模型可以看到的区域。

阶段二:生成

        将阶段一训练好的模型接入LLM,通过一个全连接层来连接两个模型,使得Q-Former的输出和LLM的text embeddings保持维度统一。文中实验采用了两种架构的LLM,对于encoder-decoder架构的LLM会给一个prefix text来作为初始信息。

性能对比

        BLIP2可以兼容不同的LLM,在VQA、caption等任务均体现不错的性能;Q-Former也可以单独作为text-encoder和vit一起,形成clip style的跨模态检索框架。

VQA

碎碎念:Flamingo似乎看到了很多次,但是都在被各种“暴打”,感觉也得找时间看看,不然为啥那么多多模态找他做baseline呢~

Image Captioning

Image-Text Retrieval

Ablation Study

BLIP2的一些骚操作应用

Captioner  

        跟BLIP一样,BLIP2在预训练时有文本生成这样一个代理任务,因此Q-Former也可以作为captioner用来生成图文对的synthesis datasets,以扩充多模态数据集,例如M2-Encoder中,在数据清洗时对clip score较低的样本做增强,就是用BLIP2来重写caption。

Data Cleaner

        由于BLIP2有ITM loss,因此可以在细粒度上对齐图像和文本,由itm打出来的分数同样可以作为数据筛选的一个标准(实测效果还不错,筛选的比例会比clip score更低),如Datacomp中就有人结合itm score作为标准获得了不错的数据清洗结果。

        

### BLIP-2 和 SigLiP 模型变体介绍 #### BLIP-2 模型概述 BLIP-2 是一种先进的多模态预训练模型,旨在通过结合图像和文本信息来实现更强大的跨模态理解能力。该模型基于先前版本的 BLIP 进行改进,在架构设计上引入了更多的创新机制以增强其性能[^1]。 为了进一步提升模型的表现力,BLIP-2 实现了几项关键技术: - **双流编码器结构**:采用两个独立但相互关联的编码路径分别处理输入图片特征以及对应的自然语言描述; - **对比学习框架下的联合表示空间构建**:利用大规模未标注数据集进行自监督预训练,使得不同形式的数据能够在统一向量空间内有效映射并保持语义一致性; - **轻量化解码组件**:针对下游任务需求定制化开发高效的预测模块,既保留足够的表达能力又兼顾计算效率; ```python from transformers import BlipProcessor, BlipForConditionalGeneration processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base") model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base") url = "http://images.cocodataset.org/val2017/000000039769.jpg" image = Image.open(requests.get(url, stream=True).raw) inputs = processor(image, return_tensors="pt") out = model.generate(**inputs) caption = processor.decode(out[0], skip_special_tokens=True) print(caption) ``` #### SigLiP 模型特点分析 SigLiP 则专注于解决特定场景下存在的挑战——即如何更好地捕捉细粒度视觉概念及其对应的文字表述之间的关系。为此,研究者们提出了信号感知损失函数(Signal-aware Loss),它能够更加精准地衡量两者间的匹配程度,并据此指导参数更新过程,从而获得更高的检索精度与更好的泛化效果[^2]。 具体而言,SigLiP 的主要贡献体现在以下几个方面: - **引入信号级相似度评估指标**:不同于传统方法仅依赖于高层抽象特征来进行正负样本区分,而是深入到原始感官层面挖掘潜在联系; - **动态调整权重策略**:根据不同类别实例的重要性赋予相应系数,使整体优化目标更具针对性; - **强化局部区域关注力度**:借助注意力机制突出显示那些对于最终决策至关重要的部位或细节部分;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值