多模态论文笔记——LLaVA

news2024/12/30 21:44:36

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍多模态模型:LLaVA。处理包含图像和文本的多模态数据,并生成合理准确的回答。

在这里插入图片描述

文章目录

    • 论文
    • 模型架构
      • 视觉编码器
      • 语言模型
      • 多模态融合
        • 总结
    • 训练细节
      • 阶段1:特征对齐预训练
      • 阶段2:端到端微调
      • 总结
    • 实验
    • LLava 1.5模型
      • 论文
      • LLaVA 1.5模型的改进
    • LLava 1.6(LLaVA-NeXT)模型
      • 论文
      • LLaVA 1.5模型的改进
    • Reference
  • 历史文章
    • 机器学习
    • 深度学习

论文

Visual Instruction Tuning

LLaVA(Large Language and Vision Assistant)是一种多模态模型,将视觉和语言能力结合在一起,用于图像-文本理解和生成任务。以下是对LLaVA的详细介绍:

模型架构

在这里插入图片描述
LLaVA(Large Language and Vision Assistant)是一个简单高效的多模态模型,它通过映射矩阵连接一个预训练的 视觉编码器(CLIP ViT-L/14) 和一个 大语言模型(Vicuna) 实现跨模态理解,再使用Vicuna的解码能力生成自然语言输出。

  • 输入图像 X v X_v Xv,经过视觉编码器得到图像特征 Z v Z_v Zv,之后 Z v Z_v Zv通过多模态融合的线性投影处理,得到H_v(与文本特征对齐,达到同维度)。
  • 输入文本 X q X_q Xq,经过文本编码器得到图像特征 H q H_q Hq
  • 图像特征 Z v Z_v Zv和图像特征 H q H_q Hq,经过文本解码器,得到 X a X_a Xa

视觉编码器

LLaVA 的视觉编码器采用了 CLIP 的 Vision Transformer (ViT-L/14),这是一个强大的预训练视觉模型。
详细内容参考:多模态论文笔记——CLIP、BLIP

架构与功能

  • CLIP ViT-L/14:由 OpenAI 提出的多模态模型,使用图像编码器和文本编码器对图像-文本对进行联合训练。
  • 输入图像经过编码器后,被转化为一个二维网格的嵌入表示(feature map),其形状为:
    [ 1 , grid H × grid W , hidden_dim ] [1, \text{grid}_H \times \text{grid}_W, \text{hidden\_dim}] [1,gridH×gridW,hidden_dim]
    • grid H \text{grid}_H gridH grid W \text{grid}_W gridW:表示图像在空间维度上的分辨率。
    • hidden_dim \text{hidden\_dim} hidden_dim:每个 token 的特征向量维度。
  • 这种结构化表示捕获了图像的全局和局部信息。

语言模型

LLaVA 的语言部分采用了 Vicuna,这是基于 Meta 的 LLaMA 微调优化而成的开源语言模型。Vicuna 在多模态任务中发挥着重要作用,它通过结合视觉特征和文本特征来执行生成任务。

  1. 从文本中提取特征
    • Vicuna 作为一个语言模型,首先负责从输入的文本中提取语言特征。Vicuna 能够有效地理解文本内容,将输入的自然语言句子转化为高维的特征表示(例如,token embedding)。这些特征是进行多模态生成和推理的基础。
  2. 多模态融合后,进行文本的生成
    • 在 LLaVA 中,图像特征通过 CLIP 提取,并经过投影层转换为与文本特征相同的维度。这时,文本和图像的特征被拼接成一个统一的 token 序列。Vicuna 接收这些融合后的特征(图像 token 和文本 token)作为输入,进行生成任务。
    • 通过其强大的生成能力,Vicuna 能够基于输入的视觉信息和文本提示,生成符合语义的自然语言文本。生成的文本可以是图像描述、回答视觉问答、推理结论或其他复杂的生成任务。

多模态融合

LLaVA 的多模态融合部分通过简单而高效的机制,将视觉和语言特征结合在一起。

  1. 对齐机制

    • 图像特征的维度 hidden_dim \text{hidden\_dim} hidden_dim 和语言模型的嵌入维度 emb_dim \text{emb\_dim} emb_dim 可能不一致。
    • 为此,使用了一个线性投影 W W W 对图像特征进行变换:
      Projected Features = Vision Features ⋅ W \text{Projected Features} = \text{Vision Features} \cdot W Projected Features=Vision FeaturesW
      • 线性投影的输出形状为 [ 1 , grid H × grid W , emb_dim ] [1, \text{grid}_H \times \text{grid}_W, \text{emb\_dim}] [1,gridH×gridW,emb_dim]
  2. 特征拼接

    • 投影后的图像 token 与文本 token 按序列形式拼接在一起,形成一个长 token 序列:
      Input Sequence = [ Image Tokens , Text Tokens ] \text{Input Sequence} = [\text{Image Tokens}, \text{Text Tokens}] Input Sequence=[Image Tokens,Text Tokens]
    • 这种设计允许语言模型通过注意力机制统一处理视觉和语言信息。

