VLM系列文章1-LLaVA

作为VLM系列的第一篇文章,打算以LLaVA入手,毕竟是VLM领域较为经典的工作。

1. 核心贡献

  • 多模态指令跟随数据:包括PT、SFT数据的构造流程;
  • 大型多模态模型:一种新的框架,结构较为简单高效;
  • 评估数据集;

2. 模型架构与重建目标

2.1 模型架构

在这里插入图片描述
核心思想就是将视觉特征嵌入到LLM中,作为LLM的prefix(前缀),LLM作为建模的主体。

  1. 首先输入的Xv 经过一个vision encoder,比如open-clip等, siglip-so400m-patch14-384,抽取图像特征;
  2. 得到Zv经过一个Project W,这个是将视觉特征和LLM进行特征对齐,当然这里的对齐是比较简单,后续的工作包括一些Lora方式(CogView)等;
  3. 经过project得到的Hv 转换特征和来自Xq 经过embedding得到的Hq 进行拼接,一起送到LLM中,比如Vicuna;

2.2 训练流程

  1. PT阶段:仅训练Projecter,视觉和LLM固定;
  2. SFT阶段: 训练Projecter和LLM,视觉固定;

当然你会想为什么这么设计,为什么是需要两阶段?一阶段不行吗? 以及视觉为什么不训练? 当然这些实验后续的工作也进行设计,我们后面的一些文章应该会涉及到;

2.3 重建目标

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在第一次看这些公式以及重建的目标的时候,自己理解其实是不深刻的,为什么要这么设计,特别是看到仅绿色的序列或者token参与Loss计算的时候,还是有点懵的,自回归的Loss到底是什么了?

之前也阅读了LLava的代码,可能结合代码会有着更加深刻的认识,这里简单的介绍几点。

2.3.1 Conversion

这个是llava代码中比较关键的部分,地址为:llava/conversation.py

在PT和SFT脚本中,有个关键的区别就是有个--version 字段,它在PT和SFT阶段一般是不同的。在PT阶段一般设置的是plain,这个不同的LLM可能都是这个,而SFT阶段可能设置就不一样了,有设置llava_llama_2mistral_instruct 等。这个设置的不同的是主要是因为不同的LLM在训练时候使用的template是不同的,因为它需要控制不同的角色,比如system, userassistant, 这部分内容可参考:huggingface.co/docs/transformers/main/en/chat_templating
在这里插入图片描述
具体来看:

  1. 在PT阶段,使用plain 模板,最终在preprocess函数中使用preprocess_plain 本质上是直接将问题,变成<image> 了, 因为PT默认使用的数据集是单轮的,经过CC3M过滤的图像描述数据集,PT阶段主要是视觉和LLM对齐;
    在这里插入图片描述
  2. SFT阶段:主要使用的
    在这里插入图片描述
    因为这里的情况稍微复杂一点,区分有图像和没有图像(可能只是纯文本作为SFT数据),那么有图像的话就将图像标记-200插入进去,只是在第一轮插入;最后的返回有两个,一个是input_ids一个是labels,那么label主要会有一个IGNORE_INDEX (-100),这个决定了哪些inputs_ids的数值在计算loss会被忽略。

2.3.2 LlavaMetaForCausalLM

这个函数是比较重要的,比如我们建模llava_llama 这个函数,
在这里插入图片描述
不同的LLM最后都通过多继承的方式继承LlavaMetaForCausalLM, 该类的核心就是将来自的视觉特征和LLM特征插入。因为这里不是使用input_ids,也是将其变成emdedding,然后将视觉特征进行插入。
在这里插入图片描述

2.3.3 Loss计算

在训练代码中,其实没有显式的调用loss,它其实是用的shift loss进行计算的。-100 在这里就体现了。
在这里插入图片描述

3 数据构造

3.1 PT阶段

主要是在CC3M基础上进行过滤,使用Spacy 工具对名词性短语进行排序,核心的思想就是过滤出现频率太低的,同时也抑制出现频率太高的。
在这里插入图片描述

3.2 SFT阶段

主要是借助GPT-4(text-only)进行ICL学习构造样本。

在这里插入图片描述

  • Conversation:对话数据,共 58K 个样本
  • Detailed description:对图像丰富而全面的描述,共 23K 个样本
  • Complex reasoning:复杂推理数据,数据的回复通常需要遵循严格的逻辑逐步推理,共 77K 个样本

