【多模态】30、Monkey | 支持大尺寸图像输入的多任务多模态大模型

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 2.1 Enhancing Input Resolution
      • 2.2 Multi-level Description Generation
      • 2.3 Multi-task Training
    • 三、效果
      • 3.1 Image Caption
      • 3.2 General VQA
      • 3.3 Scene Text-centric VQA
      • 3.4 Document-oriented VQA
      • 3.5 消融实验
      • 3.6 可视化

论文:Monkey : Image Resolution and Text Label Are Important Things for Large Multi-modal Models

代码:https://github.com/Yuliang-Liu/Monkey

出处:华中科大

时间:2024.02

贡献:

  • 模型支持大于 1344x896 分辨率的输入,无需预训练。比在大型语言模型(LMMs)中常用的 448x448 分辨率大了很多,能更好的识别和理解小目标或密集目标或密集文本
  • 模型有很好的上下文关联。作者引入了一种多级描述生成的方法,该方法能够提高模型捕捉不同目标之间关系的能力
  • Monkey 模型在多个测评数据集上都有很好的表现。作者在 18 个数据集上进行了测试,Monkey 模型在图像标题生成、常规视觉问题问答、以场景文本为中心的视觉问答、以文档为导向的视觉问答等任务上的表现都很好

在这里插入图片描述

一、背景

LMM 模型能够处理多种不同类型的数据,包括图像、文本、语音等不同模态,对于图像-文本多模态模型,LMM 模型的训练中,图片的分辨率越高,模型能够检测或捕捉到的视觉细节就越丰富,对目标的识别,目标间关系的捕捉,图像中上下文信息的捕捉就更有利,但对于模型来说,很难处理多种不同的分辨率或不同质量的图像,尤其在复杂的场景中更难。

现有的解决方案包括使用具有更大输入分辨率的预训练视觉模块(如LLaVA1.5 [29]),并通过逐渐增加训练过程中的分辨率(如Qwen-VL [3]、PaLI-3 [10]和PaLI-X [9])

但这些方法需要大量的训练资源,并且仍然难以很好的处理更大图像尺寸的图像

为了充分利用大输入分辨率的优势,很重要的一点是图像要有很详细的相关描述,这可以增强模型对图像-文本关系的理解,但是像COYO [6] 和 LAION [45] 通常只有简单的标题,难以满足需求。

Monkey 是什么:一个资源高效的方法,用于提升 LMM 的输入分辨率

  • 一般的方法:直接对 ViT 进行插值来增加输入分辨率,但这样做效率不高
  • Monkey 使用的方法:将大分辨率的输入图片使用滑动窗口切分成小的 patches,每个 patch 独立的输入静态(不训练)的 visual encoder,编码器经过 LoRA(Low-Rank Adaptation)调整,和一个可训练的视觉重采样器增强,增强了其功能。
  • 这种方式利用了现有的大型多模态模型,避免了从头开始进行广泛预训练的需要。通常这些编码器是在较小的分辨率(例如448×448)上训练的,从头开始训练成本很高。通过将每个图像块调整到编码器支持的分辨率,可以维持原有的训练数据分布。
  • 为了更好的利用大分辨率输入,作者还提出了一个自动的多级描述生成的方法,这个方法能够无缝结合多个生成器的简介,来为图片生成高质量、丰富的标题数据,利用的模型如下,作者使用这些模型生成了全面且分层的标题,能够捕捉到广泛的视觉细节:
    • BLIP2:对图像-文本理解很细腻
    • PPOCR:强大的 OCR 识别模型
    • GRIT:擅长粒度化的图像-文本对齐
    • SAM:用于语义对齐的动态模型
    • ChatGPT:有很好的上下文理解和语言生成能力

Vision Transformer (ViT) 使用了 Transformer 架构来处理图像数据。在深度学习中,提升模型处理的图像分辨率通常可以帮助模型捕捉到更细粒度的特征,这在某些任务中可能会提高模型的性能。然而,直接在高分辨率的图像上训练模型会大大增加计算成本和内存需求。

为了解决这个问题,通常会采取以下几种方法之一:

  • 渐进式训练:这种方法首先在低分辨率的图像上训练模型,然后逐步增加图像的分辨率。这样可以在早期阶段以较低的计算成本训练模型,并在模型逐渐适应更高分辨率的图像时增加细节。

  • 插值:在某些情况下,研究人员可能会选择在预训练的模型基础上,对输入图像进行插值以提高其分辨率。这样做的目的是利用模型在低分辨率图像上学到的知识,并通过插值来适应更高分辨率的图像。插值方法可以是最近邻插值、双线性插值、双三次插值等。

  • 多尺度训练:这种方法同时使用不同分辨率的图像来训练模型。模型在从不同分辨率的图像中学习特征时,可以更好地泛化到新的、更高分辨率的图像上。

