【多模态】36、ShareGPT4V | 借助 GPT4V 的能够来生成更丰富的 caption 用于提升 LMM 模型的能力

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 2.1 ShareGPT4V 数据集构建
      • 2.2 ShareGPT4V-PT 数据生成
      • 2.3 ShareGPT4V-7B Model
    • 三、效果
      • 3.1 benchmark
      • 3.2 定量分析
      • 3.3 多模态对话
    • 四、一些例子

论文:ShareGPT4V: Improving Large Multi-Modal Models with Better Captions

代码:https://sharegpt4v.github.io/

出处:中国科学技术大学 | 上海 AI Lab

时间:2023.11

贡献:

  • 指出了目前 LMM 模型没有发挥最大能力的问题:没有高质量的 image-text pairs 数据集,低质量的数据集不利于 vision 和 language 模型的对齐
  • 构建了 ShareGPT4V 数据集,包含了 100k 高质量描述 caption(GPT-4V生成),1.2M 高质量描述(caption model 生成)
  • 提出了 ShareGPT4V-7B 模型,超越其他同量级 7B 模型的效果

一、背景

虽然近来 LMM 模型取得了很大的突破,但作者认为目前 LMM 模型并没有被激发出最优的能力,主要原因在于缺少高质量的 image-text pairs

图像一般包括非常丰富的信息和细粒度的语义,但这些细节信息和细粒度的语音通常并没有在主流的 image-text dataset 中体现出来,这些主流数据的 caption 一般都是对图像中主要目标的简短描述,这样会丢失掉很多内容,没法很好的进行不同模态的信息对齐

为了证明这个观点,作者替换了几个模型在 SFT 阶段中使用的图像的 caption,使用 GPT-4V 进行了优化和丰富,如图 2 所示。在LLaVA-1.5中,只替换了SFT(Supervised Fine-Tuning)阶段使用的图像-文本对数据中的 3.5%,而没有全部替换,即使这样,模型都得到了性能提升。

所以,作者进一步扩大了生成 caption 的范围:

  • 第一阶段:作者收集了约 10 万图像,然后使用 GPT-4V 生成高质量的描述文字,这些文字平均长度为 942 个字符,涵盖了丰富的图像信息,例如世界知识、物体属性、空间关系、美学评价等
  • 第二阶段:利用这些描述构建了一个描述模型,使用第一阶段的数据来训练该模型,能够给图像生成全面的描述

经过上面两个步骤,就得到了 ShareGPT4V 数据集,包括两部分:

  • 100k GPT4V 生成的 caption
  • 1.2M 使用 caption model 得到的 caption

作者使用 ShareGPT4V 构建了一个大型 LMM 模型:ShareGPT4V-7B,图 1 b 展示了 ShareGPT4V-7B 在 11 个 benchmark 上超越了其他 7B 量级的 LMM

在这里插入图片描述

二、方法

2.1 ShareGPT4V 数据集构建

数据源:为了丰富数据,作者从检测、分割、text-containing、web、landmark、celebrities 等数据集中抽取了 100k 数据

  • COCO [29] 的 50K 张图像
  • ‘LCS’(即 LAION [48]、CC-3M [50] 和 SBU [41] 的缩写)的 30K 张图像
  • SAM [21] 的 20K 张图像
  • TextCaps [51] 的 500 张图像
  • WikiArt [47] 的 500 张图像
  • 从网络爬取的数据中获取的 1K 张图像

在这里插入图片描述
prompt:

  • 为了确保描述质量和稳定性,作者设计了一个 base prompt,base prompt 的作用是让 GPT-4V 描述图像的基本信息,如图 3 所示

在这里插入图片描述

prompt:

在这里插入图片描述

quality verification:

  • 作者还判断了生成的 caption 的质量
  • 证明了使用高质量、详细的字幕可以显著提升多模态模型在监督微调阶段的表现,从而强调了获取更多高质量数据的重要性。

在这里插入图片描述

2.2 ShareGPT4V-PT 数据生成

为了构建 pretrain 阶段的数据集,作者使用这生成的 100k 个高质量的 caption 微调了一个 caption model,叫做 Share-Captioner,能够生成高质量的内容丰富的描述

数据来源:

  • 预训练的 Share-Captioner 来生成预训练数据集。
  • 该数据集由从现有公开数据集中选择的 1.2M 张图像子集组成
  • 这些图像包括来自 COCO [29] 的 118K 张图像
  • SAM [21] 的 570K 张图像
  • LLaVA-1.5 预训练数据 [30] 的 558K 张图像。

