VLM 系列——BLIP——论文解读

本文详细解读了BLIP模型,涵盖了其概述、模型结构与亮点、数据处理、训练与推理策略,以及在检索任务、图片描述、视觉问答、自然语言视觉推理和视觉对话等多维度的表现。同时,探讨了消融实验,如CapFlit和参数共享策略,并提出了未来待解决的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

1、是什么

    BLIP 全称《BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation 》, 是一个多模态视觉-文本大语言模型,隶属BLIP系列第一篇,可以完成:图像描述、视觉问答、图像检索。由于没有接入LLM,所以虽然可以做生成任务,但是没有很强的对话能力以及世界知识。

2、亮点

    主要是模型和数据两方面:
    *模型方面:把模型设计成了一个unified 框架,可以同时满足:图文检索和图像描述任务。主要有三部分构成:视觉编码器、文本编码器和多模态编码器。
    *数据方面:提出了一个Captioner和Filter 模块,Captioner对一张图生成描述(也就是图文对的文)、filter过滤噪声图文对。用这种数据清洗方法就能利用大量的互联网数据,并降低里面的噪音。

PS

    *这篇文章的模型方面基本上和albuf类似,数据方面的创新很不错,一定要注意这里没有LLM,只有一阶段训练。
    *这篇文章的模型流程因为涉及到数据清洗和下游任务,整体流程是:脏数据训练BLIP->使用BLIP脏数据版应用到CapfFlit 数据清洗流程得到干净数据->使用干净数据再pre-train BLIP—> 应用到下游任务。
    *作者没有做消融实验,验证为什么比CLIP好,只是最终的图文检索结果却是比CLIP好不少,但是涉及到:多出来的bert参数、3个loss、数据。这里其实没有消融。

二、模型

    1、模型结构

     本质其实是:图像编码器VIT、文本编码器bert架构、然后在bert里增加cross attention、causal self attention模块,如下图里的cross attention、bi self attention、feed forward参数共享。其中
    *图像编码器为ImageNet 预训练的vit b/16(无特殊说明均为这个模型)、VIT L/16。
    *文本编码器为bert base 初始化的模型。
    逻辑上来讲主要有四部分构成:视觉编码器、文本编码器、多模态编码器和多模态解码器。具体来讲:
    *视觉编码器:下图最左边的是视觉编码器,就是 ViT 的架构。将输入图像分割成一个个的 Patch 并将它们编码为一系列 Image Embedding,并使用额外的 [CLS] token 来表示全局的图像特征。
   * 文本编码器:下图第二列,就是 BERT 的架构,其中 [CLS] token 附加到文本输入的开头以总结句子,作用是提取文本特征做对比学习。
    *视觉文本编码器:下图第三列,使用 Cross-Attention,作用是根据 ViT 给的图片特征(K、V)和文本输入(K)做二分类,所以使用的是编码器,且注意力部分是双向的 Self-Attention。添加一个额外的 [Encode] token,作为图像文本的联合表征。
    *视觉文本解码器:下图第4列的是视觉文本解码器,使用 Cross-Attention,作用是根据 ViT 给的图片特征和文本输入做文本生成的任务,所以使用的是解码器,且注意力部分是 Casual-Attention,目标是预测下一个 token。添加一个额外的 [Decode] token 和结束 token,作为生成结果的起点和终点。
    一个需要注意的点是:每个 image-text 在输入时,image 部分只需要过一个 ViT 模型,text 部分需要过3次文本模型。
    loss部分放在这部分讲解。因为后面数据清洗等都用到,所以调节一下。BLIP 在预训练期间联合优化了3个目标,有两个理解任务的目标函数(ITC、ITM、)和一个生成任务的目标函数(ITG)。
    *ITC: 对比学习目标函数 (Image-Text Contrastive Loss, ITC)。 作用于视觉编码器和文本编码器,目标是对齐视觉和文本的特征空间。方法是使得正样本图文对的相似性更大,负样本图文对的相似性更低,在这里依然使用了 ALBEF 中的动量编码器。具体而言就是使用一个模型权重副本,这个权重的更新每次只更新很少,它的目的是产生一些伪标签,辅助模型的训练。
    *ITM:图文匹配目标函数 (Image-Text Matching Loss, ITM)。  作用于1视觉编码器和视觉文本编码器,目标是学习图像文本的联合表征,以捕获视觉和语言之间的细粒度对齐。ITM 是一个二分类任务,使用一个分类头来预测图像文本对是正样本还是负样本。在这里依然使用了 ALBEF 中的 hard negative mining 技术,就是根据一个batch内(这里是仿照moco维护了一个队列)来计算图文ITC得分,然后取ITC得分最大的(最相似,但是不是一对,可以认为是困难样本)一对样本来计算。
    *ITG:图像生成 Image-Text generation也就是 语言模型目标函数 (Language Modeling Loss, LM)。 作用于视觉编码器和视觉文本解码器,目标是根据给定的图像以自回归方式来生成关于文本的描述。与广泛使用的 MLM 损失 (完形填空) 相比,LM 使模型能够将视觉信息转换为连贯的字幕。

    2、模型亮点

    统一了两个任务:文本生成和特征检索。

    PS

    如果有机会还是想看到特征检索的消融实验,证明到底是数据、模型、loss是的图文检索能力大幅领先CLIP系列。

