《深入浅出多模态》(八)多模态经典模型:MiniGPT4

news2024/9/23 5:23:21

在这里插入图片描述

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、资料共享、行业最新动态以、实践教程、求职相关(简历撰写技巧、面经资料与心得)多方面综合学习平台,强烈推荐AI小白及AI爱好者学习,性价比非常高!加入星球➡️点击链接

专栏介绍: 本作者推出全新系列《深入浅出多模态》专栏,具体章节如导图所示(导图后续更新),将分别从各个多模态模型的概念、经典模型、创新点、论文综述、发展方向、数据集等各种角度展开详细介绍,欢迎大家关注。
💙作者主页: GoAI |💚 公众号: GoAI的学习小屋 | 💛交流群: 704932595 |💜个人简介 : 掘金签约作者、百度飞桨PPDE、领航团团长、开源特训营导师、CSDN、阿里云社区人工智能领域博客专家、新星计划计算机视觉方向导师等,专注大数据与AI 知识分享。

💻文章目录

《深入浅出多模态》(一):多模态模型论文最全总结
《深入浅出多模态》(二):多模态任务应用与背景
《深入浅出多模态》(三):多模态任务前言知识
《深入浅出多模态》之多模态经典模型:CLIP
《深入浅出多模态》之多模态经典模型:ALBEF
《深入浅出多模态》之多模态经典模型:BLIP
《深入浅出多模态》之多模态经典模型:BLIP2
《深入浅出多模态》之多模态经典模型:MiniGPT4


👨‍💻导读: 本文为《深入浅出多模态》系列多模态经典模型mini gpt4,首先从整体介绍多模态模型发展,对其模型进行详述,从具体论文、数据集、代码、模型结构、结果等角度分析,本专栏适合从事多模态小白及爱好者学习,欢迎大家关注,如有侵权请联系删除!

多模态模型总结

在这里插入图片描述

✨ MiniGPT-4:多模态大模型的轻量化实践

miniGPT4

论文: :MiniGPT-4: Enhancing Vision-Language Understanding with Advanced Large Language Models

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

miniGPT-v2

论文: :MiniGPT-v2: large language model as a unified interface for vision-language multi-task learning

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

论文相关

目标:使用线性投影层弥合视觉编码器和 LLM 之间的差距。

论文动机:论文认为 GPT4V 的多模态生成能力主要是使用了更先进的 LLM,并针对当前模型生成不连贯的现象,精选一个高质量、对齐良好的数据集,这对增强模型的生成可靠性和整体可用性至关重要。

技术亮点

MiniGPT-4旨在将来自预训练视觉编码器的视觉信息与高级大型语言模型(LLM)对齐。它采用了两阶段训练方法:首先在大规模对齐的图像-文本对集合上进行预训练以获取视觉语言知识;然后在高质量图像文本数据集上进行微调以提高生成可靠性和可用性。

论文提出了一种两阶段训练方法:

1.初始阶段在 大量对齐的图像-文本对 集合上对模型进行 预训练,以获取视觉语言知识。
2.第二阶段用一个 较小但高质量的图像文本 数据集和一个设计好的对话模板对预训练的模型进行 微调,以提高模型的生成可靠性和可用性。。

核心技术

  1. 视觉编码器:使用与BLIP-2相同的ViT骨干及其预训练的Q-Former作为视觉编码器。
  2. 语言解码器:基于LLaMA构建的Vicuna作为语言解码器。
  3. 对齐机制:通过线性投影层弥合视觉编码器和LLM之间的差距。

预训练主要步骤:

MiniGPT整体结构沿用 BLIP-2 框架,使用 BLIP-2 预训练的 VIT 和 Q-Former 模块,并希望通过大量对齐的图像文本对中获取视觉语言知识,即对 LLM 注入线性投影层转换后的视觉软提示,促使其生成相应的真实文本。

  1. 预训练阶段:freeze VIT、Q-Former 和 Vicuna,仅训练线性投影层。使用 Conceptual Caption、SBU 和 LAION 的组合数据集(共约 500w 图文对)来训练 MiniGPT-4。(但该阶段暴露出预训练后的模型存在重复生成、不连贯等问题。)

  2. 图文对齐 SFT 阶段:该阶段认为 LVLM 模型也需要像 LLM 那样增加指令数据微调,使模型生成更为流畅自然的回复。

