GPT-4开源平替miniGPT-4来了,仅需23G显存单机可run,附论文、项目代码地址

news2024/11/24 8:45:56

来源 | 新智元  微信号:AI-era

先是ChatGPT的发布给世界带来了一点小小的NLP震撼,随后发布的GPT-4更是破圈计算机视觉,展现了非凡的多模态能力。

不光能读懂人类的梗,给个手绘草图甚至可以直接写出网站的代码,彻底颠覆了对语言模型、视觉模型能力边界的认知。

GPT-4:图里的这个「Lighting充电线」,看起来就是个又大又过气的VGA接口,插在这个又小又现代的智能手机上,反差强烈。

不过像GPT-4这么好的模型,CloseAI选择闭源,让广大AI从业者实在是又爱又恨。

最近,来自沙特阿拉伯阿卜杜拉国王科技大学的研究团队开源了GPT-4的平民版MiniGPT-4,从效果上看已经基本具备GPT-4所展现出的多个功能,包括手写网页示意图生成代码、解读图像中的梗等。

论文链接:https://github.com/Vision-CAIR/MiniGPT-4/blob/main/MiniGPT_4.pdf

项目链接:https://minigpt-4.github.io/

代码链接:https://github.com/Vision-CAIR/MiniGPT-4

想要本地部署,一行代码即可搞定!

python demo.py --cfg-path eval_configs/minigpt4_eval.yaml

默认加载选项为8bit Vicuna模型以节省GPU内存,beam search的宽度为1,大约需要23G显存。

为了实现有效的MiniGPT-4,研究人员提出了一个两阶段的训练方法,先在大量对齐的图像-文本对上对模型进行预训练以获得视觉语言知识,然后用一个较小但高质量的图像-文本数据集和一个设计好的对话模板对预训练的模型进行微调,以提高模型生成的可靠性和可用性。

文中的研究结果表明,MiniGPT-4具有许多与 GPT-4类似的能力,如通过手写草稿生成详细的图像描述和创建网站;还可以观察到 MiniGPT-4的其他新功能,包括根据给定的图像创作故事和诗歌,为图像中显示的问题提供解决方案,教用户如何根据食物照片烹饪等。

论文作者朱德尧来自泉州,目前是阿卜杜拉国王科技大学(KAUST)的博士生,主要研究方向包括多模态大语言模型、预测模型和强化学习。

论文共同一作Jun Chen目前是阿卜杜拉国王科技大学 Vision-CAIR 研究小组的博士生,主要研究方向为多模态学习、自监督学习和大规模预训练模型。

MiniGPT-4模型架构

研究人员认为,「GPT-4强大的多模态生成能力主要来自于更强的语言模型」。

为了验证这点,研究人员选择固定住语言模型和视觉模型的参数,然后只用投影层将二者对齐:MiniGPT-4的语言解码器使用Vicuna(基于LLaMA构建),视觉感知部分使用与BLIP-2相同的视觉编码器。

1. 预训练阶段

为了从大量对齐的图像-文本对中获取视觉-语言知识,研究人员把注入投影层的输出看作是对语言模型的软提示(soft prompt),促使它生成相应的ground-truth文本;并且预训练的视觉编码器和视觉编码器在预训练阶段始终保持参数不变,只训练线性投影层。

训练数据集包括Conceptual Caption, SBU和LAION,使用4张A100(共80GB显存) GPU以256的batch size训练了20000步,覆盖了大约500万个图像-文本对。

虽然在预训练后,MiniGPT-4已经展现了丰富的知识,并能够对人类的query提供合理的回复。

不过还是可以观察到MiniGPT-4仍然很难生成连贯的语言输出,比如经常会生成重复的词或句子、零散的句子或不相关的内容,这些问题也阻碍了MiniGPT-4与人类进行流畅的视觉对话的能力。

还可以注意到GPT-3也存在类似的问题:即便在大量的语言数据集上进行了预训练,GPT-3还是不能直接生成符合用户意图的语言输出;但通过指令微调和从人类反馈中进行强化学习的过程后,GPT-3就成功蜕变为了GPT-3.5,并能够生成对人类更友好的输出。

所以只对MiniGPT-4进行预训练是不够的。

2. 高质量的视觉-语言对齐数据集

虽然在自然语言处理领域,指令微调数据集和对话相关数据集很容易获得,但对于视觉语言领域来说,并不存在对应的数据集,所以为了让MiniGPT-4在生成文本时更自然、更有用,还需要设计一个高质量的、对齐的图像-文本数据集。

在初始阶段,使用预训练后得到的模型来生成对给定图像的描述,为了使模型能够生成更详细的图像描述,研究人员还设计了一个符合Vicuna语言模型的对话格式的提示符。

###Human: <Img><ImageFeature></Img> Describe this image in detail. Give as many details as possible. Say everything you see. ###Assistant:

其中<ImageFeature>表示线性投影层生成的视觉特征,如果生成的描述不足80个tokens,就添加额外的提示符「#Human:Continue#Assistant:」继续生成。

最后从Conceptual Caption中随机选择了5000幅图像,并生成对应的描述。

数据后处理