三、数据

    1、数据标签

    标准的图文对。会拆成三种大的结构满足三个loss:ITC、ITM、ITG。

    2、数据构成

    Pretrain

    总共有 14M 张图像,包括两个人工注释数据集(COCO 和 Visual Genome)和三个网络数据集(Conceptual Captions , Conceptual 12M , SBU captions),还尝试了一个额外的web数据集LAION (该数据集包含115M图像,具有更多的噪声文本,只从原始 LAION400M 下载大于 256 像素的图像。由于 LAION 的规模很大,在预训练期间我们每个 epoch 只使用的1/5。)。
    

    3、数据清洗

    高质量的人工注释图像-文本对  (例如, COCO) 因为成本高昂所以数量不多。最近的工作 ALBEF, SimVLM 利用从网络自动收集的大量替代的图文对  。但是, 这些网络的替代数据集通常不会准确地描述图像的视觉内容, 质量相对嘈杂, 带噪声的监督信号肯定不是最优的。 本文提出了一种高效率利用噪声网络数据的方法:Captioning and Filtering,CapFilt。是本文的一个亮点,首先要知道他其实就是BLIP模型,并且是经过脏数据pre-train 的,只不过将他的三个loss分割成了两个模 块:
    *字幕器 Captioner: 对应是多模态解码器。训练时在 COCO 数据集上使用 LM 目标函数(ITG)微调。推理时 给定网络图片 , Captioner 生成合成描述。
    *过滤器 Filter: 对应多模态编码器的。训练时在 COCO 数据集上使用 ITC 和 ITM 目标函数微调。推理时 如果 ITM 头将其预测为与图像不匹配,则认为文本有噪声 Filter 删除(原始Web 文本和合成文本中的嘈杂文本)。
    最后,将过滤后的图像-文本对与人工注释对相结合,形成一个新的数据集,作者用它来预训练一个新的模型。
    

四、策略

    1、训练过程

    策略:使用3个loss单阶段预训练(不含数据清洗、下游任务finetune)。
    *视觉编码器以 ImageNet-1K 上预训练的 ViT 权重初始化,文本编码器以 BERT-Base 的权重初始化。冻结VIT。
    * 使用权重衰减为 0.05 的 AdamW  优化器。学习率预热至 3e-4 (ViT-B) / 2e-4 (ViT-L),并以 0.85 的速率线性衰减,Batch Size 2880 训练 20 Epochs。
    *在预训练期间,采用分辨率为 224 × 224 的随机图像裁切,在微调期间将图像分辨率提高到 384 × 384。

    2、推理过程

    看需要可以完成图文匹配和图像描述问答等。

五、结果

1、多维度对比。

    这个时间点2024大家看看就好了,因为已经出了BLIP2和Instruct BLIP了。

检索任务

    两个数据集 COCO 和 Flickr30K。与现有方法相比,BLIP 实现了显着的性能提升。使用相同的 14M 预训练图像,BLIP 在 COCO 上的平均召回率 R@1 上比之前的最佳模型 ALBEF 高出 +2.7%。作者还通过将在 COCO 上微调的模型直接迁移到 Flickr30K 来做 Zero-Shot Retrieval BLIP 的性能也大大优于现有的方法。

图片描述

    两个数据集 NoCaps 和 COCO,两者都使用在 COCO 上微调的模型和 LM 损失进行评估。在每个字幕的开头添加了一个提示 "a picture of",发现这样使得结果更好了。使用了 14M 预训练图像的 BLIP 大大优于使用相似数量预训练数据的方法。使用了 129M 图像的 BLIP 实现了与使用了 200M 的 LEMON 相比具有竞争力的性能。值得注意的是,LEMON 需要很耗费计算量的预训练的目标检测器和更高分辨率 (800×1333) 的输入图像,导致推理时间比使用低分辨率 (384×384) 输入图像的无检测器 BLIP 慢得多。

视觉问答

    BLIP 没有将 VQA 制定为多答案分类任务,而是按照 ALBEF 的做法把 VQA 视为一种答案生成的任务。结构如下图所示,在微调过程中,作者重新排列预训练模型,把视觉编码器的输出塞进文本编码器,这样图像和问题就编码为了多模态嵌入,再把这个表征输入文本解码器获得答案。VQA 模型使用真实答案作为目标使用 LM 损失进行微调。 使用 14M 图像,BLIP 在测试集上优于 ALBEF 1.64%。

