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

2023-05-16

来源 | 新智元  微信号: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/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 姿态篇:四.非线性最小二乘与飞控传感器校准

    深入浅出多旋翼飞控开发 姿态篇 四 非线性最小二乘与飞控传感器校准 Github 作者 xff1a Sky 前言 搞好了传感器 xff0c 那意味着飞控已经完成了一半 不用猜了 xff0c 这句话正是鄙人说的 飞控的软硬件相关工作 xff0
  • 概述篇:二.多旋翼飞控技术综述

    深入浅出多旋翼飞控开发 概述篇 二 多旋翼飞控技术综述 Github 作者 xff1a Sky 要学习多旋翼飞控 xff0c 第一步得先弄清楚飞控的整体框架和大致工作流程 xff0c 对飞控有了一个整体的认识之后 xff0c 我们再逐步去学
  • 【深入浅出多旋翼飞控开发】系列教程

    针对飞控初学者编写的一系列教程 xff0c 可配合开源飞控项目 xff1a 天穹飞控一起学习 xff0c 效率更高 目录 概述篇 一 多旋翼飞控发展史 二 多旋翼飞控技术综述 预备篇 一 元器件选型及飞控电路设计 二 飞控代码下载与编译 三
  • Cortex-M4和Cortex-M7中的SIMD指令

    SIMD指令简介 单指令多数据流 xff0c 即SIMD xff08 Single Instruction xff0c Multiple Data xff09 指一类能够在单个指令周期内同时处理多个数据元素的指令集 xff0c 利用的是数据
  • 天穹地面站——专为飞控研发而生

    一 简介 天穹地面站是本人为开源飞控项目 天穹飞控专门开发的一个上位机软件 xff0c 针对飞控的研发与调试而设计 一直以来 xff0c 我都为没有一个适合飞控开发的上位机软件而发愁 xff0c 国内大部分爱好者们所使用的相关软件 xff0
  • 预备篇:二.飞控代码下载与编译

    深入浅出多旋翼飞控开发 预备篇 二 飞控代码下载与编译 开源飞控交流 xff1a 562983648 Github 因论坛关闭 xff0c 迁移该文章至博客 系统环境 xff1a WIN7 WIN8 WIN10 编译工具 xff1a Kei
  • 预备篇:一.元器件选型及飞控电路设计

    深入浅出多旋翼飞控开发 预备篇 一 元器件选型及飞控电路设计 Github 要让飞控程序跑起来 xff0c 首先我们得要有一个硬件实体 xff0c 也就是我们的飞控板 说实话 xff0c 飞控电路可以很简单 xff0c 单纯由几个简单的元器
  • 使用VSCode打造APM飞控的编译+烧录+调试一体的终极开发环境

    日期 xff1a 2019 05 08 前言 APM xff08 Ardupilot xff09 和PX4是当今世界上最为流行和活跃的两大开源飞控软件项目 xff0c 它们均在Linux下基于gcc编译工具链开发 xff0c 对于那些习惯与
  • “做好大数据测试,我是认真的!”

    阿里妹导读 xff1a 大数据已然是当下的重要课题 xff0c 大大小小的企业在重视大数据的同时 xff0c 也渐渐重视大数据质量的问题 阿里巴巴测试开发专家小郅 xff0c 今天会分享他对数据测试的系统性思考 文章内容架构清晰 xff0c
  • Docker(一)虚拟机安装Docker

    一 安装Docker 官方镜像 Docker现在的版本分为Docker CE 社区版 和Docker EE 企业版 由于历史版本的原因 在我们安装现在版本Docker的时候 如果之前的Linux已经安装了Docker 那么最好先删除了之后再
  • linux Ubuntu 连不上新Putty 连接出错解决办法

    1 首先检验linux系统是否安装了ssh server 在终端中输入 xff1a ssh localhost 若出现 xff1a ssh connect to host localhost port 22 Connection refus
  • git子仓库管理使用(添加子仓库,删除子仓库,更新子仓库)

    背景 项目中经常使用别人维护的模块 xff0c 在git中使用子模块的功能能够大大提高开发效率 使用子模块后 xff0c 不必负责子模块的维护 xff0c 只需要在必要的时候同步更新子模块即可 例如一个使用了子仓库的代码库 xff0c 如何
  • 串口发送数据,只接收到00的原因之一

    1 环境 xff1a STM32F103RCT6 KEIL 5 2 现象 xff1a 不管我发送任何类型的数据 xff0c 在串口助手上显示接收到的都是00 xff0c 我头很大 xff0c 去网上找了别人的代码对比检查 终于 xff0c
  • Eclipse常用技巧总结

    关于eclipse的使用方面 xff0c 其实有些东西都是小技巧的东西 xff0c 知道了后 xff0c 对编程会带来很大的方便 一 老是使用鼠标操作 xff0c 有的功能要点好多次鼠标 xff0c eclipse都有哪些热键呢 xff1f
  • 新学期flag-适合每个人的专业课

    在果壳上看了各学科入门书籍推荐这个帖子 xff0c 决定自己好好扩展一下自己的眼界 xff0c 开启一个伟大的阅读计划 xff1a 1 师从天才 作者 美 罗伯特 卡尼格尔 出版社 上海科技教育出版社 评语 sunfield推荐 xff08
  • Android指纹识别,看这一篇就够了

    在Android6 0 xff08 Api23 xff09 的时候 xff0c Android系统加入了指纹识别的api接口 xff0c 即FingerprintManager xff0c 定义了最基础的指纹识别接口 不过 xff0c 在A
  • 集成学习——机器学习(周志华)

    集成学习 目录 xff1a 个体和集成BoostingBagging与随机森林 Bagging随机森林 综合策略 平均法投票法学习法 多样性 误差 分歧分解多样性度量多样性增强 内容 xff1a 个体和集成 集成学习是通过构建并结合多个学习
  • 15-[LVI-SAM]分析总结

    2021SC 64 SDUSC LVI SAM分析总结 这是我的LVI SAM代码分析的最后一篇 在这一篇 xff0c 我会做一个总结 xff0c 对我前面的Blog做一个综述 xff0c 分享在分析的过程中 xff0c 我的收获 文章目录
  • Java编程思想个人读后感

    今天又拿起了Java编程思想啃了起来 xff0c 前段时间看了二十来章 xff0c 但感觉心静不下来 xff0c 有许多知识没有消化 xff0c 所以昨天又从第一章开始学起 xff0c 这次也不强加自己一天要学一两章 xff0c 也觉得那样
  • MySQL 数据备份与还原

    转载自 xff1a https www cnblogs com kissdodog p 4174421 html 一 数据备份 1 使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件 表的结构和表中的数

随机推荐