目前生成的图像描述仍然包含许多噪音和错误,如重复的单词、不连贯的句子等,研究人员使用ChatGPT来完善描述。

Fix the error in the given paragraph. Remove any repeating sentences, meaningless characters, not English sentences, and so on. Remove unnecessary repetition. Rewrite any incomplete sentences. Return directly the results without explanation. Return directly the input paragraph if it is already correct without explanation.

修正给定段落中的错误。删除重复的句子、无意义的字符、不是英语的句子等等。删除不必要的重复。重写不完整的句子。直接返回结果,无需解释。如果输入的段落已经正确,则直接返回,无需解释。

最后为了保证数据质量,手动验证每个图像描述的正确性,并得到了3500个图像-文本对。

3. 微调阶段

研究人员使用预定义的模板提示来优化预训练模型。

###Human: <Img><ImageFeature></Img> <Instruction> ###Assistant

其中<Instruction>表示从预定义指令集中随机抽样的指令,包含各种形式的指令,例如「详细描述此图像」或「您能为我描述此图像的内容吗」等。

需要注意的是,微调阶段没有计算特定文本-图像提示的回归损失,所以可以生成更自然、可靠的回复。

MiniGPT-4的微调过程非常高效,batch size为12的话,只需要400个训练步,使用单个A100 GPU训练7分钟即可。

示例

MiniGPT-4表现出了与GPT-4类似的多模态能力。

给一张图片,可以让模型生成非常详细的图像描述。

识别图像中的梗,比如解释「一到周一,人就像图里的小狗一样,一周中最令人恐惧的一天」。

还可以发现图像中不寻常的内容,比如「狼和小羊在同一片草地」。

还可以根据手绘图生成一个网站的代码。

MiniGPT-4还可以识别图像中的问题并提供解决方案,比如「洗衣机冒出了大量泡泡」是因为过载等原因,可以检查洗衣液是不是放多了、清理一下排水管或是看看洗衣机是不是坏了。

创作以图像为主题的诗歌或说唱歌曲。

编写图像背后的故事。

为图像中的产品写广告词。

甚至还可以知道换头表情包里的人是Tesla和Space X的CEO马斯克。

提供一些有深度的图像评论。

检索与图像相关的事实,比如给个《教父》的截图就可以让模型检索到对应的电影信息。

甚至给个食物的照片,可以让模型输出一份菜谱。

更多强大的功能等你解锁!

参考资料:

https://minigpt-4.github.io/

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

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

相关文章

百度地图 TypeError: Cannot set properties of undefined (setting ‘Bm‘)

这类问题出现的原因一般是&#xff0c;页面还没有加载完&#xff0c;地图开始加载&#xff0c;或者地图加载在页面加载之前 在项目中&#xff0c;我用isMapLoading控制地图的加载&#xff0c;false–加载&#xff0c;true–不加载&#xff0c;在data()中设置isMapLoadingtrue

矩阵的秩的计算

definition 1 矩阵的秩 矩阵的列空间的维度 矩阵的零空间的秩 矩阵的自由变量的个数 n - r(A) definition 2 这两个证明很好证 第三个证明可以用零空间的秩 example 1 hyperlink

HTTPS建立连接原理、SSL工作原理

HTTPS与HTTP相比有什么区别&#xff1f; HTTPS保证安全的原理是什么&#xff1f; HTTPS是如何建立连接的&#xff1f; 巨人的肩膀 3.1 HTTP 常见面试题 | 小林coding HTTP与HTTPS的区别 HTTP是超文本传输协议&#xff0c;传输的内容是明文(HTTP1.1及之前版本)。HTTPS在TCP与HT…

【LeetCode】27. 移除元素

题目链接&#xff1a;https://leetcode.cn/problems/remove-element/ &#x1f4d5;题目要求&#xff1a; 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;…

【原创】生成文件MD5图像,类似于GitHub的像素风格头像

前言 我想通过文件的md5生成关于这个md5的图像&#xff0c;类似于GitHub的随机像素头像&#xff0c;用处是让这个md5更加直观&#xff0c;也能用于生成各种用户头像&#xff0c;跟GitHub一样。 网上搜了一下&#xff0c;没有现成的方法&#xff0c;只能有一篇类似的文章可以借…

第N2周:中文文本分类-Pytorch实现

目录 一、前言二、准备工作三、数据预处理1.加载数据2.构建词典3.生成数据批次和迭代器 三、模型构建1. 搭建模型2. 初始化模型3. 定义训练与评估函数 四、训练模型1. 拆分数据集并运行模型 一、前言 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 …

运算符重载----赋值运算符重载

运算符重载 本质是函数调用&#xff0c;内置类型编译器直接比&#xff0c;自定义就去找对应类内重载的函数 如果定义在类外&#xff0c;需要访问私有的成员函数&#xff0c;只能将成员函数权限变为Public或者友元&#xff08;非必须不用&#xff09; &#xff0c;所以一般重载…

Linux程序设计之字节序转换