自然语言视觉推理

    模型预测一个句子是否描述了一对图像,是个二分类任务。为了能对两对图像进行推理,作者对预训练模型进行了简单的修改,如下图。首先两个图片通过视觉编码器得到视觉特征,再分别通过两个交叉注意力来处理两个输入图片,并且把它们的输出合并起来送入 FFN 中。这两个 Cross-Attention 层是从相同的预训练权重初始化的。通过 [Encode] token 的过了 MLP 的输出完成二分类任务。BLIP 优于所有现有方法,除了 ALBEF 执行定制预训练的额外步骤。但是有趣的是,NLVR2 的性能并没有从额外的网络图像中受益太多,这可能是由于网络数据和下游数据之间的域差距。

视觉对话

    在自然会话设置中扩展了 VQA,其中模型不仅需要基于图像-问题对预测答案,还需要考虑对话历史和图像的字幕。作者对预训练模型进行了修改,如下图12所示。图片先经过 Image Encoder 得到视觉表征,Caption Encoder 的输入是字幕和 [Encode] token,并通过交叉注意力建模它们。Dialog Encoder 的输入是 [Encode] token,问题 QA 和对话历史。使用 ITM 损失进行二分类式的训练,以区分问题的答案是真还是假。 BLIP 在 VisDial v1.0 验证集上实现了最先进的性能。

2、消融实验

CapFlit

    当使用 14M 的数据集设置时,联合使用字幕器 Captioner 和过滤器 Filter 可以观察到性能改进,而且它们的效果相互互补,证明了 CapFilt 方法能够从嘈杂的原始数据中提炼出有用的数据。 当使用更大的数据集 129M 的设置或者更大的模型 ViT-L 时,CapFilt 可以进一步提高性能,这验证了它在数据大小和模型大小方面的可扩展性。而且,仅仅增加字幕器和过滤器的模型尺寸时,也可以提高性能。
    下图中,作者展示了一些示例的字幕与对应的图片。 是直接从网络上爬取的原始字幕,  是字幕器生成的字幕。图中的红色文本是 Filter 删除的文本,绿色文本是 Filter 保留下来的文本。可以看出几张图片里面,红色的文本不是不好,只是没有绿色的文本对图片的描述更加贴切。这个结果说明了 CapFilt 方法确实是能够提升图文对数据集的质量。

    参数共享策略

    不共享self attention 的效果最有好,原因:
    *降低参数量,训练更快。
    *因为毕竟解码器和编码器不同。(这个在BLIP2里面是完全共享,通过不同的attention mask解决)

六、使用方法

参见git,更推荐使用BLIP2或者Instruct BLIP。

七、待解决

暂无。

八、参考链接

### 关于BLIP-2的学术论文 BLIP-2是一个多模态预训练模型,它能够理解并生成与图像相关的文本描述。该模型基于先前的工作进一步改进了视觉和语言之间的交互方式[^1]。 对于希望深入了解BLIP-2的研究人员而言,可以关注以下几篇重要的学术文章: #### 1. BLIP-2原始论文 这篇论文介绍了BLIP-2的设计理念和技术细节,包括其架构特点以及如何通过大规模数据集进行有效训练。文中还展示了多个实验结果来验证模型性能提升的原因所在。 #### 2. 多模态学习中的应用案例研究 此类文献探讨了BLIP-2在实际应用场景下的表现情况,比如自动字幕生成、图片检索等任务上取得的效果对比其他同类方法有何优势之处。 #### 3. 对比分析与其他先进模型的关系 一些学者会将BLIP-2同领域内的其他领先解决方案做横向评测,从而揭示各自优缺点及适用范围的不同。 为了获取上述提到的具体参考资料,建议访问Google Scholar或者各大期刊会议官网搜索关键词“BLIP-2”,这通常能帮助找到最新的研究成果链接。 ```python import requests from bs4 import BeautifulSoup def search_blip2_papers(): url = 'https://scholar.google.com/scholar?q=BLIP-2' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') papers = [] for item in soup.select('.gs_ri'): title = item.select_one('h3').get_text() link = item.select_one('a')['href'] snippet = item.select_one('.gs_rs').get_text() if item.select_one('.gs_rs') else '' paper_info = { "title": title, "link": link, "snippet": snippet } papers.append(paper_info) return papers[:5] papers = search_blip2_papers() for idx, paper in enumerate(papers, start=1): print(f"{idx}. {paper['title']}\n Link: {paper['link']}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TigerZ*

你点滴支持,我持续创作,羞羞

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

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

打赏作者

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

抵扣说明:

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

余额充值