在多模态融合阶段,LLaVA团队使用了轻量级的投影层将图像特征映射到语言模型的嵌入空间,论文中提到了,这是为了便于快速进行实验和优化。其实可以使用更复杂、更有效的图像-语言融合机制,如: Flamingo 中的 gated cross-attention 和 BLIP-2 中的 Q-former 等方法。
BLIP2 的详细内容参考:
cross-attention是早期扩散模型的融合技术,感兴趣的可以参考:
在DiT论文中使用了三种多模态融合技术,cross-attention是其中一种,感兴趣可以参考:


总结
  1. 视觉编码器
    • CLIP ViT-L/14 作为视觉编码器,从图像中提取结构化的特征。通过 CLIP,图像被转化为固定维度的特征嵌入,这些特征为后续的多模态融合提供视觉信息。
  2. 语言模型
    • 采用基于 LLaMA 微调优化的 Vicuna,这使得模型在多模态任务中能够有效地处理文本输入。Vicuna 主要负责从文本中提取特征,并结合视觉信息进行多模态任务的生成。
  3. 多模态融合
    • 视觉特征和文本特征通过 线性投影token 拼接 的方式进行融合。视觉特征经过投影后与文本特征对齐,形成一个统一的 token 序列,然后输入到语言模型中进行生成任务。

训练细节

LLaVA 模型在训练过程中分为两个阶段:特征对齐预训练端到端微调

阶段1:特征对齐预训练

  • 原因:由于 CLIP 的视觉编码器和语言模型的词嵌入(word embedding)不在同一个语义空间,因此需要这个阶段来确保视觉和语言特征可以有效对齐。

  • 目标:将图像特征与文本词嵌入(word embedding)对齐,对图像特征进行变换,将其转换到文本的语义表达空间,使得图像和文本能够在统一的语义空间内进行操作。

  • 步骤

    • 数据集:在 CC3M 数据集(一个包含大量图像和文本对的数据集)上进行预训练。
    • 冻结模型权重:在这个阶段,视觉编码器(Vision Encoder)LLM(大型语言模型,如 Vicuna)保持权重不变。
    • 训练插值层:唯一需要训练的是 投影层(Projection W) 的权重,该层用于将从 CLIP 提取的视觉特征(图像 token embedding)映射到与文本特征(文本 word embedding)相同的语义空间。
    • 对齐目标:通过训练,最大化图像特征与文本词嵌入之间的对齐概率,即让图像和文本特征在同一语义空间中更加接近。

阶段2:端到端微调

  • 目标:通过端到端微调,优化投影层和语言模型,以提升模型在多模态任务中的表现,特别是生成和推理任务。

  • 步骤

    • 数据集:使用 生成的指令数据,包括 对话详细描述复杂推理 数据,进行训练。
    • 冻结视觉编码器:在这个阶段,依然冻结 视觉编码器(Vision Encoder) 的权重不变,只更新语言模型和投影层的权重
    • 更新模型权重:训练过程中会同时更新 投影层(Projection W)LLM语言模型 的权重,以适应下游任务。
    • 任务类型
      • Multimodal Chatbot:训练模型理解和生成基于图像和文本的对话。LLaVA在多模态聊天机器人实验中表现出色,能够准确回答用户的问题,并提供详细的描述和复杂的推理。与BLIP-2和OpenFlamingo相比,LLaVA在对话、详细描述和复杂推理任务上的表现均优于对手。
      • Science QA:训练模型处理图像和文本的科学问答任务。在科学问答数据集上,LLaVA在无图像上下文的问题上达到了90.92%的准确率,接近当前最优方法MM-CoTBase的91.68%。通过与GPT-4的集成,LLaVA的最终准确率达到了92.53%,刷新了现有方法的记录。

总结

  • 阶段1:特征对齐预训练,通过训练投影层来对齐图像和文本特征,使它们在同一语义空间中。
  • 阶段2:端到端微调,通过在具体任务(如对话生成和科学问答)上进行微调,进一步提升模型的多模态生成和推理能力。

