BLIP-2革新多模态预训练:QFormer桥接视觉语言,零样本任务性能飙升10.7%!

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书 《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】

清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷】

文章目录

GPT多模态大模型与AI Agent智能体系列一百六十一

BLIP-2革新多模态预训练:QFormer桥接视觉语言,零样本任务性能飙升10.7%!

7.1.3 BLIP

BLIP(Bootstrapping Language-Image Pretraining for Unified Vision-Language Understanding and Generation)是一个由Salesforce Research团队开发的预训练框架,旨在实现视觉和语言的统一理解与生成。该框架通过自举式预训练方法,使模型能够更好地理解和生成图像和文本之间的关系。BLIP模型的开发是对现有多模态模型局限性的回应,特别是针对Encoder-Based Model(如CLIP)在生成任务上的不足,以及Encoder-Decoder Model(如SimVLM)在图文检索任务中的表现不佳的问题。
1.BLIP核心思想及架构

BLIP的核心思想是通过两个阶段的预训练来增强模型的能力。第一阶段是视觉-语言预训练(Vision-Language Pretraining,VLP),它使用大量无标签的图像-文本对来学习图像和文本之间的对应关系。这一阶段的目的是让模型学会如何从图像中提取有用的信息,并将其与相应的文本描述相匹配。第二阶段是自举式预训练,它利用第一阶段学到的知识来进一步提升模型的性能。在这个阶段,模型被训练去生成文本描述,这些描述随后被用来指导图像的生成。这样,模型就能够更好地理解和生成图像和文本之间的关系。BLIP架构包括一个图像编码器、一个文本编码器和一个跨模态解码器。图像编码器负责从输入的图像中提取特征,文本编码器则负责处理文本数据。跨模态解码器则负责将图像和文本的特征结合起来,生成最终的输出。此框架可以应用于多种任务,包括图像字幕生成、视觉问答和图像检索等。
2.预训练目标

BLIP的预训练包含三个主要目标:

(1)Image-Text Contrastive Loss:对齐视觉和文本模态的特征,类似于CLIP中的对比损失。

(2)Image-Text Matching Loss:判断图像和文本是否匹配,挖掘难负样本,提升模型理解能力。

(3)Language Modeling Loss:预测图像对应的文本描述,使模型具备生成能力。
3.CapFilt模块

为了提高训练数据的质量,BLIP引入了CapFilt模块,该模块包括Captioner和Filter两个组件。Captioner基于图像生成文本描述,而Filter则评估图像和文本的匹配程度,剔除不匹配或低质量的配对,从而净化数据集。实验显示,CapFilt显著提升了下游任务的性能,尤其是在使用更多高质量数据时。此外,研究发现,Nucleus Sampling在生成多样化文本方面优于Beam Search,尽管可能会引入更多噪声。
5.BLIP安装使用

下载代码到本地git clone https://github.com/salesforce/BLIP,切换到BLIP根目录,通过pip install -r requirements.txt命令安装依赖。BLIP目录下,train_retrieval.py是图像文本检索训练代码,train_caption.py是图像文本字幕生成训练代码,train_vqa.py是视觉问答训练代码,train_nlvr.py是自然语言视觉推理代码,pretrain.py是预训练代码,eval_retrieval_video.py是零样本视频文本检索代码。
1)图像文本检索

从官方网站下载COCO和Flickr30k数据集,并在configs/retrieval_{dataset}.yaml中设置image_root。要在COCO上评估微调的BLIP模型,运行:

python -m torch.distributed.run --nproc_per_node=8 train_retrieval.py

--config ./configs/retrieval_coco.yaml

--output_dir output/retrieval_coco

--evaluate

使用8个A100 GPU微调预训练检查点,首先在configs/retrieval_coco.yaml中设置pretrained为"https://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_basepth"。然后运行:

python -m torch.distributed.run --nproc_per_node=8 train_retrieval.py

--config ./configs/retrieval_coco.yaml

--output_dir output/retrieval_coco
2)图像文本字幕生成

