VIGC:自问自答,高质量视觉指令微调数据获取新思路

news2024/11/24 7:55:37

从今年四月份开始,随着MiniGPT-4, LLaVA,
InstructBLIP等多模态大模型项目的开源,大模型的火从NLP领域烧到了计算机视觉及多模态领域。

多模态大模型需要高质量的图文对话数据进行指令微调,而当前多模态指令微调数据多基于纯文本GPT-4构建,其数据质量及多样性相对受限。为此,我们提出了视觉指令生成及修正模型VIGC,可以基于多模态模型自动生成多样性的指令数据,并基于指令修正模块减少幻觉,保证数据质量。这些指令数据加入模型微调,可以进一步提升模型性能。

VIGC能做什么?


图1. VIGC示例:输入图像,模型自动生成相关问题及对应答案

如图所示,用户提供(1)任意图像;(2)所需数据类型,VIGC可以生成该图像对应的问题和答案。相比于当前图文多模态大模型给定图像和问题,获取对应问题的答案,VIGC可以实现自问自答,而这些问答对本身可以作为高质量的指令微调数据,用于多模态大模型的训练,进一步提升模型性能。

VIGC有什么优势?

要回答这个问题,我们首先看一下当前指令微调数据的获取方案。

图2:纯文本GPT-4用于指令微调数据生成

当前获取图文指令微调数据多基于Language-only GPT-4,结合提供的图像、图像相关标注及人工标注问题,由GPT-4来生成对应的答案。这种方式存在两个缺陷:

● 标注成本高: 由于GPT-4无法看到真实图像,需要人工标注对应的图像信息(如图像中的目标类别,定位信息,描述信息)基于跟图像相关的问题。
● 答案质量受限于标注: 一张图像中包含的信息量远远大于标注信息,所以GPT-4在回答问题时,直接依赖于受限的标注信息,容易丢失图像中的细节信息。

相比之下,VIGC通过初始的指令微调数据训练模型,引导模型基于图像自动生成合适的问题及回答。这种方式相比于纯文本GPT-4生成指令微调数据的优势在于:

● 包含更多细节内容: VIGC生成的答案是模型真正看到图像内容进行回答,包含了更多的细节信息;
● 无需额外表述: VIGC能够针对没见过的图像内容依然生成高质量的问答数据,得益于VIGC模型能够通过视觉模型提取到图像的视觉信息,并依赖于后续的语言模型自动生成答案。这里的关键点在于:视觉模型和大语言模型本身就看过海量的图文、纯文本数据,本身集成了大量的知识,VIGC更像是从这些大模型中蒸馏出跟图像相关的知识。

如何训练和使用VIGC?


图3. VIGC框架图。左侧对应VIGC训练流程,右侧对应VIGC推理流程。

01 训练流程

为了获取给定图像,自动生成图文的内容,需构造初始的指令微调数据,包含图像、问题类型,对应图像相关的问题及正确答案。视觉指令生成VIG训练阶段的

● 输入信息: 图像及对应的问题类型(如对话类型、详细描述类型、逻辑推理类型)
● 输出信息: 该类型的问题和答案。

然而仅利用上述的方式,模型在输出详细描述类信息时,经常会出现严重的幻觉问题,这一现象在当前主流多模态大模型中普遍存在,本质上是当训练数据存在某些重复的模式时,生成模型很容易过拟合到这种数据分布。例如在训练图像中,问答对中出现人和桌子的描述时,后续经常会出现椅子的描述。推理阶段,模型会倾向于看到人和桌子,就提及椅子(即便推理图像中没有椅子)。

为此,VIGC通过使用迭代Q-Former的方式及时更新输入到模型的特征信息,让模型在回答问题时结合问题本文关注的内容以及当前已有部分回答,完成后续的回答。所以在训练阶段,我们同时加入视觉指令修正模块VIC,该阶段的:

● 输入信息: 图像、对应问题类型、问题
● 输出信息: 答案

02 推理阶段