为了收集大量高质量的图像-文本对,我们从现有的公共数据集中选择了120万张图像(更多细节见补充材料),并使用预训练的 Share-Captioner 进行 caption 生成。整个 caption 生成过程大约需要 44 个 A100 GPU天,这部分数据命名为ShareGPT4V-PT。

定性分析:

图 4 对比了不同来源的 caption

在这里插入图片描述

定量分析:作者使用 gpt-4v 和 share-captioner 生成了 100 个 caption,10 个人选择了其各自认为最好的描述

在这里插入图片描述

图7展示了由GPT4-Vision和Share-Captioner生成的字幕中根名词-动词对的可视化。从中可以清楚地看到,Share-Captioner生成的字幕在多样性和语言表达上与GPT4-Vision相当。

在这里插入图片描述

分析了由GPT4-Vision和Share-Captioner生成的字幕的词汇组成,结果如表7所示。分析显示,我们的Share-Captioner生成的字幕包含的信息量与GPT4-Vision生成的字幕相当。

在这里插入图片描述

2.3 ShareGPT4V-7B Model

模型结构借鉴 LLava-1.5,包括三个模块:

  • vision encoder:clip-large model,分辨率为 336x336,patch size=14,输入图像被转换为 576 个 token
  • projector:两层 MLP
  • LLM:vicuna-v1.5

预训练:

  • 数据集:ShareGPT4V 中的 pretrain 数据集,也就是 ShareGPT4V-PT
  • 因为使用了高质量的 caption,只微调 MLP 已经不能很好的开发模型的潜力了(之前的 LMM 模型只微调这部分),所以,作者会同时微调编码器、投影器和大型语言模型,用于让大语言模型理解细致的视觉embedding,嵌入更细节的信息。
  • 此外,作者还发现仅仅微调 vision encoder 的后半部分层也可以达到很好的效果,且训练效率会更高
  • 学习率:2e-5
  • batch size:256
  • steps:4700

微调:

  • 本文的目标不是为了实现 sota 模型,而是为了研究高质量 caption 在实现多模态模型中更好的模态对齐上是不是有效
  • 因此,作者使用 LLava-1.5 中的 665k 微调数据,然后使用 ShareGPT4V 替换了其中一部分。具体的替换是 23k详细描述数据
  • 冻结了视觉编码器,专注于微调投影器和大型语言模型。学习率设定为2e-5,批量大小为128,总优化过程大约持续了5200步。

三、效果

3.1 benchmark

使用了 11 个常见的 benchmark

3.2 定量分析

ShareGPT4V-7B 在 9/11 个数据集中取得了很好的效果

在这里插入图片描述

3.3 多模态对话

在这里插入图片描述

四、一些例子

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

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

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

相关文章

PolygonalSurfaceContourLineInterpolator 多边形交互器

1. 效果: 2.简介: 可以实现在多边形上进行交互,选择;在多边形曲面上实现轮廓点的交互绘制。 该类的使用需要结合 vtkPolygonalSurfacePointPlacer 类,定位点的功能也就是拾取器。 前提:输入的多边形曲面…

华为OD机试 - 两个字符串间的最短路径问题 - 动态规划(Java 2024 D卷 200分)

华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…

485数据采集模块

在工业自动化与智能化的浪潮中,数据采集作为整个系统的基础和核心,其准确性和实时性直接关系到生产效率和产品质量。而485数据采集模块,作为连接现场设备与上位机的重要桥梁,其性能与稳定性对于整个系统的运行至关重要。HiWoo Box…

GAT1399协议分析(8)--批量图像查询

一、请求消息定义 视频图像包含视频片段、 图像、 文件、 人员、 人脸、 机动车、 非机动车、 物品、 场景和视频案事件、 视频图像标签等对象 在消息体中,可以包含其中一种类,加上Data字段即可。 ImageInfo对象 二、请求消息实例 wireshark 抓包实例 请求: 文本化: /V…

Linux网络编程:数据链路层协议

目录 前言: 1.以太网 1.1.以太网帧格式 1.2.MTU(最大传输单元) 1.2.1.IP协议和MTU 1.2.2.UDP协议和MTU 1.2.3.TCP协议和MTU 2.ARP协议(地址解析协议) 2.1.ARP在局域网通信的角色 2.2.ARP报文格式 2.3.ARP报文…

sqli-labs 靶场 less-5、6 第五关和第六关:判断注入点、使用错误函数注入爆库名、updatexml()函数

SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它,我们可以学习如何识别和利用不同类型的SQL注入漏洞,并了解如何修复和防范这些漏洞。Less 5 SQLI DUMB SERIES-5 判断注入点:1. 首先,尝试正常的回显内容&#x…

【精通NIO】NIO介绍

一、什么是NIO NIO,全称为New Input/Output,是Java平台中用于替代传统I/O(Blocking I/O)模型的一个功能强大的I/O API。NIO在Java 1.4版本中被引入,其设计目标是提供一种非阻塞的、低延迟的I/O操作方式,以…

BERT应用——文本间关联性分析

本文结合了自然语言处理(NLP)和深度学习技术,旨在分析一段指定的任务文本中的动词,并进一步探讨这个动词与一系列属性之间的关联性。具体技术路径包括文本的词性标注、语义编码和模型推断。 一、技术思路 NLP和词性标注 在自然…

C语言 | Leetcode C语言题解之第136题只出现一次的数字

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> singleNumbers(vector<int>& nums) {int eor 0;for (int num:nums)eor ^ num;int rightOne eor & (~eor 1); // 提取出最右的1int onlyOne 0;for (int cur : nums) {if ((cur…

Spring Boot中整合Jasypt 使用自定义注解+AOP实现敏感字段的加解密

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

国外高防云服务器全面解析

国外高防云服务器是部署在海外市场&#xff0c;具备高级防护能力的云服务器。它们通常能够抵御大规模的分布式拒绝服务(DDoS)攻击和CC攻击&#xff0c;这类服务器特别适合对网络稳定性和数据安全性有较高要求的业务场景&#xff0c;如游戏行业、外贸电商等。下面将具体分析国外…

idea maven 执行 控制台乱码

这是没加出现的问题 上方案

verilog 232串口通信程序

1,串口通信协议: 通常串口的一次发送或接收由四个部分组成:起始位S、数据位D0~D7(一般为 6 位~8 位之间可变,数据低位在前)、校验位(奇校验、偶检验或不需要校验位)、停止位(通常为1位、1.5位、2位)。停止位必须为逻辑 1。在一次串口通信过程中,数据接收与发送双方…

容器(Docker)安装

centos安装Docker sudo yum remove docker* sudo yum install -y yum-utils#配置docker的yum地址 sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安装指定版本 - 可以根据实际安装版本 sudo yum install -y docke…

c# 下 ScintillaNET 显示XML信息并折叠节点

winform下显示XML信息&#xff08;非WPF&#xff09; 之前使用的是FastColoredTextBox&#xff0c;github地址如下&#xff1a; https://github.com/PavelTorgashov/FastColoredTextBox 但是有个问题&#xff0c;它支持中文&#xff0c;wordwraptrue&#xff0c;自动换行时&…

Vue3+vite部署nginx的二级目录

修改router访问路径 const router createRouter({history: createWebHistory(/mall4pc-bbc/),routes: [XXX,] })配置package.json文件 "build:testTwo": "vite build --mode testing --base/mall4pc-bbc/", 执行打包命令 npm run build:testTwo 打包出…

.NET集成DeveloperSharp操作Redis缓存

&#x1f3c6;作者&#xff1a;科技、互联网行业优质创作者 &#x1f3c6;专注领域&#xff1a;.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 &#x1f3c6;欢迎关注我&#xff08;Net数字智慧化基地&#xff09;&#xff0c;里面…

汇编:数组数据传送

要在32位汇编中实现数组数据的传送&#xff0c;可以使用字符串操作指令 MOVS 以及其前缀 REP&#xff0c;可以高效地复制数组数据。 MOVS 指令是一种字符串操作指令&#xff0c;用于将数据从源地址移动到目标地址。MOVS 指令有不同的变种&#xff0c;可以处理不同大小的数据&a…

每日一题——几行Python实现PAT甲级1065 A+B and C (64bit)(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码点评 时间复杂度分析 空间复杂度分析 总结 改进建议 我要更强 代…

适用于 Windows 11 的 10 款最佳视频转换器:快速转换高质量视频格式

您是否遇到过由于格式不兼容而无法在设备上播放视频或电影的情况&#xff1f;您想随意播放从相机 GoPro 导入的视频&#xff0c;还是以最合适的格式将它们上传到媒体网站&#xff1f;您的房间里有一堆 DVD 光盘&#xff0c;并想将它们转换为数字格式以方便播放?...所有这些问题…