这两个阶段结合起来,帮助 LLaVA 模型从特征对齐到多模态任务的优化,实现高效的图像-文本融合和生成能力。

LLaVA的训练过程中对多轮对话实验了一些策略:

  1. 多轮对话数据生成:为每张图片生成多轮问题和答案的对话数据,形成图像和文本的交互序列。
  2. 指令构建
    • 第一轮:随机选择图片和问题的顺序。
    • 后续轮次:指令设置为当前轮次的问题。
  3. 多模态指令-跟随序列格式化:通过上述构建方式,确保图像和文本数据以统一的格式输入模型,保证多模态数据的有效融合。
  4. 语言模型指令调优:对语言模型进行自回归训练,使其在给定图像和指令的条件下,生成符合上下文的回答。

这种策略通过结合图像与文本的多模态信息,优化语言模型的生成能力,适应复杂的多模态任务。

实验

  1. Multimodal Chatbot:LLaVA在多模态聊天机器人实验中表现出色,能够准确回答用户的问题,并提供详细的描述和复杂的推理。与BLIP-2和OpenFlamingo相比,LLaVA在对话、详细描述和复杂推理任务上的表现均优于对手。
  2. Science QA:在科学问答数据集上,LLaVA在无图像上下文的问题上达到了90.92%的准确率,接近当前最优方法MM-CoTBase的91.68%。通过与GPT-4的集成,LLaVA的最终准确率达到了92.53%,刷新了现有方法的记录。

LLava 1.5模型

论文

Improved Baselines with Visual Instruction Tuning

LLaVA 1.5模型的改进

在这里插入图片描述

LLaVA 1.5 在多个方面进行了增强,包括语言模型的更新、插值层的升级、视觉编码器分辨率的提升,以及数据质量的改进,这些都共同推动了模型的性能提升,使得LLaVA 1.5能够在多模态任务上取得更好的效果。

  1. LLM模型
    • Vicuna v1.5 13B:LLaVA 1.5 使用了更大、更强的语言模型——Vicuna v1.5(13B参数),相较于LLaVA原版使用的语言模型,Vicuna v1.5 具有更强的语言理解和生成能力,特别是在多模态任务中表现出色。
  2. 融合(插值层)
    • MLP层:LLaVA 1.5 将原先的单一线性投影层(Projection Layer)替换为更复杂的多层感知机(MLP)。MLP具有多个线性层堆叠,并能捕捉更复杂的非线性关系,这有助于更好地对齐视觉和语言特征,从而提升多模态生成效果。
  3. Vision Encoder(视觉编码器)
    • CLIP ViT-L/336px:在LLaVA 1.5中,输入图像的分辨率被提高到336像素(相比LLaVA的224像素)。这种分辨率提升使得模型能够提取更多细节,从而更好地理解图像中的内容,提升对图像的细节捕捉能力。
  4. 更高质量的数据
    • 数据质量的提升通常意味着使用了更丰富、更具多样性且标注更加精准的训练数据集。这有助于提高模型的表现,尤其是在更复杂的多模态任务上。

LLava 1.6(LLaVA-NeXT)模型

论文

LLaVA-NeXT: Improved reasoning, OCR, and world knowledge

LLaVA 1.5模型的改进

在这里插入图片描述
LLaVA 1.6在多个方面进行了重要升级,包括视觉编码器分辨率的提升、语言模型参数量的大幅增加、OCR能力的增强以及视觉对话性能的改进。这些改进使得LLaVA 1.6在图像理解、语言生成、推理和OCR任务上都达到了新的高度,表现更加出色。

  1. Vision Encoder分辨率
  • LLaVA引入了“AnyRes”技术。这项技术使模型具有适应性,能够根据输入图像的不同分辨率进行调整,从而优化图像处理过程。
  • 支持更大的输入分辨率,新增的分辨率包括672x672、336x1344、1344x336等。这些更高的分辨率允许模型捕捉更多的图像细节,从而增强其对图像的理解能力。
  • 还支持通过图片裁切、编码和合并的方式处理不同分辨率的输入,进一步增强了视觉编码器的灵活性和表现。
  1. LLM模型参数量大升级
    • LLaVA 1.6将语言模型(LLM)的参数量从1.5版本的13B提升到34B。这一升级使得模型具有更强的语言理解和生成能力,尤其在处理复杂的多模态任务时,表现得更加出色。
  2. OCR能力提升
    • OCR(光学字符识别)能力的提升使得LLaVA 1.6在图像中的文字识别和推理能力上有了显著进展。通过改进指令数据集的构建,LLaVA 1.6能够更好地进行OCR任务,提升了视觉推理的准确性。
  3. 更好的视觉对话
    • 更好的视觉对话,更多场景,覆盖不同应用,以及更好的世界知识和逻辑推理。它能够根据图像内容提供更丰富、更精确的回答,进一步增强了多模态交互的能力。
  4. 高效部署和推理
    • 高效的推理和部署能力是LLaVA 1.6的亮点之一,尤其是在资源受限的环境下,其优化的推理框架(如SGLang)能够在保证模型表现的同时,提升推理速度和响应能力。这对于实际应用场景非常重要,尤其是在实时处理需求高的任务中。

