《BLIP》-用更干净更多样的数据进行多模态预训练,性能超越CLIP!

BLIP是一个新型的视觉语言预训练框架,旨在克服现有模型架构和数据集噪音的问题。它提出了一种多模态混合编码器-解码器(MED)架构,能有效支持多任务预训练,并通过CapFilt方法从嘈杂的image-text对中学习。实验表明,这种方法在image-text检索、captioning、问答等任务上实现了最优性能,并在video-language任务中实现了zero-shot state-of-the-art。

一、简介
​ 近期,Visual-language预训练在各种多模态下游任务中取得了巨大的成功。然而,现有的方法存在着两个限制:

模型视角

许多模型都采用基于编码器的架构或者编码器-解码器的架构。然而,基于编码器的模型并不能直接用于文本生成任务,而编码器-解码器架构并没有成功的应用于image-text检索任务。

数据视角

许多的state-of-the-art方法(例如:CLIP,ALBEF,SimVLM)都在从网络上收集的image-text对数据上进行预训练。尽管通过扩大数据集的规模获得了性能增益,但本文也展示了带有噪音的web文本对于vision-language学习来说是次优解。

​ 为此,作者提出了BLIP: Bootstrapping Language Image Pre-training for unified vision-language understanding and generation。BLIP是一个新的VLP(Vision-Language Pre-training)框架,其能够更加广泛的支持下游的任务。其从模型和数据视角做出了两个贡献

编码器-解码器的多模态混合(MED) \text{(MED)}(MED):一个用于高效多任务预训练和灵活迁移的新模型架构。一个MED \text{MED}MED可以是单模态的编码器,也可以是基于图像的文本编码器/解码器。模型通过三个vision-language目标函数进行预训练:image-text对比学习、image-text匹配和图像条件语言建模。
CapFilt(Captioning and Filtering) \text{CapFilt(Captioning and Filtering)}CapFilt(Captioning and Filtering):用于从噪音image-text对中学习的新数据集boostrapping方法。微调预训练MED \text{MED}MED为两个模块:一个用于为给定图像生成合成captions的captioner,以及一个从原始web文本和合成文本移除噪音captions的filter。
​ 作者进行了大量的实验和分析,做出了如下

### 关于多模态模型 CLIPBLIPBLIP-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对象 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值