整体结构:

在这里插入图片描述

第一个预训练阶段

在初始预训练阶段,该模型旨在从大量对齐的图像-文本对中获取视觉语言知识。将注入投影层的输出视为 LLM 的软提示,提示其生成相应的实际真实文本。在整个预训练过程中,预训练的视觉编码器和 LLM 都保持冻结,只有线性投影层被预训练。

在这里插入图片描述

创建高质量数据集

论文精心策划了一个高质量的图像文本数据集,专门为对齐目的量身定制。该数据集随后用于在第二阶段比对过程中微调 MiniGPT-4。

💚 第一阶段样本构造阶段,构造提示( 为线性投影层产出的视觉特征)

初始对齐的图像文本生成 在初始阶段,使用从第一个预训练阶段导出的模型来生成给定图像的综合描述。为了使模型能够产生更详细的图像描述,论文仿照 Vicuna 语言模型的对话格式,使用以下模板中预定义的提示:

###Human: Describe this image in detail.Give as many details as possible.Say everything you see.###Assistant:

注:( 表示由线性投影层产生的视觉特征。)

数据后处理

生成的图像描述仍然有很多噪音且包含错误,如单词或句子的重复,以及不连贯的陈述。为了缓解这些问题,使用 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.

在完成后处理阶段后,手动验证每个图像描述的正确性,以确保其高质量。具体来说,检查每个生成的图像描述是否遵循我们想要的格式,并通过消除 ChatGPT 无法检测到的多余单词或句子来手动细化生成的描述。最后,5000 个图像-文本对中只有大约 3500 个满足论文的要求,这些数据用于第二阶段对齐过程。

通过这一阶段的训练,minigpt4已经能够做一些图片问答、推理等任务,但作者观察到模型有时会有答非所问、"鬼打墙"等现象。因此需要第二阶段的微调。

第二阶段微调

💚第二阶段用精心策划的高质量图像-文本对来微调预训练模型。 从上述样本中的 Conceptual Caption 数据集中随机选取 5000 张图片,使用上述提示和第一阶段预训练好的 MiniGPT-4 生成图片对应详细的描述,随后使用 ChatGPT 对描述中存在的明显噪声和错误进行修改,并将润色后的描述进行人工 review,最终仅有 3500 条图文描述对被使用。

• 最终这 3500 条图文对被用来做 SFT 微调,SFT 阶段提示格式如下 ( 不会被计算 loss):

    ◦ ###Human:  <Img> <ImageFeature> </Img> <Instruction> ###Assistant:
    ◦ <Instruction> : “Describe this image in detail” or “Could you describe the contents of this image for me”

在此提示中, 表示从预定义的指令集中随机采样的指令,其中包含各种形式的指令,如“详细描述此图像”或“您能为我描述此图像的内容吗”。需要注意的是,不会计算此特定文本图像提示的回归损失 。

效果

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

在这里插入图片描述

在这里插入图片描述

学习参考:

MiniGPT-4 知识点汇总

保姆级minigpt4部署教程:

MiniGPT介绍:https://ezcode.blog.csdn.net/article/details/131671271

总结:

本文对MiniGPT-4的论文、模型结构、训练过程进行总结。MiniGPT-4 旨在将来自预训练视觉编码器的视觉信息与高级大型语言模型(LLM)对齐。总体采用和 BLIP-2 相同的架构,使用BLIP-2相同的视觉编码器,即 ViT 骨干 及其预训练的 Q-Former,只不过 LLM 换成 Vicuna(基于 LLaMA)。只对线性层进行训练。而且使用 指令微调 的方法。尽管 MiniGPT-4 论文中没有汇报相关效果,但效果在后来引用论文中的汇报,比 BLIP-2 强上一截,后续文章将继续介绍 MiniGPT-v2、MiniGPTv5等改进模型。

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

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

