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

news/2024/9/24 12:32:00/

在这里插入图片描述

🎉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.ppmy.cn/news/1512589.html

相关文章

TypeScript学习笔记(二)——TypeScript 高级类型

目录 1. class 类 1.1 class 关键字的基本使用 1.2 类继承 1.3 类成员可见性 1.4 类成员只读修饰符 2. 类型兼容性 2.1 类型兼容性 2.2 接口兼容性 2.3 函数兼容性 3. 交叉类型 4. 泛型 4.1 创建泛型函数 4.2 泛型约束 4.3 多个泛型的类型变量约束 4.4 泛型接口…

搭建内网开发环境(二)|Nexus安装及使用

引言 上一篇教程中按照了 docker 作为容器化工具&#xff0c;在本篇教程中将使用 docker-compose 安装 nexus。 搭建内网开发环境&#xff08;一&#xff09;&#xff5c;基于docker快速部署开发环境 什么是 Nexus Nexus是一个强大的仓库管理器&#xff0c;主要用于搭建和管…

如何将列数据转换为行数据——SQL和EF Core(C#)两种实现方式

文章目录 前言一、使用UNPIVOT将列转换为行1. UNPIVOT的基本语法2. 实际应用场景3. 使用UNPIVOT将列转换为行4. UNPIVOT的注意事项 二、在EF Core中实现列转行1. 创建用于存储转换后数据的模型2. 使用 LINQ 进行数据转换3. 结果示例 总结 前言 在数据处理的过程中&#xff0c;…

墙裂推荐!云上机密计算,阿里云上体验了一下海光内存加密和远程认证

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 机密计算目录 前言1、构…

MySQL范围分区分区表

什么是范围分区分区表&#xff1f; 范围分区是一种根据某个列的范围值来分割表数据的分区方式。在范围分区中&#xff0c;每个分区都有自己的范围条件&#xff0c;当插入数据时&#xff0c;MySQL会根据指定的范围条件将数据分配到相应的分区中。这种分区方式可以使得表的数据按…

【ubuntu24.04】docker安装

安装docker sudo apt install apt-transport-https curlsudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin安装的组件包括:docker-ce:Docker Engine。 docker-ce-cli:用于与 Docker 守护进程通信的命令行工具。 containe…

线上问题原因及处理方案

一、接口请求响应慢 1、将慢请求接口&#xff0c;打印出请求和耗时日志到Kibana日志平台&#xff0c;方便查看 2、利用Pinpoint、Arthas、Scouter等字节码插桩监控工具&#xff0c;对接口进行耗时分析&#xff0c;找出接口调用链路中耗时多的位置进行优化 3、优化的方式主要比…

Epic Games 商店面向欧盟 iPhone 用户上线

Epic Games Store 终于在欧盟推出&#xff0c;为玩家提供了不通过 App Store 就能在 iPhone上访问游戏的途径。在经历了漫长而昂贵的关于支付和竞争对手应用程序店面的法律战&#xff0c;以及公证方面的麻烦之后&#xff0c;Epic Games 成功地为App Store 带来了一个数字店面。…