对于 Vision Transformer (ViT) 而言,由于其结构是将图像分割成多个小块(patch)然后输入到 Transformer 中,因此提升分辨率时需要考虑如何调整这些小块的大小和数量。通过对 ViT 进行插值,可以在不显著改变模型架构的情况下,适应更高分辨率的图像,这是一种相对简单且有效的方法来提升模型处理高分辨率图像的能力。


二、方法

在这里插入图片描述
Monkey 模型的结构如图 2 所示,输入的图片被分成了 patches,这些 patches 将被输入 ViT,ViT 是共享参数的,经过 ViT 后得到特征,随后,局部和全局特征通过共享重采样器和大型语言模型(Large Language Model,简称LLM)进行处理,从而生成所需的答案。

2.1 Enhancing Input Resolution

  • 首先,输入一个图片,HxWx3
  • 接着,使用滑窗来进行切分(滑窗大小为 KaTeX parse error: Undefined control sequence: \time at position 5: H_v \̲t̲i̲m̲e̲ ̲W_v,滑窗大小的宽高也就是 original LMM 所支持的宽高大小),切分成小的图像块儿
  • 然后,将切分后的图像块儿输入共享参数的 encoder,每个 encoder 的输入都是不同的图像块儿,此外,会给每个 encoder 搭配一个 LoRA 来适应每个 encoder 对不同位置的图像块儿的学习,有助于模型深入理解空间和上下文的关系,且没有多余引入参数。为了保证整个输入图像的结构信息,作者将原图还会 resize 到 KaTeX parse error: Undefined control sequence: \time at position 5: H_v \̲t̲i̲m̲e̲ ̲W_v 的大小,所以,作者会将独立的图像块儿和 resize 后的 global image 都经过 encoder 编码
  • 再后,经过 shared resampler ,这里的 resampler 是源于 Flamingo,主要有两个作用,一个是组合所有的 visual information,另一个是捕捉更高级的语义视觉表达,映射到 language feature space。resampler 是通过 cross-attention module 实现的,其中可训练的 embedding 特征是 query,image features 是 key。
  • 最后,将 shared resampler 的输出和文本问题输入一起输入大语言模型 LLM

2.2 Multi-level Description Generation

之前的方法如 LLaVa、QWen-VL 都是使用 LAION 和 COYO 或 CC3M 来训练,但这些数据的文本标签非常简单,缺失了对图像的细致的描述,所以,尽管使用了高分辨率的训练数据,确没有挖掘出图像的更细致的信息

基于此,本文提出了一种生成多层描述的方法,能够生成丰富且高质量的描述,作者使用了多个模型来实现:

  • BLIP2:能够为 image 和 text 的关系提供一个很深入的理解
  • PPOCR:强大的 OCR 识别模型
  • GRIT:擅长粒度化的图像-文本对齐
  • SAM:用于语义对齐的动态模型
  • ChatGPT:有很好的上下文理解和语言生成能力

在这里插入图片描述

整个流程如图 3 所示:

  • 第一步:使用 BLIP2 的 Q-former 来生成 overall caption,同时保留 CC3M 的注释来提供上下文;使用 GRIT 这个 region-to-text 模型,对特定区域、目标生成详细的描述,GRIT 模型能够检测目标同时生成描述, PPOCR 能够从中提取到文本 text 信息;使用 SAM 进行分割,然后使用 BLIP2 来进行描述。
  • 第二步:使用 BLIP2 对 region caption 和 segmentation caption 的结果进行过滤,剔除掉分数匹配较低的 caption
  • 第三步:将 global captions, localized descriptions, text extracts, object details with spatial coordinates 一起送入 ChatGPT 进行微调,让 ChatGPT 生成准确且上下文丰富的图像描述

在这里插入图片描述
在这里插入图片描述

2.3 Multi-task Training

本文模型支持多种不同的任务:

  • image caption: “Generate the captionin English:” for basic captions, “Generate the detailed caption in English:” for more intricate ones
  • 对 image-based 问题的回答: “{question} Answer: {answer}.”
  • 同时处理 text 和 image

本文使用的数据集:

在这里插入图片描述

三、效果