Conversation 数据的构造思路如下:

  • 给出一个 system prompt,要求 GPT4 根据提供的图片描生成多轮对话
  • 提供几个示例,便于 GPT4 理解以及生成类似的多轮对话
  • 将上面的内容输入给 GPT4,GPT4 返回多轮对话

这部分详细可参考:LLaVA(五)构造多模态数据 感觉讲的挺好,这里不在赘述了。

4 结果

结果还算可以。
在这里插入图片描述

5 参考文献

  1. Visual Instruction Tuning
  2. 多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning
  3. LLaVA(一)LLaVA 论文解读

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入了解 GPT-4 和 ChatGPT 的 API---使用 OpenAI Python 库

文章目录 OpenAI 访问权限和 API 密钥Hello World 示例程序使用 GPT-4 和 ChatGPTChatCompletion 端点的输入选项ChatCompletion 端点的输出格式 OpenAI 将 GPT-4 和 ChatGPT 作为服务提供。这意味着用户无法直接访问模型代码&#xff0c;也无法在自己的服务器上运行这些模型。…

牛客周赛 Round 48 解题报告 | 珂学家

前言 题解 这场感觉有点难&#xff0c;D完全没思路, EF很典&#xff0c;能够学到知识. E我的思路是容斥贡献&#xff0c;F很典&#xff0c;上周考过一次&#xff0c;引入虚拟节点质数(有点像种类并查集类似的技巧). 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 …

【第十八课】区域经济分析——探索性空间数据分析软件实操

一、前言 ArcGIS有专门处理探索性空间数据分析方法的工具,即地统计分析模块。 该模块主要由三个功能模块组成:探索性数据分析(Explore)、地统计分析向导(Geostatistical Wizard),以及生成数据子集(Create Subsets)。其中利用 这些基本功能模块,可以方便完成多种地统…

Thinkphp/Laravel高校竞赛管理系统的设计与实现_9pi7u

高校竞赛管理&#xff0c;其工作流程繁杂、多样、管理复杂与设备维护繁琐。而计算机已完全能够胜任高校竞赛管理工作&#xff0c;而且更加准确、方便、快捷、高效、清晰、透明&#xff0c;它完全可以克服以上所述的不足之处。这将给查询信息和管理带来很大的方便&#xff0c;从…

【Qt】Qt多线程编程指南:提升应用性能与用户体验

文章目录 前言1. Qt 多线程概述2. QThread 常用 API3. 使用线程4. 多线的使用场景5. 线程安全问题5.1. 加锁5.2. QReadWriteLocker、QReadLocker、QWriteLocker 6. 条件变量 与 信号量6.1. 条件变量6.2 信号量 总结 前言 在现代软件开发中&#xff0c;多线程编程已成为一个不可…

数字图像分析(第三部分)

文章目录 第11章 基于概率图模型的图像分析概率有向图模型因子分解生成式模型链式图条件独立性有向图模型的马尔科夫毯概率无向图模型模型定义概率无向图模型的因子分解条件随机场条件随机场的定义条件随机场的预测算法第12章 运动分析运动相机建模光流运动表达方法运动估计准则…

AI软件革新文本操作体验:从自动粘贴文本到一键提取保存手机号码

在当今数字化时代&#xff0c;AI技术的快速发展为各行各业带来了革命性的变革。特别是在文本处理领域&#xff0c;AI软件通过其强大的自动粘贴文本功能以及一键提取并保存手机号码的便捷操作&#xff0c;极大地提高了工作效率&#xff0c;为用户带来了全新的体验。本文将深入探…

CSS 文本输入框右下角的尺寸控件(三斜线:-webkit-resizer)消除,以及如何配置其样式,添加 resize 让标签元素可进行拖拽放大。

前言&#xff1a;在日常的前端开发中&#xff0c;不管是原始的和 还在在各类组件库中的文本输入框中&#xff0c;元素内容的右下角总是有一个三斜线的样式&#xff0c;本文简单了解它是什么&#xff1f;如何去控制并修改样式&#xff1f; 一、它是&#xff1f; 这三个斜线其实…

v0.9.6 开源跨平台个人知识管理工具 TidGi-Desktop

在这个信息爆炸的时代&#xff0c;知识管理变得尤为重要。太记(TidGi)&#xff0c;一款基于太微(TiddlyWiki)的知识管理桌面应用&#xff0c;正是为了满足人们对信息整理、知识管理和个人隐私保护的需求而设计的。它不仅能够帮助用户高效地管理和整理信息&#xff0c;还能够自动…