从官方网站下载COCO和NoCaps数据集,并在configs/caption_coco.yaml和configs/nocaps.yaml中设置image_root。要在COCO上评估微调的BLIP模型,运行:

python -m torch.distributed.run --nproc_per_node=8 train_caption.py --evaluate

要在NoCaps上评估微调的BLIP模型,运行:

python -m torch.distributed.run --nproc_per_node=8 eval_nocaps.py

使用8个A100 GPU微调预训练检查点,首先在configs/caption_coco.yaml中设置pretrained为"https://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_base_capfilt_large.pth"。然后运行:

python -m torch.distributed.run --nproc_per_node=8 train_caption.py
3)视觉问答

从官方网站下载VQA v2数据集和Visual Genome数据集,并在configs/vqa.yaml中设置vqa_root和vg_root。评估微调的BLIP模型,运行:

python -m torch.distributed.run --nproc_per_node=8 train_vqa.py --evaluate

使用16个A100 GPU微调预训练检查点,首先在configs/vqa.yaml中设置pretrained为"https://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_base_capfilt_large.pth"。然后运行:

python -m torch.distributed.run --nproc_per_node=16 train_vqa.py
4)自然语言视觉推理

从官方网站下载NLVR2数据集,并在configs/nlvr.yaml中设置image_root。评估微调的BLIP模型,运行:

python -m torch.distributed.run --nproc_per_node=8 train_nlvr.py --evaluate

使用16个A100 GPU微调预训练检查点,首先在configs/nlvr.yaml中设置pretrained为"https://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_base.pth"。然后运行:

python -m torch.distributed.run --nproc_per_node=16 train_nlvr.py
5)预训练

准备训练JSON文件,其中每个JSON文件包含一个列表。列表中的每一项是一个字典,包含两个键值对:{'image': 图像路径, 'caption': 图像文本}。在configs/pretrain.yaml中,将train_file设置为json文件的路径。使用8个A100 GPU预训练模型命令如下:

python -m torch.distributed.run --nproc_per_node=8 pretrain.py --config ./configs/Pretrain.yaml --output_dir output/Pretrain

6)零样本视频文本检索

按照https://github.com/salesforce/ALPRO的指示下载MSRVTT数据集,并在configs/retrieval_msrvtt.yaml中相应设置video_root。安装decord:pip install decord,执行零样本评估:

python -m torch.distributed.run --nproc_per_node=8 eval_retrieval_video.py。

BLIP模型的创新之处在于它不仅在多模态理解上表现出色,还能有效进行多模态生成,通过CapFilt机制提高了训练数据的质量,从而在多个下游任务上实现了优异的性能。这一模型的提出,为视觉语言预训练开辟了新的方向,强调了数据质量和模型多功能性的重要性。BLIP模型是多模态学习领域的一次重要突破,它通过融合编码和解码能力,以及对训练数据质量的改进,展现了在视觉和语言任务上的强大潜力,为未来多模态模型的发展提供了新的视角和方法。
6.BLIP和CLIP比较

BLIP和CLIP都是当前非常先进的多模态学习模型,它们在处理图像和文本信息方面有着各自的优势和局限。下面将从模型架构、预训练数据、下游任务表现等方面对它们进行对比分析,并探讨各自的典型应用场景。
1)模型架构

BLIP采用了多模态混合编码器-解码器架构,这种架构由图像编码器、文本编码器、视觉文本编码器和视觉文本解码器组成。这种设计使得BLIP在处理视觉语言理解和生成任务方面具有很高的灵活性。CLIP则基于编码器的架构,包括独立的图像编码器和文本编码器。这种架构在处理视觉语言理解任务方面表现出色,但在生成任务上有所欠缺。
2)预训练数据

BLIP通过引入Captioner-Filter机制,可以在预训练阶段生成更高质量的训练数据。Captioner用于生成合成字幕,而Filter用于过滤掉噪声数据,从而提高了预训练数据的质量。CLIP主要使用从互联网上收集的大规模图像-文本对进行预训练,这些数据虽然丰富多样,但也存在一定的噪声。
3)下游任务表现

