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大模型基础设施全解析:支撑万亿参数模型的幕后英雄

相关推荐
AI视觉网奇7 小时前
虚拟机安装 网络问题
人工智能·虚拟机
云澈ovo7 小时前
FP16混合精度训练:Stable Diffusion生成速度提升300%的硬件配置方案
人工智能·机器学习·stable diffusion
zzywxc7877 小时前
AI行业应用:金融、医疗、教育、制造业的落地实践与技术创新
人工智能·机器学习·金融·自动化·prompt·ai编程·xcode
简简单单做算法7 小时前
基于遗传优化的LSTM-Attention一维时间序列预测算法matlab仿真
人工智能·lstm·时间序列预测·lstm-attention·遗传优化
C++chaofan7 小时前
项目中为AI添加对话记忆
java·数据结构·人工智能·redis·缓存·个人开发·caffeine
Elastic 中国社区官方博客7 小时前
CI/CD 流水线与 agentic AI:如何创建自我纠正的 monorepos
大数据·运维·数据库·人工智能·搜索引擎·ci/cd·全文检索
a man of sadness7 小时前
决策树算法基础:信息熵相关知识
决策树·机器学习·分类·信息熵·kl散度·交叉熵
I'm a winner8 小时前
护理+人工智能研究热点数据分析项目实战(五)
人工智能·数据挖掘·数据分析
蒋星熠8 小时前
TensorFlow与PyTorch深度对比分析:从基础原理到实战选择的完整指南
人工智能·pytorch·python·深度学习·ai·tensorflow·neo4j
qq_340474028 小时前
0.1 tensorflow例1-梯度下降法
人工智能·python·tensorflow