模型实现细节:

  • 作者使用 Vit-BigG [21] 和 LLM from QwenVL [3] 分别作为预训练好的多模态模型来使用
  • 由于 vision encoder 已经训练的很好了,所以作者只做了 instruction-tuning。在 instruction-tuning 时,滑窗的宽高都使用的 448x448 来匹配 Qwen-VL 的 encoder 尺寸
  • 对于所有图像块儿,作者使用的是 resampler 是一样的。可学习的查询 query 与图像的局部特征(patches)进行交互,用于提取重要信息。对于每个 patch,都使用相同的 256 维可学习 query。这些 query 是模型中的参数,可以通过训练来优化。
  • 由于训练时间有限,主要实验使用的是896×896像素大小的图像
  • 对于 LoRA:LoRA 是模型的一部分,用于调整模型的注意力机制和多层感知机(MLP)。在这里,注意力模块的秩设置为16,编码器中MLP的秩设置为32。秩在这里指的是LoRA中用于调整权重的参数数量,它影响模型的复杂度和能力。
  • 模型参数:Monkey 总参数量 9.8B(98亿)
    • 大型语言模型:包含 7.7B(Billion)参数。
    • 重采样模块:包含 0.09B(Million)参数。
    • 编码器:包含 1.9B(Billion)参数。
    • LoRA:包含 0.117B(Billion)参数。

训练细节:

  • 数据:使用 CC3M 数据集中的数据,使用本文方法生成了描述,共 427k image-text pairs
  • 优化器:AdamW
  • 学习率:1e-5,cosine 学习率下降模式
  • batch size:1024
  • 训练时长:40 A800 天 / epoch

3.1 Image Caption

作者使用 Flickr30K 和 TextCaps 作者 benchmark 来测试这个任务

在这里插入图片描述

3.2 General VQA

General visual question answering (VQA)

在这里插入图片描述

3.3 Scene Text-centric VQA

在这里插入图片描述

3.4 Document-oriented VQA

在这里插入图片描述

3.5 消融实验

在这里插入图片描述

在这里插入图片描述

3.6 可视化

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

和其他模型的对比:

在这里插入图片描述
在这里插入图片描述

不同分辨率下识别的效果对比:分辨率越小,错误越多

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

maven找不到依赖,in offline mode

