多模态大模型 CLIP, BLIP, BLIP2, LLaVA, miniGPT4, InstructBLIP 系列

视觉+语言的多模态大模型目前主流方法是:借助预训练好的大语言模型和图像编码器,用一个图文特征对齐模块来连接,从而让语言模型理解图像特征并进行更深层的问答推理。

这样可以利用已有的大量单模态训练数据训练得到的单模态模型,减少对于高质量图文对数据的依赖,并通过特征对齐、指令微调等方式打通两个模态的表征。

主要的几个方法梳理如下:
在这里插入图片描述
CLIP
(Contrastive Language-Image Pre-training)

基本思想:CLIP的基本算法原理是文本和图像在特征域进行对齐。

模型结构:

为了对image和text建立联系,首先分别对image和text进行特征提取,image特征提取的backbone可以是resnet系列模型也可以是VIT系列模型;text特征提取目前一般采用bert模型。
特征提取之后,由于做了normalize,直接相乘来计算余弦距离,同一pair对的结果趋近于1,不同pair对的结果趋近于0,因为就可以采用对比损失loss(info-nce-loss)【这里要比较大的batch size才能有效果,类似于维护一个大的特征相似度矩阵】

BLIP
(Bootstraping language image pre-training)

基本思想:

兼顾图文理解和生成的多模态模型(Multimodal mixture of Encoder-Decoder),同时在三个视觉语言目标上联合预训练:图像文本对比学习ITC、图像文本匹配ITM、图像条件语言建模LM;同时提出了一种高效利用网络收集的嘈杂图文对的采样+过滤机制。
bootstraping翻译成“自举”有点别扭,我还是习惯理解为有放回抽样/迭代优化。

BLIP2

基本思想:

如标题所言 Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models,分两个阶段,通过利用预训练好的视觉模型和语言模型来提升多模态效果和降低训练成本。

模型结构:

BLIP-2 由预训练的Image Encoder,预训练的Large Language Model,和一个可学习的 Q-Former

组成。

Image Encoder:从输入图片中提取视觉特征,尝试了两种网络结构,CLIP 训练的 ViT-L/14和EVA-CLIP训练的 ViT-g/14(去掉了最后一层)。
Large Language Model:大语言模型进行文本生成,尝试了接入decoder-based LLM 和 encoder-decoder-based LLM两种结构。
Q-Former:弥补视觉和语言两种模态的modality gap,可以理解为固定图像编码器和固定LLM之间的信息枢纽,选取最有用的视觉特征给LLM来生成文本。

LLaVA(Large Language and Vision Assistant)

基本思想:

使用仅限语言的GPT-4生成多模态语言图像指令跟随数据,提出一种连接视觉编码器和LLM的端到端训练多模态大模型。

模型结构:

使用视觉编码器CLIP ViT-L/14+语言解码器LLaMA构成多模态大模型,然后使用生成的数据进行指令微调。输入图片X经过与训练好的视觉编码器的到图片特征Z,图片特征Z经过一个映射矩阵W转化为视觉Token H,这样Vison Token H_v与Language Token H_q指令就都在同一个特征空间,拼接后一起输入大模型。这里的映射层W也可以替换为更复杂的网络来提升性能,比如Flamingo中用的gated cross-attentio,BLIP-2中用的Q-former。
MiniGPT-4

基本思想:

GPT-4 具有先进的多模态生成能力的主要原因在于利用了更先进的大型语言模型(LLM),因此提出仅用一个投影层将一个冻结的视觉编码器和一个冻结的 LLM(Vicuna

)对齐。

模型结构:

类似BLIP2,包括一个冻结的视觉编码器(ViT-G/14 + Q-Former), 一个冻结的 LLM(Vicuna), 一个投影层。

两阶段训练:

第一阶段在大量对齐的图像文本对上对模型进行预训练,以获取基础的视觉语言知识。 在第二阶段,使用规模较小但更高质量的图文对数据集和精心设计的对话模板对预训练模型进行微调,以增强模型的生成可靠性和可用性。关于loss设计论文没有讲太细,看代码里面应该主要是计算language modeling loss: https://github.com/Vision-CAIR/MiniGPT-4/blob/main/minigpt4/models/mini_gpt4.py#L320

InstructBLIP(Instruction Tuning)

基本思想:

基于 BLIP-2 提出指令微调的范式,借助额外的 instruction 提取更有用的视觉特征。

模型结构:

InstructBLIP 的架构和 BLIP-2 相似,从预训练好的 BLIP-2 模型初始化,由图像编码器、LLM 和 Q-Former 组成。为了进行指令微调,在BLIP-2的基础上把 instruction text tokens也作为输入同时给到Q-former和LLM。其中可学习的K个queries 通过Q-former中共享的 self-attention 和输入指令交互,通过 cross-attention 和输入图片的特征交互,鼓励提取与任务相关的图像特征。

训练:和BLIP-2一致,分两个阶段

第一个vision-language表示学习阶段,将 Q-Former 连接到冻结的图像编码器image encoder,目标是Q-Former学习与文本最相关的视觉表示。
第二个vision-to-language生成学习阶段,将 Q-Former 连接到冻结的大语言模型LLM,将 Q-Former 的输出给到冻结的 LLM 来执行视觉到语言的生成学习,目标是训练Q-Former使其输出的视觉表示对LLM可用。
MME多模态大模型评估体系

