【多模态】43、INF-LLAVA | 使用双视角裁剪和双视角增强模块来提升模型对大分辨率图片的处理能力

news2024/11/16 3:41:57

在这里插入图片描述

论文:INF-LLaVA: Dual-perspective Perception for High-Resolution Multimodal

代码:https://github.com/WeihuangLin/INF-LLaVA

出处:厦大

时间:2024.07.23

贡献:

  • 提出了双视角裁剪模块(Dual-perspective Cropping Module),在进行大分辨率图像切分的时候同时考虑全局和局部切分,能够保留细节信息的同时保留纹理信息
  • 提出了双视角增强模块(Dual-perspective Enhancement Module),能够又快又好的融合全局和局部的特征,提升模型效果

一、背景

大分辨率的图像能够更好的保持图像细节,减少模型幻觉,对细粒度感知任务很重要,但大分辨率图像意味着更多的图像 token,增加处理时间和复杂度,所以,如何实现对分辨率和资源限制的平衡对多模态模型是很重要的。

为了解决上述矛盾,现有的方法一般使用两种方式:

  • cropping-based 方式:由于预训练的 ViT 模型都是低分辨率的,且计算量和分辨率呈平方关系,所以 Internlmxcomposer2-4khd、Monkey、Sphinx、 Llava-uhd 都将大分辨率图像切分成小图,然后使用 ViT 对小图进行编码。
  • dual-encoder 方式:上面切割的方式会丢失不同小图之间的关联,但是理解不同目标之间的关系对模型来说是很重要的,LLava-HR、 Mini-gemini 提出了 dual-encoder 的方法,使用预训练的 ConvNeXt 来编码高分辨率的图,如图 1b。但这种方法需要额外的预训练模型和编码,会提升耗时。

在这里插入图片描述

本文提出的 INF-LLaVA 是一个又好又快的模型,如图 1c 所示:

  • 作者引入了Dualperspective Cropping Module (DCM),能够同时从 local 和 global 两个角度来进行高分辨率图像的切分
    • local 切分:直接将大图切分成小图,保持细节和内容连续性不变
    • global 切分:将相邻的像素分配到不同的子图中,每个子图都包含全局信息,但会丢失部分细节信息
    • 这种双切分方式能够在 cropping 阶段同时保留细节和全局信息
  • 作者引入了Dual-perspective Enhancement Module (DEM) ,能够促进 local 和 global 信息的交互
    • 一般的通用方法是使用 cross-attention 来直接融合两种特征,但高分辨率的特征在进行平方次的计算的话容易导致 out-of-memory 问题。因此,本文使用了一个资源高效的策略,即将这些子图像特征基于二维先验(例如空间位置)重新拼接回原始图像的形状,然后从局部视角重新裁剪成多个子图像,这些新生成的子图像与对应的原始局部视角子图像进行匹配

高分辨率多模态模型的现状:

  • 高分辨率图像为多模态大语言模型(MLLMs)提供了显著的优势,因为它们能够捕捉图像中详细的物体信息和复杂的物体间关系。然而,直接将高分辨率图像输入到视觉编码器中会导致难以承受的计算开销,这主要是由于Transformer架构[92]所涉及的二次复杂性以及视觉标记数量的大幅增加。为了缓解这一问题,现有的高分辨率MLLMs可以分为两种主要类型:基于裁剪的方法和双编码器方法,如图1(a)和图1(b)所示。

  • 基于裁剪的方法[24, 51, 53, 99] 将图像划分为多个不重叠的块,并分别将每个块输入到视觉编码器,从而获取局部区域的视觉特征。为了确保每个块保持接近1:1的纵横比,LLaVA-UHD [96] 在裁剪操作期间引入了各种块策略。此外,为了单独建模每个块的信息,Monkey [49] 使用LoRA [35] 对视觉编码器进行微调,以适应每个特定块。尽管这些方法有其优点,但通过将完整图像分割成独立子图像,会破坏图像信息的全局连贯性。因此,一些研究人员提出了双编码器方法来保持全局信息的完整性。

  • 双编码器方法 利用辅助视觉编码器来增强高分辨率图像理解,而不会显著增加视觉标记数量。例如,Vary [94] 和 Deepseek-VL [60] 在高分辨率视觉编码器中使用Segment Anything Model (SAM) [40] 来更好地捕捉高分辨率信息。同时,MiniGemini [47] 和 LLaVA-HR [64] 使用在大规模LAION-2B数据集[80]上预训练的ConvNeXt [57] 来增强Vision Transformer (ViT) 提取的视觉特征。然而,双编码器方法需要额外预训练的视觉编码器来处理高分辨率图像。无论是SAM,在SA-1B数据集上预训练,还是ConvNeXt,在LAION-2B数据集上预训练,都需要大量计算资源,总计数万GPU小时,这可能会成本过高。

  • 本文INF-LLaVA,是一个通过整合创新的双视角裁剪模块和新的双视角增强模块来解决这些挑战的新框架。我们的方法不仅确保了计算资源的效率,还全面捕捉了局部和全局图像细节,从而提升了高分辨率MLLMs 的能力。