1.在网络通信中&#xff0c;数据的存储方式十分重要&#xff0c;因为它影响到数据的准确性。如今&#xff0c;电脑和网络上数据的存储方式有两种&#xff1a;大端模式和小端模式。大端模式&#xff1a;数据的高位存储在内存的低位&#xff0c;数据的低位存储在内存的高位。小端…

【keil5开发ARM工程时使用STLink调试的技巧分享】

ARM工程开发小技巧系列文章 St link V2驱动安装方法 文章目录 ARM工程开发小技巧系列文章前言一、准备工作1. 硬件连接2. 安装stlink的驱动3. Keil 5配置 二、调试示例1.进入调试状态2. 调试演示2.1 复位&#xff0c;使程序复位到初始位置2.2 单步调试2.3 逐步调试2.4 跳出调…

Quartus中的逻辑锁定与增量编译

逻辑锁定功能可以将FPGA中的代码模块在固定区域实现&#xff0c;优化时序性能&#xff0c;提升设计可靠性。增量编译功能&#xff0c;可以使设计更快速时序收敛&#xff0c;加快编译速度。 LogicLock 使用Chip Planner创建逻辑锁定区域 打开Chip Planner&#xff0c;点击Vie…

Kubernetes Controller原理讲解

Controller原理 在 K8s 中&#xff0c;用户通过声明式 API 定义资源的“预期状态”&#xff0c;Controller 则负责监视资源的实际状态&#xff0c;当资源的实际状态和“预期状态”不一致时&#xff0c;Controller 则对系统进行必要的更改&#xff0c;以确保两者一致&#xff0…

人群计数数据集汇总和详细介绍,全网最全,crowd counting datasets

Crowd Counting数据集汇总 视频监控video surveillance https://github.com/gjy3035/Awesome-Crowd-Counting/blob/master/src/Datasets.md进展 | 密集人群分布检测与计数 :https://www.sohu.com/a/338406719_823210 Free-view 2022_Pedestrian Attribute Recognition htt…

vue+element Ui 树型组件tree懒加载+搜索框远程请求数据为平铺类型

本人之前一直是耕耘后台研发&#xff0c;最近接了个小需求需要接触到vue&#xff0c;记录一下我遇到的一些前端解决时间长的问题 需求&#xff1a; 1&#xff1a;每次动态请求接口获取下一节点数据 2&#xff1a;接口返回的数据是list&#xff0c;不带子节点&#xff0c;用pid来…

Scala中使用Typesafe Config 库

Typesafe Config 库 在 Scala 中加载配置文件有很多种方法&#xff0c;其中一种常用的方法是使用 Typesafe Config 库。该库提供了一种简单易用的方式来读取和解析配置文件。 以下是在启动 main 方法后加载配置文件的示例代码&#xff1a; 引入 Typesafe Config 库 import c…

【MySQL】函数

一、概述 MySQL中提供了大量函数来简化用户对数据库的操作&#xff0c;比如字符串的处理、日期的运算、数值的运算等等。使用函数可以大大提高SELECT语句操作数据库的能力&#xff0c;同时也给数据的转换和处理提供了方便。 &#xff08;在sql中使用函数&#xff09;函数只是对…

shadowsocks服务端和客户端搭建

shadowsocks服务端和客户端搭建 一、服务端搭建 买个境外云服务器&#xff0c;搭建shadowsocks服务端。 需要python3环境。 1.下载shadowsocks服务端python包&#xff0c;并启动。下载地址 # 1.下载 [rootiZrj982e4r5hkd053zsnmqZ ~]# wget https://pypi.python.org/packa…

2023隐私计算与人工智能峰会成功举办!数据宝演讲实录(上篇)分享

2023年4月8日&#xff0c;2023隐私计算与人工智能峰会在深圳举办&#xff0c;大会由华东江苏大数据交易中心和热点资讯联合主办&#xff0c;会上&#xff0c;数据宝董事詹臻女士做开幕式致辞。 数据宝与开放群岛&#xff08;Open Islands&#xff09;进行战略签约&#xff0c;…

LoRA: 大语言模型个性化的最佳实践

出品人&#xff1a; Towhee 技术团队 大型语言模型&#xff08;LLM&#xff09;在今年获得了极大的关注。在以往&#xff0c;预训练微调&#xff08;finetuning&#xff09;成为了让模型适配于特定数据的最佳范式。然而随着大型模型的出现&#xff0c;这种完全微调&#xff08;…

【运动规划算法项目实战】如何实现机器人多目标点导航

文章目录 前言一、 什么是actionlib?二、实现流程三、总结前言 在ROS机器人应用中,实现机器人多目标点导航是非常常见的需求。本文将介绍如何使用ROS和actionlib来实现机器人的多目标点导航,目标点信息将被记录在YAML文件中。 我们可以通过使用MoveBaseAction来实现机器人…

高并发场景下JVM调优实践

一、背景 2021年2月&#xff0c;收到反馈&#xff0c;视频APP某核心接口高峰期响应慢&#xff0c;影响用户体验。 通过监控发现&#xff0c;接口响应慢主要是P99耗时高引起的&#xff0c;怀疑与该服务的GC有关&#xff0c;该服务典型的一个实例GC表现如下图&#xff1a; 可以…