注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书 《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】
清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷】
文章目录
- [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大模型基础设施全解析:支撑万亿参数模型的幕后英雄