简化部署流程——无线UWB如何实现自标定?

一.什么是UWB信标自标定&#xff1f; UWB&#xff08;超宽带&#xff09;自标定是指在UWB系统中&#xff0c;基站或节点能够自动识别和确定自己的位置&#xff0c;无需外部干预或手动输入其地理位置信息。这种技术主要利用系统内部的信号测量和算法来自动计算节点之间的距离以…

使用PEFT库进行ChatGLM3-6B模型的LORA高效微调

PEFT库进行ChatGLM3-6B模型LORA高效微调 LORA微调ChatGLM3-6B模型安装相关库使用ChatGLM3-6B模型GPU显存占用准备数据集加载模型加载数据集数据处理数据集处理配置LoRA配置训练超参数开始训练保存LoRA模型模型推理从新加载合并模型使用微调后的模型 LORA微调ChatGLM3-6B模型 本…

【vue】vue响应式原理

vue响应式原理 vue2的响应式原理 vue2对对象类型的监听是通过Object.defineProperty实现的&#xff0c;给想要实现响应式的数据对象每个属性加上get,set方法&#xff0c;以实现数据劫持的操作。而对数组类型的监听是通过重写数组的方法实现的。 Object.defineProperty的定义…

组合数学、圆排列、离散数学多重集合笔记

自用 如果能帮到您&#xff0c;那也值得高兴 知识点 离散数学经典题目 多重集合组合 补充容斥原理公式 隔板法题目 全排列题目&#xff1a;

机械拆装-基于Unity-准备零件

目录 前言 1. 装配体模型的准备&#xff08;STEP格式保存为零件&#xff09; 1.1 关于不停提示“默认模板无效” 1.2 关于无法保存单个零件的解决 2. 整理装配体与零件 2.1 零件命名规则 2.2 建立子装配体 3. 装配体和零件转换格式 3.1 3DMax单位设置 3.2 装配体转换 3.3…

JavaScript通用下载方法,但jpg图片下载打不开

通用下载方法&#xff0c;通过Blob的方式&#xff0c;访问Url地址&#xff0c;下载对应的图片&#xff0c;excel等文件。 axios({method: "get",url,responseType: "blob",}).then((res: any) > {const link document.createElement("a");co…

Linux - 札记 - W10: Warning: Changing a readonly file

Linux - 札记 - W10: Warning: Changing a readonly file 这里写目录标题 一、问题描述1. 现象2. 原因 二、解决方案 一、问题描述 1. 现象 在使用 vim 编辑文件时&#xff08;我这里是要编辑 /root/.ssh/authorized_keys&#xff09;提示&#xff1a;W10: Warning: Changing…

VOC格式转YOLO格式,xml文件转txt文件简单通用代码

目录 前言 思路介绍 代码 完整代码 拓展代码 前言 很多人在进行目标检测训练时习惯将得到的数据标注为XML文件的VOC格式&#xff0c;或者在网上获取的数据集被标注为XML文件&#xff0c;但是不同的标注工具进行的标注会产生不同的标注xml文件&#xff0c;这里我写了一种通用…

信息学奥赛初赛天天练-36-CSP-J2021阅读程序-ASCII、运算符优先级、二进制补码存储、模拟算法应用

PDF文档公众号回复关键字:20240626 2021 CSP-J 阅读程序2 1 阅读程序(判断题1.5分 选择题3分 共计40分 ) #include<stdio.h> #include<string.h>char base[64]; char table[256]; char str[256]; char ans[256];void init() {for(int i0;i<26;i) base[i]Ai;fo…

49、基于归一化感知器的输入向量分类(matlab)

1、基于归一化感知器的输入向量分类的原理及流程 归一化感知器是一种分类算法&#xff0c;其原理基于感知器算法&#xff0c;但是在输入向量上进行了归一化处理&#xff0c;以提高算法的性能和稳定性。 流程如下&#xff1a; 输入向量归一化&#xff1a;对每个输入向量进行归…

图解HTTP笔记整理(前六章)

图解HTTP 第一章 web使用HTTP &#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;协议作文规范&#xff0c;完成从客户端到服务器端等一系列运作流程。 协议&#xff1a;计算机与网络设备要相互通信&#xff0c;双方就必须基于相同的方法。比如…