为了获取高质量的指令微调数据,推理阶段的流程如下:
a. 给定图像及问题类型,VIG生成对应问题和答案;
b. 将图像及VIG生成问题输入VIC,经Q-Former提取问题相关的图像特征后生成新的答案 ;
c. 将上述答案拆分,将第一句回答和图像、问题再次输入VIC,生成更新后的第二句答案 A2;
d. 整个过程迭代执行,直到模型遇到结束符。

VIGC数据对模型帮助?

基于VIGC生成的数据,重新加入模型训练后,我们发现模型的性能可以进一步提升。

表1. 加入VIGC数据模型性能提升

如上表所示,在基于MMBench的评测上,加入VIGC生成的额外数据,指标可以从24.4%提升至27.5%。在LLaVA评测集上,指标从84.7%提升到87%。

总结

VIGC提出了一种新的多模态指令数据构造方式,可以基于无标注的图像自动生成多样性的高质量数据,且基于生成数据可以进一步提升当前模型的性能,可以作为指令数据获取及模型性能提升的新思路。

VIGC相关资料
论文地址:https://arxiv.org/pdf/2308.12714.pdf
代码:https://github.com/opendatalab/VIGC
Demo:https://opendatalab.github.io/VIGC

VIGC模型已开源,欢迎star!
更多精彩内容,请访问 OpenDataLab:https://opendatalab.org.cn/

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

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

相关文章

【Purple Pi OH RK3566鸿蒙开发板】OpenHarmony音频播放应用,真实体验感爆棚!

本文转载于Purple Pi OH开发爱好者,作者ITMING 。 原文链接:https://bbs.elecfans.com/jishu_2376383_1_1.html 01注意事项 DevEco Studio 4.0 Beta2(Build Version: 4.0.0.400) OpenHarmony SDK API 9 创建工程类型选择Appli…

华为云云耀云服务器L实例评测 | 部署H5 一起来吃月饼游戏

文章目录 前言一、云服务器相对传统服务器有什么优势1.1、可伸缩性(Scalability)1.2、灵活性(Flexibility)1.3、高可用性(High Availability)1.4、备份和恢复(Backup and Recovery)1…

Golang Gorm 创建HOOK

