MiniGPT-4

使用 LLM 增强视觉语言理解
授权协议 BSD 3-Clause
开发语言 Python
所属分类 神经网络/人工智能、 自然语言处理
软件类型 开源软件
地区 不详
投 递 者 伏建修
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

MiniGPT-4 可使用高级大型语言模型增强视觉语言理解。

MiniGPT-4 仅使用一个投影层将来自 BLIP-2 的冻结视觉编码器与冻结 LLM Vicuna 对齐。MiniGPT-4 的训练分两个阶段:

  • 第一个传统预训练阶段使用 4 个 A100 在 10 小时内使用大约 500 万个对齐的图像-文本对进行训练。在第一阶段之后,Vicuna 能够理解图像。但是Vicuna的生成能力受到了很大的影响。为了解决这个问题并提高可用性,开发团队提出了一种通过模型本身和 ChatGPT 一起创建高质量图像文本对的新方法。基于此,随后创建了一个小型(总共 3500 对)但高质量的数据集。
  • 第二个微调阶段在对话模板中对该数据集进行训练,以显着提高其生成可靠性和整体可用性。这个阶段的计算效率很高,使用单个 A100 只需大约 7 分钟。MiniGPT-4 产生了许多新兴的视觉语言功能,类似于 GPT-4 中展示的功能。

在线演示

从以下八个链接中选取一个任务排队较少的 demo 进行聊天。

Link1 / Link2 / Link3 / Link4 / Link5 / Link6 / Link7 / Link8

先上传图像,然后围绕您的图像与 MiniGPT-4 聊天

示例

入门

安装

1.准备代码和环境

Git 克隆我们的存储库,创建一个 python 环境并通过以下命令激活它

git clone https://github.com/Vision-CAIR/MiniGPT-4.git
cd MiniGPT-4
conda env create -f environment.yml
conda activate minigpt4

2.准备预训练的Vicuna权重

当前版本的 MiniGPT-4 建立在 Vicuna-13B 的 v0 版本之上。请参考说明来准备 Vicuna 砝码。最终权重将位于具有以下结构的单个文件夹中:

vicuna_weights
├── config.json
├── generation_config.json
├── pytorch_model.bin.index.json
├── pytorch_model-00001-of-00003.bin
...   

然后,在第 16 行的模型配置文件中设置 vicuna 权重的路径 。

3.准备预训练的MiniGPT-4检查点

要使用官方预训练模型,请在此处下载预训练检查点。

然后,在第 11 行的 eval_configs/minigpt4_eval.yaml 中的评估配置文件中设置预训练检查点的路径。

在本地启动演示

通过运行在本地计算机上试用演示 demo.py

python demo.py --cfg-path eval_configs/minigpt4_eval.yaml  --gpu-id 0

这里默认将 Vicuna 加载为 8 位以节省一些 GPU 内存使用量。此外,默认的波束搜索宽度为 1。

在此设置下,该演示耗费了大约 23G GPU 内存。如果有一个更强大的 GPU 和更大的 GPU 内存,你可以通过在配置文件minigpt4_eval.yaml中将 low_resource 设置为 False ,并使用更大的波束搜索宽度来以 16 位运行模型 。

训练

MiniGPT-4 的训练包含两个对齐阶段。

1. 第一预训练阶段

在第一个预训练阶段,模型使用来自 Laion 和 CC 数据集的图像文本对进行训练,以对齐视觉和语言模型。

要下载和准备数据集,请查看第一阶段数据集准备说明。第一阶段之后,视觉特征被映射,可以被语言模型理解。要启动第一阶段训练,请运行以下命令:(实验中使用 4 个 A100)

可以在配置文件 train_configs/minigpt4_stage1_pretrain.yaml中更改保存路径

torchrun --nproc-per-node NUM_GPU train.py --cfg-path train_configs/minigpt4_stage1_pretrain.yaml

可以在此处下载只有第一阶段训练的 MiniGPT-4 检查点 。

与第二阶段之后的模型相比,这个检查点经常生成不完整和重复的句子。

2. 第二次微调阶段

在第二阶段,使用自己创建的小型高质量图文对数据集,并将其转换为对话格式以进一步对齐 MiniGPT-4。

要下载和准备第二阶段数据集,请查看第二阶段数据集准备说明要启动第二阶段比对,首先在 train_configs/minigpt4_stage1_pretrain.yaml 中指定第 1 阶段训练的检查点文件的路径 ,在此还可以同时指定输出路径。

然后,运行以下命令:(实验中使用 1 个 A100)

torchrun --nproc-per-node NUM_GPU train.py --cfg-path train_configs/minigpt4_stage2_finetune.yaml