二、方法

INF-LLaVA 的框架如图 2 所示

在这里插入图片描述

第一步:双视角切分模块 DCM,其中 loc 和 global 分别表示局部和全局子图,N 是每个视角切分的子图数量

在这里插入图片描述

第二步:将每个 local 和 global 子图都分别送入 vision encoder

在这里插入图片描述

第三步:使用 2D 位置先验再将 local 和 global 子图特征重新组合到高分辨率图像特征,即 high resolution visual features F l o c F^{loc} Floc F g l o F^{glo} Fglo 如下

在这里插入图片描述

第四步:为了对 local 和 global 特征进行高效的交互,作者使用多视角增强模块 来让 loca 和 global 的特征进行融合,得到 dual-enhanced 后的特征,其中 F p o o l F_{pool} Fpool 是平均池化,用于降低 visual token 的数量,加速训练和推理的同时降低计算量。

在这里插入图片描述

第五步:使用 connector 将 dual-enhanced visual features 进行映射,映射的目标是将视觉特征和文本特征进行对齐。然后将指令 T i n s T_{ins} Tins 进行 tokenizer 后的文本 token 和 visual token 进行 concat,送入 LLM ,得到最终的响应如下:

在这里插入图片描述

2.1 Dual-perspective Cropping Module

DCM 提出的目标是实现对高分辨率图像的有效切分,即将大图 I ∈ R W h × H h × 3 I \in R^{W_h \times H_h \times 3} IRWh×Hh×3 切分成子图 I i ∈ R W l × H l × 3 I_i \in R^{W_l \times H_l \times 3} IiRWl×Hl×3,切分后的子图大小就是使用的 vision encoder 预训练时使用的图像大小,如 CLIP-ViT-large-patch14-336 的 W l = H l = 336 W_l = H_l = 336 Wl=Hl=336

1、Local-perspective Cropping

给定大分辨率图像 I ∈ R W h × H h × 3 I \in R^{W_h \times H_h \times 3} IRWh×Hh×3

确定大图尺寸和子图尺寸的关系,下面的符号是向下取整, n W n_W nW n H n_H nH 是 width 和 height 方向上子图的个数
在这里插入图片描述

大图会被切分为 n W × n H n_W \times n_H nW×nH 个子图,令 i ∈ [ 0 , n W × n H − 1 ] i \in [0, n_W \times n_H-1] i[0,nW×nH1],则行和列如下:

在这里插入图片描述

则每个子图的 bbox 如下:

在这里插入图片描述

2、Global-perspective Cropping

全局视角的切分是为了捕捉粗糙的纹理信息,即保留不同目标的空间关系,能够帮助模型理解宏观信息

给定大分辨率图像的大小和 vision encoder 预训练图像的大小,切分数量计算和局部子图一样:

在这里插入图片描述

对于子图的第 i 行和第 j 列, pixel indices 如下,其中 (x,y) 对应的是大分辨率图中的 pixel indices

在这里插入图片描述

因此,子图 I i j g l o I_{ij}^{glo} Iijglo 中的每个像素 (u, v) 和大图的映射关系如下:

在这里插入图片描述

2.2 Dual-perspective Enhancement Module

上面对每个子图使用 DCM 提取了特征之后,需要对局部和全局子图特征分别进行组合,如图 3 所示,分别会按原图中切割出来的顺序进行重组:

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

在这里插入图片描述

1、Global-Perspective Enhancement

组合成大图特征后,需要对全局和局部的两组特征进行交互,如果直接使用 cross-attention 的话,高分辨率的特征图会导致计算溢出,所以本文提出了一个高效的交互方式。

对于 global 视角的特征图的增强,如图 4 所示,先从 global 视角特征图中 crop 出 local 和 global 视角特征如下:

在这里插入图片描述
为了将局部特征注入全图特征子图,作者将对应的 local 和 global 子图特征进行 cross-attention

在这里插入图片描述

然后再将 V 1 g l o , . . . , V N g l o V_1^{glo}, ..., V_N^{glo} V1glo,...,VNglo 进行结合,得到 globallyenhanced feature:

在这里插入图片描述

2、 Local-Perspective Enhancement

Local-Perspective Enhancement 是为了将全局特征注入局部特征中,同上,先对 local 特征图进行全局和局部的切分如下:

在这里插入图片描述

之后,使用 cross-attention 来对切分后的 local 和 global 子图特征进行交互融合:

在这里插入图片描述
然后再将 V 1 l o c , . . . , V N l o c V_1^{loc}, ..., V_N^{loc} V1loc,...,VNloc 进行结合,得到 local-enhanced feature:

在这里插入图片描述

3、Dual-perspective Fusion

在得到了 global-enhanced feature V g l o V_{glo} Vglo 和 local-enhanced feature V l o c V_{loc} Vloc 后,需要对这两组特征进行融合,作者使用 concat 的方式进行特征组合

作者使用了两个独立的 embedding layers 来降低特征的维度,这步对降低计算量很关键,且能够找出重要的特征,embedding 过程如下:

在这里插入图片描述

然后,将编码后的 global 和 local 特征在 channel 维度上进行 concat:

在这里插入图片描述

三、效果

3.1 训练细节

  • vision encoder:CLIP-ViT-L/14
  • LLM:LLaMA3-8b
  • 训练方式:
    • pretrain:为了对齐 vision encoder 和 LLM,本阶段会冻结 vision encoder 和 LLM,主要是训练 DEM 和 projector,训练数据为 CC-595K,训练 1 epoch,AdamW,1x10-3 学习率,cosine 学习率下降,global batch=256
    • SFT:为了精细化调整模型在下游任务上的指令跟随能力,本阶段会冻结 vision encoder,训练 DEM、projector、LLM。训练数据为 e LLaVA-656K,学习率为 2x10-5,batch size=128

在这里插入图片描述

3.2 定量对比

在这里插入图片描述

3.3 定性对比

1、不同分辨率的对比

在这里插入图片描述

2、和 LLaVA-1.5 对比

在这里插入图片描述

在这里插入图片描述

3、消融实验

不同分辨率的对比:

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

DEM 只使用 global、local,和 global、local 都使用的对比:

在这里插入图片描述

DEM 不同融合方式的对比:

在这里插入图片描述

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

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

相关文章

【后续 断点续传】前端大文件分片下载解决方案,没用你来砍我

前言 之前已经出过 大文件分片下载 的教程,期间也收到很多小伙伴的疑问说是功能上有点问题,也抽时间将一些大的问题修改了,验证了很多次,应该不会有什么问题了;在下载方案中涉及到断点续传部分的没有细讲,…

【MySQL】索引和事务

秋招 秋招中最经典,最高频的面试题 文章目录 索引 index操作索引的 SQL查看索引创建索引删除索引 事务操作四个核心特性 索引 index 在数据库中建立一个特殊的“目录“(一系列特定的数据结构),为了加快查询速度 select 查询都是遍…

Go项目依赖:Tidy命令与离线依赖获取

引言 Go语言以其简洁性和高效性在开发者中广受欢迎,而Go的模块系统则为依赖管理提供了极大的便利。本文将介绍如何使用go mod tidy命令来整理项目的依赖关系,以及在无法在线获取依赖的情况下,如何通过离线方式获取并使用依赖。 使用go mod …

数论基础知识(下)

目录 欧拉函数 n的分解质因数求欧拉函数 试除法求欧拉函数值 积性函数 筛法 朴素筛 埃氏筛 欧拉筛 (线性筛) 线性筛欧拉函数 快速幂 同余 欧拉定理 费马小定理 乘法逆元 欧拉函数 互质 : ∀ a , b ∈ N ,若 gcd ( a , b ) 1 ,则 a…

Java零基础之多线程篇:线程控制

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

RISC-V竞赛|第二届 RISC-V 软件移植及优化锦标赛报名正式开始!

目录 赛事背景 赛道方向 适配夺旗赛 优化竞速赛 比赛赛题(总奖金池8万元!) 🔥竞速赛 - OceanBase 移植与优化 比赛赛程(暂定) 赛事说明 「赛事背景」 为了推动 RISC-V 软件生态更快地发展&#xff0…

健身动作AI识别,仰卧起坐计数(含UI界面)

用Python和Mediapipe打造,让你的运动效果一目了然! 【技术揭秘】 利用Mediapipe的人体姿态估计,实时捕捉关键点,精确识别动作。 每一帧的关键点坐标和角度都被详细记录,为动作分析提供数据支持。 支持自定义动作训练&a…