BLIP在多个视觉语言理解任务上取得了最先进的性能,如图像文本检索、图像字幕、VQA等。同时,BLIP也展现出了强大的图像字幕生成能力。CLIP在零样本迁移设置下,在多个视觉语言任务上取得了很好的效果。它的特点是能够快速适应新的分类任务,而无需在目标任务上进行额外的训练。
4)应用场景

BLIP由于其在理解和生成方面的均衡表现,适用于需要双向能力的应用场景,如自动图像字幕生成、多轮视觉对话、视频描述等。CLIP则更适合于快速部署到新的视觉分类任务中,尤其是当目标任务的数据难以获得或者成本较高时。例如,它可以用于社交媒体图片的自动标注、图像搜索引擎的构建等。
7.1.4 BLIP-2

BLIP-2在视觉语言预训练领域做出了显著改进,主要聚焦于模态对齐和高效训练两大方面。为解决模态对齐问题,BLIP-2引入了QFormer(Querying Transformer),一个轻量级架构,作为图像与文本特征之间的桥梁。在高效训练方面,BLIP-2采用了一种两阶段预训练策略,旨在连接当前先进的视觉骨干网络与大模型。在VQAv2任务上,尽管使用的训练数据量仅为Flamingo80B的一小部分,但BLIP-2依然实现了10.7%的显著精度提升。
1.模型架构

BLIP-2的核心创新在于QFormer模块,它负责对齐图像和文本特征。QFormer包含两个Transformer子模块:图像Transformer和文本Transformer。图像Transformer相较于文本Transformer额外拥有一个交叉注意力层,且两者共享自注意力参数。Q-Former是一个轻量级的Transformer模型,它在冻结的视觉模型和大模型之间架起了一座桥梁,用于实现视觉和语言的对齐。Q-Former的工作原理可以分为以下几个步骤:

(1)视觉特征提取:首先,Q-Former接收来自冻结的视觉模型(如ViT)的输出,这是一个图像的特征表示。

(2)查询向量学习:Q-Former内部包含一组可学习的查询向量,这些向量用于从视觉特征中提取相关信息。

(3)注意力机制:Q-Former通过自注意力机制,将这些查询向量与视觉特征进行交互,从而学习到与文本最相关的视觉表示。

(4)两阶段预训练:第一阶段Q-Former被迫学习和文本最相关的视觉表示,这通常通过对比学习等方法实现。第二阶段Q-Former的输出被用作大模型的输入,大模型负责解释这些视觉特征,并生成与之对应的文本描述。

(5)视觉-语言对齐:通过这两个阶段的预训练,Q-Former能够学习到一种视觉表示,这种表示不仅能够与文本紧密相关联,还能够被大型语言模型所解释。

(6)下游任务应用:经过预训练的Q-Former可以与大模型一起应用于各种下游任务,如图像描述生成、视觉问答等。

Q-Former的设计允许它在不更新视觉模型参数的情况下,有效地调整其自身参数以实现视觉和语言的对齐。这种轻量级的架构使得Q-Former可以快速适应新的任务和数据,同时也降低了训练和推理的计算成本。
2.多模态预训练任务

BLIP-2的预训练过程分为两个阶段:

(1)多模态表征对齐预训练:通过Image-Text Contrastive Loss(ITC)、Image-Text Matching(ITM)和Image-Grounded Text Generation(ITG)三个任务联合训练来对齐图像和文本表征。ITC计算图像嵌入与文本嵌入间的对比损失,但与常规ITC不同,BLIP-2图像嵌入有32个(等于Learned Queries的数量),而文本嵌入只有一个。ITM通过匹配图像和文本,预测它们是否配对。ITG利用QFormer的文本Transformer进行图像字幕生成任务。