创建的时候,在插入数据之前,想要做一些事情。钩子函数比较简单,就是实现before create的一个方法。 package mainimport ("gorm.io/driver/mysql""gorm.io/gorm" )type Student struct {ID int64Name string gorm:&q…

redis深度历险 千帆竞发 —— 分布式锁

分布式应用进行逻辑处理时经常会遇到并发问题。 比如一个操作要修改用户的状态,修改状态需要先读出用户的状态,在内存里进行修改,改完了再存回去。如果这样的操作同时进行了,就会出现并发问题,因为读取和保存状态这两个…

AUTOSAR-存储基础知识

1、存储基础知识 RAM 又称随机存取存储器,存储单元的内容可以按照需要随机取出或者存入,存取数据比较快。这种存储器在断电时,会丢失其存储内容,所以一般是 CPU运行时会把程序从 ROM 拷贝到 RAM 里面执行。所以一般 RAM 是作为和…

软件测试公式之如何高质量的做BUG分析?

对于BUG分析,测试人员再熟悉不过了。但如果是面对大量的BUG,要如何有效的分析呢?有什么好的方案和行动项?今天聊聊这个话题。 01 BUG分析简单可以分为两类:宏观BUG分析 和 微观BUG分析。 宏观BUG分析:在…

六、线程池的编写与解析 —— TinyWebServer

六、线程池的编写与解析 —— TinyWebServer 一、前言 经过上次数据库连接池的书写,大家也应该明白池的编写。 这里说一下不同点,和一些要注意的点。 为什么使用模板?为什么不用单例模式了?这里的线程池扮演的角色是什么&#x…

【PowerQuery】PowerBI 手动刷新数据内容

PowerBI的手动刷新方式和Excel基本一样,我们通过刷新数据源来实现数据的手动刷新,当然PowerBI 和Excel一样存在着单数据源刷新和全局数据源刷新两个操作。如果希望刷新单个数据源,我们可以在数据字段进行数据的刷新,具体的操作步骤…

阈值回归模型(Threshold Regression Model)及R实现

阈值回归模型是一类回归模型,其中预测变量与结果以阈值依赖的方式相关联。通过引入一个阈值参数(也称为转折点),阈值回归模型提供了一种简单而优雅、可解释的方法来建立结果和预测变量之间某些非线性关系的模型。在生物医学领域中…

Pyramid Scene Parsing Network–CVPR,2017论文解读及其pytorch代码

文章目录 Pyramid Scene Parsing Network--CVPR,2017一、背景介绍二、网络结构和优化方法三、实验结果 Pyramid Scene Parsing Network–CVPR,2017 Github代码链接 一、背景介绍 现阶段随着数据集制作精细化、标签种类变多、具有语义相似标签等导致出…

继承的笔记

继承 对象代表什么, 就得封装对应的数据, 并提供数据对应的行为 对于两种不同的类, 但是具有很多共同的属性的时候我们就想着用继承, 我们可以将共同的属性放置在一个类中, 然后, 只需要新建两个类, 继承共有的类, 然后单独写自己的属性特点 继承类 Java 中提供了一个关键字…

Hadoop-Hbase

1. Hbase安装 1.1 安装zookeeper、 hbase 解压至/opt/soft,并分别改名 配置环境变量并source生效 #ZK export ZOOKEEPER_HOME/opt/soft/zk345 export PATH$ZOOKEEPER_HOME/bin:$PATH #HBASE_HOME export HBASE_HOME/opt/soft/hbase235 export PATH$HBASE_HOME/b…

【OS】操作系统课程笔记 第三章 进程管理

3.1 多道程序设计 吞吐率:衡量一个系统效率的一个指标 采用多道程序设计可以显著提高吞吐率: 但是,并不是内存程序数量越多越好,下面有三点否定: 内存的容量限制了系统可同时处理程序的数目设备数量有限程序道数过多…

✔ ★ 算法基础笔记(Acwing)(三)—— 搜索与图论(17道题)【java版本】

搜索与图论 1. DFS1. 排列数字(3分钟)2. n-皇后问题 2. BFS&#xff08;队列&#xff09;1. 走迷宫二刷总结&#xff08;队列存储一个节点pair<int,int>&#xff09;三刷总结 走过的点标记上距离(既可以记录距离&#xff0c;也可以判断是否走过) ★ ★ 例题2. 八数码二刷…

离线安装PX4日志分析工具Flight Review

使用Flight Review在线分析日志&#xff0c;有时会因为网络原因无法使用 使用离线安装的方式使用Flight Review&#xff0c;可以在无需网络的情况下使用Flight Review sudo apt-get install sqlite3 fftw3 libfftw3-devsudo apt-get install libatlas3-basegit clone --recur…

【Linux核心宝典】Linux 系统目录结构详解 - 01

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

Linux基础入门

一、操作系统安装方法 1、使用u盘安装 工具&#xff08;前提条件&#xff09;&#xff1a; <1>u盘 <2>镜像文件iso/msdn.itellyou.cn <3>把u盘做成PE&#xff1a;大白菜/老毛桃/winPE/软碟通/ultralSO 设置BIOS&#xff1a;通过u盘启动 安装系统&…

Vue项目中实现拖拽排序效果-demo

在Vue3中实现拖拽排序&#xff0c;可以借助一些浏览器自带的API&#xff0c;以及一些Vue3的特性&#xff1a; 使用<template>标签中的v-for指令渲染出一个列表&#xff0c;每个列表项绑定一个draggable属性&#xff0c;使其能够被拖拽。 <template><ul><…

一次I/O操作的过程

什么是IO呢&#xff1f; IO&#xff0c;英文全称是Input/Output&#xff0c;翻译过来就是输入/输出。平时我们听得挺多&#xff0c;就是什么磁盘IO&#xff0c;网络IO。那IO到底是什么呢&#xff1f;是不是有种懵懵懂懂的感觉呀&#xff0c;好像大概知道它是什么&#xff0c;又…

ARIMA模型

1、简介 ARIMA模型(Autoregressive Integrated Moving Average model)&#xff0c;差分整合移动平均自回归模型&#xff0c;又称整合移动平均自回归模型&#xff0c;时间序列预测分析方法之一。ARIMA(p,d,q)中&#xff0c;AR是"自回归"&#xff0c;p为自回归项数;MA…