链接: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models

基本思路:

针对多模态大模型提出评估基准MME,在14个子任务上评估了目前比较前沿的12个大模型的感知和认知能力。

通用的全面评估基准应具备以下四个特点:

涵盖不同层次的能力,包括感知和认知能力。前者指识别特定对象,如对象的存在、数量、位置和颜色。后者指通过组合LLM中的感知信息和知识推导出更复杂的答案(前者是后者的前提)。
数据或注释应尽可能不来自现有的公开可用数据集,以避免数据泄漏的风险。
指令应尽可能简明扼要,并符合人类的认知。所有模型应在相同统一的指令下进行测试,以进行公平比较,一个优秀的MLLM也应能够推广到这种简明扼要的指令。
MLLM对指令的响应应直观且便于定量分析。

对应的设计:

MME涵盖了感知和认知能力的考察,总共有14个子任务:
    感知能力:OCR能力和粗粒度识别、细粒度识别,前者识别对象的存在、数量、位置和颜色,后者识别电影海报、名人、场景、地标和艺术作品。
    认知能力:包括常识推理、数值计算、文本翻译和代码推理。
所有的指令-答案对都是人工构建的。对于涉及到的少数公共数据集,也仅使用图像,而不直接依赖于其原始注释。同时,我们努力通过真实照片和图像生成来收集数据。
MME的指令设计简明扼要,以避免对模型输出的影响,基本假设是一个好的MLLM应能够适配简单且常用的指令。
根据MLLM的输出准确&客观,主要是以"是""否"问答,便于进行定量统计。需要注意的是,文中还尝试设计了带有多项选择题的指令,但发现当前的MLLM可能无法遵循复杂的指令。
<think>好的,用户想了解如何在本地部署多模态大模型,我需要根据提供的引用资料来组织答案。首先,查看用户提供的三个引用内容,特别是引用2和引用3提到了ollama和手机端部署。引用1主要是关于大模型的学习资料,可能可以用于后续的学习资源推荐。 首先,我应该明确本地部署多模态大模型的关键步骤。根据引用2,ollama支持部署视觉模型、嵌入模型和工具模型,所以ollama可能是一个重要的工具。需要详细说明如何使用ollama进行部署,包括安装步骤和模型拉取的命令。 接下来,引用3提到在手机端进行本地部署,这可能涉及到安卓或iOS的特定工具,比如ML Kit或Core ML。需要分点说明手机端的不同方法,可能还需要提到模型优化的部分,比如量化技术,以适配手机资源。 然后,用户可能需要一些通用的本地部署方法,比如使用Hugging Face的Transformers库,这需要安装CUDA和PyTorch等依赖,适合有一定技术背景的用户。这部分可以作为一个步骤单独列出。 此外,注意事项部分也很重要,比如硬件需求、模型兼容性和安全隐私问题,帮助用户避免常见问题。最后,推荐学习资源,引用中的资料可以引导用户进一步学习。 需要确保回答结构清晰,分步骤说明,每个部分都结合引用内容,并在末尾添加引用标识。同时,生成的相关问题要围绕部署方法、工具比较、优化策略和应用场景展开,确保用户能延展了解相关内容。</think>### 如何在本地部署多模态大模型? #### 一、部署方法概述 本地部署多模态大模型需要结合硬件资源、框架选择和模型优化技术。以下是主要步骤和技术方案: 1. **使用ollama部署(适合桌面端)** ollama支持多模态模型的本地化部署,包括视觉模型和工具模型[^2]: ```bash # 安装ollama curl -fsSL https://ollama.ai/install.sh | sh # 拉取多模态模型(示例) ollama pull llava # 运行模型 ollama run llava ``` 通过REST API或命令行交互可实现图像-文本联合推理。 2. **手机端部署方案** 针对移动设备,可采用以下两种方式: - **Android端**:使用TensorFlow Lite或ML Kit,结合量化后的多模态模型(如MobileViT+文本编码器) - **iOS端**:通过Core ML框架转换PyTorch模型,利用Metal性能加速[^3] 3. **通用本地部署流程** ```python # 示例:使用Hugging Face Transformers加载多模态模型 from transformers import pipeline multimodal_pipe = pipeline("visual-question-answering", model="Salesforce/blip2-opt-2.7b") result = multimodal_pipe(image="scene.jpg", question="图中有什么物体?") ``` #### 二、关键注意事项 1. **硬件需求** - 显存要求:7B参数模型至少需要16GB显存(FP16精度) - CPU备用方案:使用llama.cpp等CPU推理框架,但速度会显著下降 2. **模型优化技术** - 量化:将FP32转换为INT8/INT4(降低30-50%资源占用) - 模型剪枝:移除冗余神经元结构 - 知识蒸馏:训练小型学生模型模仿大模型行为[^1] 3. **安全与隐私** 本地部署需注意模型权重文件加密和输入数据脱敏处理,防止隐私泄露[^3] #### 三、学习资源推荐 - 基础入门:AI大模型系统学习路线图(含多模态专项)[^1] - 实战教程:ollama多模态部署案例解析[^2] - 进阶优化:手机端模型量化实战视频教程[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值