(2)多模态表征理解预训练:这一阶段使大模型理解由第一阶段产生的Soft Visual Prompt的语义,从而利用大模型的知识库实现更复杂的视觉推理任务。在此阶段,预训练的大模型能够理解QFormer输出的图片表征,即所谓的Soft Visual Prompt。

BLIP-2在图像字幕生成、视觉问答和跨模态搜索的零样本能力方面均超越了BLIP。当使用更大规模的视觉骨干网络和语言模型时,视觉问答任务的表现进一步提升,表明BLIP-2具有良好的扩展性。此外,通过消融实验验证了两阶段训练策略的必要性,直接跳过第一阶段的模态对齐预训练,直接进入第二阶段的表征理解训练会导致性能大幅下降。

更多技术内容

更多技术内容可参见
清华《GPT多模态大模型与AI Agent智能体》书籍配套视频【陈敬雷】

更多的技术交流和探讨也欢迎加我个人微信chenjinglei66。

总结

此文章有对应的配套新书教材和视频:

【配套新书教材】
《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】

新书特色:《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)是一本2025年清华大学出版社出版的图书,作者是陈敬雷,本书深入探讨了GPT多模态大模型与AI Agent智能体的技术原理及其在企业中的应用落地。

全书共8章,从大模型技术原理切入,逐步深入大模型训练及微调,还介绍了众多国内外主流大模型。LangChain技术、RAG检索增强生成、多模态大模型等均有深入讲解。对AI Agent智能体,从定义、原理到主流框架也都进行了深入讲解。在企业应用落地方面,本书提供了丰富的案例分析,如基于大模型的对话式推荐系统、多模态搜索、NL2SQL数据即席查询、智能客服对话机器人、多模态数字人,以及多模态具身智能等。这些案例不仅展示了大模型技术的实际应用,也为读者提供了宝贵的实践经验。

本书适合对大模型、多模态技术及AI Agent感兴趣的读者阅读,也特别适合作为高等院校本科生和研究生的教材或参考书。书中内容丰富、系统,既有理论知识的深入讲解,也有大量的实践案例和代码示例,能够帮助学生在掌握理论知识的同时,培养实际操作能力和解决问题的能力。通过阅读本书,读者将能够更好地理解大模型技术的前沿发展,并将其应用于实际工作中,推动人工智能技术的进步和创新。

【配套视频】

清华《GPT多模态大模型与AI Agent智能体》书籍配套视频【陈敬雷】

视频特色: 前沿技术深度解析,把握行业脉搏

实战驱动,掌握大模型开发全流程

智能涌现与 AGI 前瞻,抢占技术高地

上一篇:《GPT多模态大模型与AI Agent智能体》系列一》大模型技术原理 - 大模型技术的起源、思想
下一篇:DeepSeek大模型技术系列五》DeepSeek大模型基础设施全解析:支撑万亿参数模型的幕后英雄

相关推荐
虫无涯2 小时前
【详细教程】如何在Ubuntu上本地部署Dify?
人工智能
极客BIM工作室2 小时前
遗传算法属于机器学习吗?
人工智能·机器学习
槐夏十八2 小时前
Suno API 的对接和使用
人工智能
guidovans2 小时前
Crawl4AI精准提取结构化数据
人工智能·python·tensorflow
多棱领域3 小时前
【机器人运动学】正运动学分析
机器人
虫无涯3 小时前
Dify调用硅基流动中模型时,流程编排中运行模型不显示思考过程,如何解决?
人工智能
猫天意3 小时前
【CVPR2025-DEIM】基础课程二十:顶会中的Partial创新思想,随意包装你想包装的!
图像处理·人工智能·yolo·计算机视觉·matlab
DDC楼宇自控与IBMS集成系统解读3 小时前
IBMS智能化集成系统:构建建筑全场景协同管控中枢
大数据·网络·人工智能·能耗监测系统·ibms智能化集成系统·楼宇自控系统·智能照明系统
SimonSkywalke3 小时前
STS_Root_Cause_Analysis_Error.ipynb 工作流程解析
运维·人工智能