Reference

【LLM多模态】LLava模型架构和训练过程 | CLIP模型
一文读懂多模态大模型:LLaVA系列 | 从图像到视频的内容理解


历史文章

机器学习

机器学习笔记——损失函数、代价函数和KL散度
机器学习笔记——特征工程、正则化、强化学习
机器学习笔记——30种常见机器学习算法简要汇总
机器学习笔记——感知机、多层感知机(MLP)、支持向量机(SVM)
机器学习笔记——KNN(K-Nearest Neighbors,K 近邻算法)
机器学习笔记——朴素贝叶斯算法
机器学习笔记——决策树
机器学习笔记——集成学习、Bagging(随机森林)、Boosting(AdaBoost、GBDT、XGBoost、LightGBM)、Stacking
机器学习笔记——Boosting中常用算法(GBDT、XGBoost、LightGBM)迭代路径
机器学习笔记——聚类算法(Kmeans、GMM-使用EM优化)
机器学习笔记——降维

深度学习

深度学习笔记——优化算法、激活函数
深度学习——归一化、正则化
深度学习——权重初始化、评估指标、梯度消失和梯度爆炸
深度学习笔记——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总
深度学习笔记——卷积神经网络CNN
深度学习笔记——循环神经网络RNN、LSTM、GRU、Bi-RNN
深度学习笔记——Transformer
深度学习笔记——3种常见的Transformer位置编码
深度学习笔记——GPT、BERT、T5
深度学习笔记——ViT、ViLT
深度学习笔记——DiT(Diffusion Transformer)
深度学习笔记——CLIP、BLIP
深度学习笔记——AE、VAE
深度学习笔记——生成对抗网络GAN
深度学习笔记——模型训练工具(DeepSpeed、Accelerate)
深度学习笔记——模型压缩和优化技术(蒸馏、剪枝、量化)
深度学习笔记——模型部署
深度学习笔记——VQ-VAE和VQ-VAE-2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2267481.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汽车的hmi设计还能有哪些创新?要从哪些方面下手

随着科技的不断发展,汽车的人机交互界面(HMI)设计也在不断演进。目前,汽车 HMI 已经从传统的物理按钮和仪表盘发展到了数字化、智能化的交互系统。然而,仍有许多创新的空间等待探索。那么,汽车的 HMI 设计还…

基于深度学习(HyperLPR3框架)的中文车牌识别系统-前言

参考链接: GitHub - szad670401/HyperLPR: 基于深度学习高性能中文车牌识别 High Performance Chinese License Plate Recognition Framework.基于深度学习高性能中文车牌识别 High Performance Chinese License Plate Recognition Framework. - szad670401/HyperL…

Python库中各种插值函数的使用

文章目录 Python库中各种插值函数的使用数据1: 随机的数据数据2: 从 cos轨迹中取值B样条三次样条Akmia画图显示数据1 的比较结果位置比较示意图速度比较示意图加速度比较示意图 数据2 的比较结果位置比较示意图速度比较示意图加速度比较示意图 全部代码如…

ip归属地怎么判定?如何查看自己ip属地

在当今数字化时代,IP地址作为互联网通信的基础,扮演着至关重要的角色。而IP归属地的判定与查看,不仅关乎网络安全、隐私保护,还直接影响到社交平台的信任机制与信息传播的真实性。本文将深入探讨IP归属地的判定原理以及如何查看自…

soular使用教程

用 soular 配置你的组织,工作更高效!以下是快速上手的简单步骤:  1. 账号管理 可以对账号信息进行多方面管理,包括分配不同的部门、用户组等,从而确保账号权限和职责的清晰分配。  1.1 用…

JS媒体查询之matchMedia API 实现跟随系统主题色切换效果