相关文章

CATIA CAA 二次开发 -- 获取当前会话编辑的CATIPLMComponent

1、先获取当前激活的编辑器 CATFrmEditor* pEditor CATFrmEditor::GetCurrentEditor();if (pEditor nullptr)return S_FALSE; 关于方法【GetCurrentEditor】的解释如下图所示。 2、通过【CATPLMComponentInterfacesServices】去获取当前编辑器的根。 CATPLMComponentInterf…

UE 开发---- Ios ipa 安装包安装到IPhone手机上

由于最近 我在使用ue 开发手机软件 打包成为 Ios ipa 安装包时 安装到手机上遇到的问题 准备&#xff1a; 1、一部 Ios 手机 2、首先下载爱思助手爱思助手官网_苹果助手_苹果刷机助手_苹果越狱助手 (i4.cn) 我下载的Windows端 电脑连接上Ios手机时 是这样的 我们打开工…

【Qt】Qt窗口 | QDialog 对话框

文章目录 一. 对话框二. 对话框的分类1. 非模态对话框2. 模态对话框3. 混合属性对话框 三. 自定义对话框1. 代码实现2. ui文件实现 四. 内置对话框1. QMessageBox 消息对话框2. QColorDialog 颜色对话框3. QFileDialog 文件对话框4. QFontDialog 字体对话框5. QInputDialog 输入…

配置 昇腾 Ascend C/C++ 开发环境

配置 昇腾 Ascend C/C 开发环境 flyfish 这里以Orange Pi Ai Pro 为例 先说如何配置MindStudio&#xff0c;然后再说如何查看Orange Pi Ai Pro的一些信息 Orange Pi AI Pro 开发板是香橙派联合华为精心打造的高性能AI 开发板&#xff0c;其搭载了昇腾 AI 处理器。Linux 桌面…

100行代码实现自己的RAG知识库

背景 由于日常工作需要对接各种第三方合作方&#xff0c;对接过程中的文档繁多、沟通不及时、问题排查繁琐以及工作具有重复性等问题愈发明显。合作方遇到对接问题需要提工单经门户网站–>产品部门接口人–>开发人员问题排查/修复–>产品部门接口人–>合作方收到回…

公链大变局:ETH老态龙钟,SOL势如破竹

今年年初&#xff0c;比特币现货ETF的通过引发了大量资金涌入加密市场&#xff0c;比特币价格一度突破前高&#xff0c;市场一片繁荣。然而&#xff0c;这一波行情却并未如预期般延续到以太坊。相反&#xff0c;在8月初&#xff0c;以太坊&#xff08;ETH&#xff09;价格近乎腰…

C语言基础⑨——指针

一、指针的引入 int —— 4位&#xff1b;float —— 4位&#xff1b;double —— 8位&#xff1b;short —— 2位&#xff1b;long —— 8位&#xff1b; 为函数修改实参提供支撑&#xff1b;为动态内存管理提供支持&#xff1b;为动态数据结构提供支持&#xff1b;为内存访问…

MT6761 快充同步

MT6761 是反激式电源的高性能60V同步整流器。MT6761兼容各种反激转换器类型。支持 DCM、CCM 和准谐振模式。MT6761集成了一个60V功率MOSFET&#xff0c;可以取代肖特基二极管&#xff0c;提高效率。V SW <V TH-ON 时&#xff0c;MT6761内部 MOSFET 导通。V SW >V TH-OFF …

【AI 绘画】模型转换与快速生图(基于diffusers)

AI 绘画- 模型转换与快速生图&#xff08;基于diffusers&#xff09; 1. 本章介绍 本次主要展示一下不同框架内文生图模型转换&#xff0c;以及快速生成图片的方法。 SDXL文生图 2. sdxl_lightning基本原理 模型基本原理介绍如下 利用蒸馏方法获取小参数模型。首先&#x…

三、前后端分离通用权限系统(3)