问题描述: [ERROR] Plugin org.jetbrains.kotlin:kotlin-maven-plugin:1.2.71 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.jetbrains.kotlin:kotlin-maven-plugin:jar:1.2.71: Cannot access aliyunmaven (ht…

硅胶可以镭射吗?

在科技发展的今天,我们经常会遇到各种各样的材料,其中就有一种叫做硅胶的材料。那么,硅胶可以镭射吗?答案是肯定的,硅胶不仅可以镭射,而且在某些应用中,它的镭射特性还非常突出。 首先&#xff…

IT技术产品:开发者极为重要的思维习惯

1、特色内容预告 1、我用敏捷开发思维,提高工作效率。 2、我用代码批判思维,逐渐让自己的作品变得无可挑剔。 3、我是一个顶级程序员,是哪些重要的专业习惯,让我如此优秀? 2、可以免费获取到的IT资源 1、《软件工程&a…

【35分钟掌握金融风控策略26】定价策略

目录 定价策略 定价策略的开发、部署、监控和调优 定价策略开发 定价策略部署 定价策略监控 定价策略调优 定价策略 定价是对授信审批通过的客户给予合适利率的过程。如何定价、定价多少是由定价策略来决定的。定价策略的制订要遵循“收益覆盖风险”原则,对于…

暗黑4可以搬砖吗?暗黑4怎么搬砖 搬砖攻略

暗黑4可以搬砖吗?暗黑4怎么搬砖 搬砖攻略 暗黑破坏神4属于是暴雪旗下一款经典游戏IP,在全世界有着广泛的玩家群体,更是在今年暴雪国服宣布回归之后,吸引了一大批新玩家加入。今天小编就为大家带来暗黑4的详细搬砖教程。 现在我们…

【工作篇】软件工程师的知识基础(持续更新)

目录 1. linux 知识篇 1. linux 知识篇 1. Linux API 是什么 Linux API 是指 Linux 操作系统 提供的应用程序接口,用于与操作系统进行交互。它包含了一系列的函数、系统调用、库函数和数据结构,用于实现各种系统级的操作,如文件操作、进程…

“打工搬砖记”中首页的功能实现(一)

文章目录 打工搬砖记秒薪的计算文字弹出动画根据时间数字变化小结 打工搬砖记 先来一个小程序首页预览图,首页较为复杂的也就是“秒薪”以及弹出文字的动画。 已上线小程序“打工人搬砖记”,进行预览观看。 秒薪的计算 秒薪计算公式:秒薪 …

umi搭建react项目

UMI 是一个基于 React 的可扩展企业级前端应用框架,提供路由、状态管理、构建和部署等功能,可以帮助开发者快速构建复杂的单页面应用(SPA)和多页面应用(MPA)。它与 React 的关系是,UMI 构建在 R…

linux系统修改网卡名称

说明: 因操作过程需要停用网卡,导致ssh远程连接不上,需要控制台登录操作。 测试环境: CentOS7.9、8.2虚拟机 Suse15 SP4虚拟机 操作步骤: 方法一: 1、 查看网卡当前名称及状态 ip a2、 将网卡状态从启用…

PHP黑魔法之md5绕过

php本身是一种弱语言,这个特性决定了它的两个特点: 输入的参数都是当作字符串处理变量类型不需要声明,大部分时候都是通过函数进行类型转化php中的判断有两种: 松散比较:只需要值相同即可,类型不必相同,不通类型比较会先转化为同类型,比如全数字字符串和数字比较,会比…

在线音乐系统

文章目录 在线音乐系统一、项目演示二、项目介绍三、部分功能截图四、部分代码展示五、底部获取项目(9.9¥带走) 在线音乐系统 一、项目演示 音乐网站 二、项目介绍 基于springbootvue的前后端分离在线音乐系统 登录角色 : 用户、管理员 用…

曲线救国:window 安装 docker

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

bugfix:遇见“隐形字符”:ⅰ与i的编码迷局

前言 在软件开发的世界里,遇到各种奇奇怪怪的bug是在所难免的。今天,我就遭遇了一个看似简单实则棘手的问题——用户反馈账号无法登录,系统一直提示“账号不存在”。一番抽丝剥茧后,我发现问题竟然出在一个不起眼的字符上&#x…

【C++程序员的自我修炼】简单实现 string 库的常用接口函数

天接云涛连晓雾 星河欲转千帆舞 目录 string 类环境的搭建 实现 c_str() 函数 实现 size() 函数 重载运算符operator[] 实现简单迭代器 begin()、end() 实现 reserve() 函数 实现 push_back() 函数 实现 append() 函数 重载运算符operator 实现 insert() 函数 实现 erase() 函…

【RAG 论文】UPR:使用 LLM 来做检索后的 re-rank

论文:Improving Passage Retrieval with Zero-Shot Question Generation ⭐⭐⭐⭐ EMNLP 2022, arXiv:2204.07496 Code: github.com/DevSinghSachan/unsupervised-passage-reranking 论文:Open-source Large Language Models are Strong Zero-shot Query…

【大数据·hadoop】在hdfs上运行shell基本常用命令

一、准备工作 1.1格式化并启动Hadoop服务 参见Hadoop在ubuntu虚拟机上的伪分布式部署|保姆级教程的4.7节 二、HDFS常用命令 接着,就愉快地在刚刚的命令行里敲命令啦 1.显示hdfs目录结构 hadoop fs -ls -R /hadoop fs: 这是Hadoop文件系统命令行的一部分&#x…

【LeetCode刷题】136.只出现一次的数字(Ⅰ)

【LeetCode刷题】136.只出现一次的数字(Ⅰ) 1. 题目:2.思路分析:思路1:一眼异或! 1. 题目: 2.思路分析: 思路1:一眼异或! 看到题目,如果有一定基…

第十六篇:数据库性能优化:从基础到高级的全面指南

数据库性能优化:从基础到高级的全面指南 1. 引言 在数字化的浪潮中,数据库作为信息系统的核心组件,其性能的优劣直接关系到企业的运营效率和市场竞争力。数据库性能优化不仅是一项技术挑战,更是一项战略任务。它要求我们深入理解…

“等保测评实施策略:保障企业信息安全合规“

等保测评,即网络安全等级保护测评,是企业保障信息安全合规的重要实施策略。以下是企业实施等保测评的一些关键策略: 理解等保测评的重要性: 等保测评有助于企业识别和评价信息系统的安全性能,提供改进建议,…

iOS--底层学习--GCD的简单认识

iOS--底层学习--GCD的简单认识 前言什么是GCDGCD的优点GCD中的任务和队列任务队列 GCD的使用队列的创建和获取任务的创建队列嵌套任务和队列中的一些要点 GCD线程间的通信从后台线程切换到主线程通过队列传递数据使用Dispatch Group进行线程间协调 GCD的方法dispatch_barrier_a…