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

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

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

多模态基础模型前沿探析:CLIP与BLIP的理论突破与应用实践

第6章 多模态大模型
随着人工智能技术的发展,多模态大模型已经成为研究的热点之一。这些模型能够处理和整合不同形式的数据,如文本、图像、视频等,从而实现更强大的理解和生成能力。本章将探讨多模态大模型的前沿进展,从基础理论到具体应用案例,涵盖了多个领域的创新成果。
7.1多模态基础模型
在多模态学习的广阔领域中,基础模型扮演着至关重要的角色。它们不仅是连接不同模态的桥梁,更是推动多模态应用发展的基石。接下来将深入探讨多模态基础模型的核心概念和技术,包括多模态对齐、融合和表示,以及一系列具有代表性的多模态基础模型,如CLIP、BLIP、BLIP-2、InstructBLIP、X-InstructBLIP、SAM、OpenFlamingo、VideoChat和PaLM-E。
7.1.1多模态对齐、融合和表示
在多模态学习的广阔领域里,对齐、融合与表示是三大基石,它们交织在一起,支撑着对复杂多模态数据的深度理解和有效处理。这三大概念不仅是理论研究的焦点,也是推动实际应用创新的关键力量。
1.对齐
对齐(Alignment),作为多模态学习的起点,承担着在不同数据模态间建立桥梁的重要角色。对齐过程精细地发现并构建不同模态数据间的对应关系,确保从一种模态获取的信息可以准确无误地映射到另一种模态上。这种跨模态信息的关联,是多模态学习成功的基础。具体来说,对齐可以发生在两个主要层面:
(1)时间对齐:尤其在处理视频时,确保声音与画面的精确同步,使视觉与听觉信息能够协同工作,提供连贯的感知体验。
(2)语义对齐:在文本与图像相结合的任务中,如图像描述生成,对齐的目标是找到文本描述与图像内容的精确匹配,使语言描述能够直接指向图像中的特定元素。
对齐的实现途径分为基于规则和基于学习两种模式。基于规则的对齐依赖于人工设计的算法,而基于学习的对齐则运用机器学习,尤其是深度学习技术,自动挖掘和学习模态间的内在联系,展现出了更强大的适应性和灵活性。
2.融合
融合(Fusion),则是将对齐后的多模态数据或特征整合为一体,以支持统一的分析与决策。融合策略的精髓在于如何巧妙地结合来自不同模态的信息,以增强学习系统的整体表现。常见的融合方式包括:
(1)早期融合(Early Fusion):在特征提取的初期阶段就将不同模态的信息合并,允许模型在较低层次上捕捉跨模态的关联,但可能会因过早融合而损失某些细节。
(2)晚期融合(Late Fusion):在模型做出初步决策后,再将不同模态的输出结果结合,保留了各模态的独立性,但在后期融合可能增加计算复杂度。
(3)混合融合(Hybrid Fusion):融合了早期与晚期融合的优点,能够在多个层面灵活地进行特征和决策的结合,既保留了模态间的独立性,又增强了整体的协同效应。
3.表示
表示(Representation),是多模态数据处理的最后一步,也是至关重要的一步。表示的目标是将原始的多模态数据转换为一种机器易于理解的形式,这种形式应该能够充分反映数据的内在结构和关键特征。良好的表示能够显著提升学习效率和模型性能,因此,表示的设计和优化成为了多模态学习研究中的核心议题。表示方法多种多样,但可以大致归类为:
(1)联合表示:通过构建一个共享表示空间,如使用神经网络进行联合嵌入,使不同模态数据能在同一框架下被理解和比较,这是多模态学习中最为直观和广泛应用的表示策略。
(2)互补表示:分别针对每种模态构建独立的表示,然后在某个阶段将它们结合,这种方式保留了模态的特性,同时通过后期的融合来实现互补。
(3)交互表示:不仅关注单个模态的内部特征,更侧重于学习不同模态间的交互作用和依赖关系,揭示了多模态数据的深层关联。
为了构建高质量的表示,研究者们开发了多种表示学习技术,其中包括:
(1)深度学习:借助卷积神经网络、循环神经网络、Transformer等先进神经网络架构,学习数据的深层次特征表示,这些技术在处理图像、文本和序列数据时展现了卓越的能力。
(2)迁移学习:在一种模态上获得的知识和经验可以迁移到另一种模态,加速学习过程,减少对大量标注数据的需求,特别是在资源受限情况下,迁移学习提供了有效解决方案。
(3)自监督学习:通过设计预测任务,如预测图像中缺失的部分或文本中的空白词汇,来引导模型自主学习数据的内在表示,这种方法减少了对昂贵标注数据的依赖,提高了学习的效率和泛化能力。
在实际操作中,对齐、融合与表示三个环节紧密相连,形成一个完整的多模态学习流程。首先,通过对齐确保了不同模态数据的关联性和一致性;随后,融合策略决定了如何最佳地整合这些信息,以构建更全面的理解;最后,表示的质量直接影响到最终学习任务的执行效果。这三个步骤的相互作用和优化,共同推动了多模态学习的发展,使其成为现代人工智能领域中最富有活力的研究方向之一。
总之,多模态学习的研究正处于快速发展之中,其目标是深入探索和充分利用多模态数据的丰富信息,为各种机器学习任务提供更强大的支持。
7.1.2 CLIP
CLIP(Contrastive Language-Image Pre-training)是由OpenAI开发的开创性多模态模型,它通过学习文本和图像之间的对比关系,实现对两者跨模态理解的突破。CLIP模型的核心思想是将文本和图像嵌入到一个共同的语义空间中,使得相关的文本描述和图像内容在这个空间中的表示彼此靠近,而不相关的则远离。这种设计使得CLIP模型能够在各种任务上表现出色,如图像分类、图像检索、文本分类等。
CLIP的训练流程分为三个阶段:首先,通过对比学习对图像-文本对进行预训练,旨在强化模型识别相关图文的能力;其次,基于预训练的模型,创建分类器以从文本标签中提取特征;最后,利用这些特征进行零样本预测,即在没有额外训练的情况下对新任务进行推断。CLIP的训练数据来源于WIT(WebImageText)数据集,这是一个包含4亿个图像和文本对的庞大集合,涵盖了丰富的自然语言描述,而非仅限于简单的类别标签。这种数据的多样性为模型提供了更广泛的语言和视觉语境,增强了其泛化能力。在技术架构上,CLIP采用双流网络,分别处理图像和文本,再将两者映射至同一多模态空间进行对比。具体而言,图像和文本经过各自的编码器转换为高维向量,之后通过计算向量间的相似度,优化模型以最大化匹配对的相似度,同时最小化非匹配对的相似度。
CLIP的应用场景广泛,尤其在跨模态检索领域展现出巨大潜力。用户可通过输入文本查询图像,或反向操作,实现精准的内容匹配。其工作流程分为图片特征提取与入库,以及基于输入文本或图像的特征检索。通过计算相似度并排序,系统能返回与查询最匹配的结果。
此外,CLIP模型还能感知图像描述的细微差异,如对同类型物体的不同描述,体现出对语言细节的敏感度。这表明CLIP不仅能够识别物体,还能理解描述其特性的丰富语言表达,为视觉理解和自然语言处理的融合开辟了新路径。
在大规模数据检索中,CLIP利用向量数据库和高效的索引策略,如倒排索引、近似最近邻搜索、向量量化等,实现快速、准确的检索。这些技术在保持检索精度的同时,大幅提升了处理大规模数据集的速度,使得CLIP在实际应用中更加高效和实用。CLIP安装有两种方式,一种是下载源码后安装,通过git clone https://github.com/openai/CLIP.git命令下载源码到本地,切换到CLIP根目录下,通过python setup.py install安装。另一种通过pip install openai-clip命令安装即可。接下来使用CLIP模型进行文本图像相似度检索,代码如下:

第6章/Clip.py

导入必要的库

import torch
import clip
from PIL import Image

检测是否有可用的CUDA设备,如果有则使用GPU,否则使用CPU

device = “cuda” if torch.cuda.is_available() else “cpu”

加载预训练的CLIP模型,这里使用的是"ViT-B/32"版本的模型

model, preprocess = clip.load(“ViT-B/32”, device=device)

打开图片文件并进行预处理,然后将其转换为模型所需的张量格式,并添加批次维度

image = preprocess(Image.open(“CLIP.png”)).unsqueeze(0).to(device)

将文本字符串列表分词,转换为模型可以理解的格式,并移动到指定的设备上

注意:这里的文本需要替换为中文

text = clip.tokenize([“一张图表”, “一只狗”, “一只猫”]).to(device)

在不需要梯度计算的上下文中进行推理,以减少内存消耗

with torch.no_grad():
# 使用模型分别对图片和文本进行编码
image_features = model.encode_image(image)
text_features = model.encode_text(text)
# 使用模型计算图片和文本之间的相似度得分
logits_per_image, logits_per_text = model(image, text)
# 将图片的相似度得分转换为概率分布
probs = logits_per_image.softmax(dim=-1).cpu().numpy()

打印出每张图片对应每个文本标签的概率,预期输出:[[0.9927926 0.00421069 0.00299576]]

print(“标签概率:”, probs)
在这段代码中,clip.load(“ViT-B/32”, device=device)这一行表明正在加载一个预训练的CLIP模型,其中使用了Vision Transformer(ViT)作为其图像编码器部分。这意味着CLIP模型在这个例子中利用了ViT的能力来提取图像的特征表示。
ViT是一种基于Transformer架构的图像分类模型,由Google团队在2020年提出。该模型将传统的卷积神经网络(CNN)替换为纯Transformer结构,通过将输入图像分割成多个patch并将其作为序列数据处理,从而实现对图像的分类和识别。ViT的核心流程包括以下几个步骤:
(1)图像分块处理:首先将输入图像裁切成固定大小的Patch,例如32x32像素的块。
(2)图像块嵌入:将每个Patch转换为一维向量,并添加位置编码以保留空间信息。
(3)Transformer编码器:将这些向量输入到标准的Transformer编码器中进行处理,利用自注意力机制学习不同Patch之间的关系。
(4)任务特定头:最后,通过一个任务特定的头来完成最终的分类或其他视觉任务。

在CLIP模型中,使用ViT作为图像编码器的原因是ViT在图像处理方面的强大能力和高效性。ViT通过将图像分割成小块Patch并应用Transformer架构,能够有效地捕捉图像中的长距离依赖关系和复杂模式,这使得它在图像识别和理解任务中表现出色。CLIP模型是一个多模态模型,它结合了图像编码器和文本编码器来学习图像和文本之间的关联。在这种配置中,ViT作为图像编码器,负责将图像数据转换为一系列特征向量,这些特征向量随后可以与文本编码器产生的文本特征进行比较,以找出它们之间的相似度。
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,尽管可能会引入更多噪声。
4.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则更适合于快速部署到新的视觉分类任务中,尤其是当目标任务的数据难以获得或者成本较高时。例如,它可以用于社交媒体图片的自动标注、图像搜索引擎的构建等。

更多技术内容

更多技术内容可参见
清华《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大模型基础设施全解析:支撑万亿参数模型的幕后英雄

Logo

更多推荐