&#x1f33b;&#x1f33b;目录 一、角色管理1.1、测试 controller 层1.2、整合 Swagger21.2.1、Swagger 介绍1.2.2、集成 knife4j1.2.2.1 添加依赖1.2.2.2 添加 knife4j 配置类1.2.2.3 Controller 层添加注解1.2.2.4、测试 1.3、定义统一返回结果对象1.3.1、定义统一返回结果…

备战秋招60天算法挑战,Day21

题目链接&#xff1a; https://leetcode.cn/problems/number-of-1-bits/ 视频题解&#xff1a; https://www.bilibili.com/video/BV1ir421M7XU/ LeetCode 191.位1的个数 题目描述 编写一个函数&#xff0c;输入是一个无符号整数 &#xff08;以二进制串的形式&#xff09;&am…

C语言 ——— 学习并使用calloc和realloc函数

目录 calloc函数的功能 学习并使用calloc函数​编辑 realloc函数的功能 学习并使用realloc函数​编辑 calloc函数的功能 calloc函数的功能和malloc函数的功能类似&#xff0c;于malloc函数的区别只在于calloc函数会再返回地址之前把申请的空间的每个字节初始化为全0 C语言…

tweens运动详解

linear 线性匀速运动效果Sine.easeIn 正弦曲线的缓动(sin(t))/ 从0开始加速的缓动,也就是先慢后快Sine.easeOut 正弦曲线的缓动(sin(t))/ 减速到0的缓动,也就是先快后慢Sine.easeInOut 正弦曲线的缓动(sin(t))/ 前半段从0开始加速,后半段减速到0的缓动Quad.easeIn 二次…

c语言基础-------指针变量和变量指针

在 C 语言中,“变量指针”和“指针变量”这两个术语虽然经常交替使用,但它们的侧重点有所不同。 指针变量 “指针变量”是指其值为内存地址的变量。指针变量的类型定义了它所指向的数据类型,例如 int * 是一个指向整型数据的指针变量。 以下是一个指针变量的例子: int v…

数据埋点系列 16| 数据可视化高级技巧:从洞察到视觉故事

数据可视化是将复杂数据转化为直观、易懂的视觉表现的艺术和科学。本文将探讨一些高级的数据可视化技巧&#xff0c;帮助您创建更具吸引力和洞察力的数据展示。 目录 1. 高级图表类型1.1 桑基图&#xff08;Sankey Diagram&#xff09;1.2 树状图&#xff08;Treemap&#xf…

3、目标定位(视觉测距)

目标定位的目的&#xff1a;获取物品相对于视觉模块的三维坐标&#xff0c;并将其转换为物品相对于机械臂坐标原点的三维坐标。 要获取物品三维坐标&#xff0c;则首先要测量物品距离摄像头的距离&#xff0c;又因为摄像头安装在机械臂末端上方&#xff0c;所以获取物品相对于摄…

基于springboot的高校学生服务平台的设计与实现--附源码91686

目录 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能分析 …

代码随想录算法训练营第二十天| 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

目录 一、LeetCode 235. 二叉搜索树的最近公共祖先思路&#xff1a;C代码 二、LeetCode 701.二叉搜索树中的插入操作思路C代码 三、LeetCode 450.删除二叉搜索树中的节点思路C代码 总结 一、LeetCode 235. 二叉搜索树的最近公共祖先 题目链接&#xff1a;LeetCode 235. 二叉搜…

C语言:for、while、do-while循环语句

目录 前言 一、while循环 1.1 while语句的执行流程 1.2 while循环的实践 1.3 while循环中的break和continue 1.3.1 break 1.3.2 continue 二、for循环 2.1 语法形式 2.2 for循环的执行流程 2.3 for循环的实践 2.4 for循环中的break和continue 2.4.1 break 2.4.2 …

Java数组03:数组边界、数组的使用

本节内容视频链接&#xff1a;https://www.bilibili.com/video/BV12J41137hu?p55&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5https://www.bilibili.com/video/BV12J41137hu?p55&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.数组边界 数组下标的合法区间[ 0, Len…