📊写在前面 在网页设计中,跟随系统主题切换可以通过CSS和JavaScript实现。可以通过定义两套CSS变量,根据系统主题的颜色来切换变量的生效,从而实现不同主题下的页面样式变化。 例如,可以使用媒体查询API来获取系统主题…

客户案例:基于慧集通的致远OA与海康威视智能会议设备集成方案

一、引言 本案例原型公司是我国生产纺织原料的大型上市企业,主导产品为再生纤维素长丝、氨纶等系列产品。公司产品不仅得到国内客户认可,还远销海外,合作伙伴遍布德国、意大利、日本、韩国、土耳其、印度等30多个国家和地区。 二、简介 &am…

【Leetcode】3046. 分割数组

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果 题目 题目链接🔗 给你一个长度为 偶数 的整数数组 n u m s nums nums 。你需要将这个数组分割成 n u m s 1 nums1 nums1 和 n u m s 2 nums2 nums2 两部分,要求: n u m s 1. l…

掌握软件工程基础:知识点全面解析【chap07、chap10】

chap07 软件设计基础 1.信息隐藏、内聚度和耦合度(在七种级别里应该注意什么原则)的概念 1.信息隐藏 模块独立的概念 o 模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息的模块不可访问; o 每个模块只完成一个相对独立的特定功能; o 模…

操作系统实验三 存储管理

实验三 存储管理 一、实验目的 通过实验使学生了解可变式分区管理使用的主要数据结构,分配、回收的主要技术,了解最优适应分配、最坏适应分配、最先适应分配和循环适应分配等分配算法。基本能达到下列具体的目标: 掌握初步进程在内存中的映…

40.2 预聚合和prometheus-record使用

本节重点介绍 : downsample降采样可以降低查询数据量 prometheus原生不支持downsample 实时查询/聚合 VS 预查询/聚合的优缺点 实时查询/聚合条件随意组合,性能差预查询/聚合 性能好,聚合条件需要提前定义 prometheus的预查询/聚合配置举例 downsample…

win11中win加方向键失效的原因

1、可能是你把win键锁了: 解决办法:先按Fn键,再按win键 2、可能是可能是 贴靠窗口设置 中将贴靠窗口关闭了,只需要将其打开就好了

【Rust自学】7.4. use关键字 Pt.2 :重导入与换国内镜像源教程

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 7.4.1. 使用pub use重新导入名称 使用use将路径导入作用域内后。该名称在词作用域内是私有的。 以上一篇文章的代码为例: m…

算法练习——模拟题

前言:模拟题的特点在于没有什么固定的技巧,完全考验自己的代码能力,因此有助于提升自己的代码水平。如果说一定有什么技巧的话,那就是有的模拟题能够通过找规律来简化算法。 一:替换所有问号 题目要求: 解…

三层交换机配置

✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网路安全入门系列 目录 一,三层交换二,实验案…

TCP-UDP调试工具推荐:Socket通信测试教程(附详细图解)

前言 在网络编程与应用开发中,调试始终是一项不可忽视的重要环节。尤其是在涉及TCP/IP、UDP等底层网络通信协议时,如何确保数据能够准确无误地在不同节点间传输,是许多开发者关注的核心问题。 调试的难点不仅在于定位连接建立、数据流控制及…

登录时的校验Token接口开发(Interceptor)

// 拦截器校验所有非登录请求时的token,校验成功之后解析出用户信息存入ThreadLocal中便于本次请求中共享该用户的信息,这个信息只能在本线程中拿到 一、需求分析 在用户登录后的请求交互中,Token 的校验是保障用户身份合法性和数据安全的重…

Hyper-V如何将文件复制到虚拟机

创建Hyper-V共享文件夹 通过创建共享文件夹的方式,能够帮助我们在主机与虚拟机之间轻松地进行数据交换共享,那么具体该如何通过网络共享来将文件复制到虚拟机呢?请您接着往下看。 步骤1. 在Hyper-V主机中创建一个文件夹,并将您想…

Linux(Centos 7.6)yum源配置

yum是rpm包的管理工具,可以自动安装、升级、删除软件包的功能,可以自动解决软件包之间的依赖关系,使得用户更方便软件包的管理。要使用yum必须要进行配置,个人将其分为三类,本地yum源、局域网yum源、第三方yum源&#…

go语言中zero框架项目日志收集与配置

在 GoZero 项目中,日志收集和配置是非常重要的,尤其是在分布式系统中,日志可以帮助开发人员追踪和排查问题。GoZero 提供了灵活的日志系统,能够方便地进行日志的配置和管理。 以下是如何在 GoZero 项目中进行日志收集与配置的基本…