Jave-this关键字

目录 1.this关键字 先看一段代码,并分析问题 什么是this 案例演示 2.this的注意事项和使用细节 1.this关键字 先看一段代码,并分析问题 什么是this this就 代表的是当前对象。 this可以大概理解成“我的” ,比如我的书包,这…

基于Java中的SSM框架实现大创项目申报管理系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现大创项目申报管理系统演示 摘要 经济的高速发展进一步推动了种类繁多的项目落地,传统的项目在申报过程中主要通过纸质文件的方式实现申报信息的传递,同时不同的项目内容所对应的申报资料模板也有所差异,人工整理的提…

没有显卡,怎么玩AI绘图?

或许很多人跟我一样,没有显卡,但又很想玩AI绘图,但本地绘图怕是无缘了,只能借助云GPU的方式了。 今天跟大家分享一下一个简单目前可白嫖无门槛的方法实现无显卡也能玩AI绘图。 方案就是ComfyUIBizyAir云节点。 ComfyUI介绍 来…

【软考】虚拟存储器

目录 1. 说明2. 定义3. 工作原理4. 管理方式5. 优点6. 例题6.1 例题1 1. 说明 1.在概念上,可以将主存存储器看作一个由若干个字节构成的存储空间,每个字节(称为一个存储单元)有一个地址编号,主存单元的该地址称为物理地址(Physical Address)…

数值分析——三次样条插值

系列文章目录 数值分析——拉格朗日插值 数值分析——牛顿插值多项式 数值分析——埃尔米特(Hermit)插值 数值分析——分段低次插值 文章目录 系列文章目录前言一、理论推导1.三次样条函数2.三次样条插值函数的求解条件3.三次样条插值函数的建立 二、MA…

简单反射型XSS的复现

xss反射型攻击&#xff1a; 1.最简单的漏洞复现&#xff1a; 这里我们有一个最简单的网页&#xff1a;由于地址不存在&#xff0c;所以图片加载不出来。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta…

FP8量化

https://arxiv.org/html/2402.16363v5 LLama3.1用了FP8量化&#xff1a; FP8也可以用scaling factor来扩大表示范围&#xff0c;对吧&#xff1f;

开源在线剪切板 PrivateBin 安装和使用教程

我们经常需要在网上快速分享一些文本内容&#xff0c;比如代码片段、临时笔记或者敏感信息。传统的在线剪贴板服务虽然使用方便&#xff0c;但往往缺乏足够的隐私保护。 那么&#xff0c;有没有一种既方便又安全的在线文本分享方式呢&#xff1f;今天我要向大家推荐一个优秀的…

常见的图像融合方法

这里我们将介绍一些常用的图像融合方式&#xff0c;并不涉及到诸如CutMix、MixUp、TokenMix、Mosaic、Copy-Paste等图像增强方法。 首先是读取图像&#xff0c;我们这边采用了PIL库进行&#xff0c;那么读进来就应该是一个Image对象。下面介绍Image对象与array的转换方式。 f…

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测

土地利用/土地覆盖数据是生态、环境和气象等领域众多模型的重要输入参数之一。基于遥感影像解译&#xff0c;可获取历史或当前任何一个区域的土地利用/土地覆盖数据&#xff0c;用于评估区域的生态环境变化、评价重大生态工程建设成效等。借助CLUE模型&#xff0c;实现对未来土…

AI9-文本识别

本章主要介绍文本识别算法的理论知识,包括背景介绍、算法分类和部分经典论文思路。 通过本章的学习,你可以掌握: 1. 文本识别的目标 2. 文本识别算法的分类 3. 各类算法的典型思想 1 背景介绍 文本识别是OCR(Optical Character Recognition)的一个子任务,其任务为识别一个…

pytorch的入门使用

pytorch安装略&#xff01; 一.张量Tensor 张量是一个统称其中包含0阶&#xff0c;1阶&#xff0c;2阶&#xff0c;3阶&#xff0c;4阶&#xff0c;.......n阶。 0阶&#xff1a;标量&#xff0c;常数&#xff0c;0-D Tensor 1阶&#xff1a;向量&#xff0c;1-D Tensor 2…

使用java反编译工具jad

文章目录 反编译工具 JAD下载配置环境变量使用其他反编译工具 JD-GUI 反编译工具 JAD 反编译是指将编译后的字节码文件&#xff08;.class 文件&#xff09;转换回可读的 Java 源代码。JAD (Java Decompiler) 是一个经典的反编译工具&#xff0c;广泛用于将 Java 字节码反编译…