在第二阶段对齐之后,MiniGPT-4 能够连贯地和用户友好地谈论图像。

  • 最近MiniGPT4开源了,获得了很多网友好评,在Github上获得了1.6万的star,它相比ChatGPT3.5来说,可以实现图片识别,生成想要的文本效果,理解能力非常强。 论文地址:https://github.com/Vision-CAIR/MiniGPT-4/blob/main/MiniGPT_4.pdf 论文主页:https://minigpt-4.github.io/ 代码地址:ht

  • 不知不觉,距 GPT-4 首次公开问世,已经过去一个月了。 在这段时间,有不少人拿到了 GPT-4 API 权限,开通了 ChatGPT Plus,提前体验了 GPT-4 的能力。 这些人无一例外,都被 GPT-4 强大的逻辑分析、统筹规划能力深深折服。 无论是论文创作、编写代码、还是数据分析,GPT-4 都给出了令人惊艳的表现。 不过,大家可别忘了,GPT-4 作为一个多模态大语言模型,它不仅能

  • 摘要 论文链接:https://arxiv.org/pdf/2304.10592v1.pdf 最近的GPT-4展示了非凡的多模态能力,例如从手写文本直接生成网站和识别图像中的幽默元素。这些特征在以前的视觉语言模型中很少观察到。我们认为,GPT-4具有先进的多模态生成能力的主要原因在于使用了更先进的大型语言模型(LLM)。为研究这一现象,本文提出MiniGPT-4,用一个投影层将冻结的视觉编码器与冻

  • 引言 相比ChatGPT,GPT-4展示出了非凡的多模态能力,它可以利用手写文本生成网站并且还能够识别出图片中的幽默元素。这些优秀的能力在以前的视觉语言模型中很难实现。对于GPT-4惊人的多模态生成能力,其主要原因是使用了更先进的大型语言模型 (LLM)。 地址: https://minigpt-4.github.io/ 背景介绍 近年来,大型语言模型 (LLM) 经历了快速发展。 凭借出色的语言

 相关资料
  • 个人背景 学校情况:211本中九硕,本硕都是计算机科班,但研究方向并不是NLP,而是图表示学习,算是转行成功 论文情况:2A1B均为一作,其中1A(NeurIPS)+1B(ICDM)已发表,另有1A刊在投;除此之外,还有一篇A会撰写中 实习情况:一段快手推荐算法日常实习 一面/技术面 2024/3/28 晚上19:00-20:00 自我介绍 让讲两个拿手的东西,第一个介绍了NeurIPS那篇论文

  • 嗯,圆和椭圆还不错,但如果是带圆角的矩形呢? 我们现在能做到那样了么? 史蒂芬·乔布斯     我们在第三章『图层几何学』中讨论了图层的frame,第二章『寄宿图』则讨论了图层的寄宿图。但是图层不仅仅可以是图片或是颜色的容器;还有一系列内建的特性使得创造美丽优雅的令人深刻的界面元素成为可能。在这一章,我们将会探索一些能够通过使用CALayer属性实现的视觉效果。

  • 本文向大家介绍Prolog语言foldl/4,包括了Prolog语言foldl/4的使用技巧和注意事项,需要的朋友参考一下 示例 阿倍(从左边起)之间是一高阶关系: 具有3个参数的谓词 元素列表 初始状态 最终状态,这是在执行中间状态时将谓词应用于连续元素的结果。 例如:foldl/4用于表示列表中所有元素的总和,使用谓词作为构建块来定义两个元素的总和:            

  • 一:即时输入提示: 我们打开菜单“工具”→“系统配置”,选择“输入”子夹,通过下面2张图的对比,我们可以看到新版易语言将以前的“提供数据类型选择列表”这个选择项修改为“即时输入提示”(如图): 旧版本系统配置对话框 新版本系统配置对话框 通过这个选项,我们可以选择在输入代码的时候是否需要有提示框。 即时输入提示框会在以下几个地方出现: 1:输入代码的时候,(如图): 2:输入返回值类型的时候,(如

  • 在第3章中,我们通过观察感知器来介绍神经网络的基础,感知器是现存最简单的神经网络。感知器的一个历史性的缺点是它不能学习数据中存在的一些非常重要的模式。例如,查看图4-1中绘制的数据点。这相当于非此即彼(XOR)的情况,在这种情况下,决策边界不能是一条直线(也称为线性可分)。在这个例子中,感知器失败了。 在这一章中,我们将探索传统上称为前馈网络的神经网络模型,以及两种前馈神经网络:多层感知器和卷积神

  • 问题内容: Lucene是否提供增强新文档的方法? 例如,假设Lucene文档包含日期字段。是否有可能在用户不以任何方式更改其查询的情况下,以更高的分数展示最新的文档? 我不想诉诸粗略的“按日期排序”解决方案,因为它将完全取消评分算法。 问题答案: 将文档放入索引时,请使用Document.setBoost(float value)。 您可以不断地重新调整现有文档上的值,或者具有随日期增加的浮点值