【多模态】40、ConvLLaVA | 使用 ConvNeXt 为 LLaVA 实现更高分辨率的输入

在这里插入图片描述

论文:ConvLLaVA: Hierarchical Backbones as Visual Encoder for Large Multimodal Models

代码:https://github.com/alibaba/conv-llava

出处:阿里 | 清华

时间:2024.05

一、背景

LMM 在很多任务上都表现出来很好的效果,而 visual encoder 也是其强大能力的基础,且 ViT 的使用居多,但是 ViT 的计算复杂度很高,限制了其在大分辨率图像任务上的使用,因为分辨率越大则 token 越多,输入 LLM 的 token 越多,造成很大的计算量,且很多 LLM 的输入 token 都是受限的

LLava-next、Monkey、Vary 等方法都致力于解决 ViT 的平方复杂度,但他们都没有注意到根本原因—— visual token 的冗余[5,28]

  • [5] An image is worth 1/2 tokens after layer 2: Plug-and-play inference acceleration for large vision-language models
  • [28] Vila: On pre-training for visual language models

层次化视觉骨干网络(resnet、SENet等),是 ViT(视觉Transformer)的对应方案,能够很好地解决由于过多视觉 token 而带来的问题,因为它们具有固有的信息压缩过程。

在层次化骨干网络中,特征在各个阶段逐步被压缩。与 ViT 仅进行14倍压缩 [12] 相比,它们将视觉特征压缩了32倍 [15, 34]。因此,在相同分辨率下,它们生成的视觉标记数量不到 ViT 的四分之一,大大减轻了LLM(大语言模型)的计算负担。此外,层次化视觉编码器通常设计为线性空间复杂度 [34, 10, 15],有效地解决了过多视觉标记和二次视觉复杂度的问题。

作者选择了 ConvNeXt ,因为这个网络有现成的对比学习预训练好的权重(CLIP)

但如果直接使用 ConvNeXt 来替换 ViT 的话也不太可行,因为 ConvNeXt 是在低分辨率数据上训练的,所以作者在训练模型的过程中会将ConvNeXt 的权重放开参与训练,而且比 ViT 取得了更好的效果。

这个结论也证明即使在将视觉标记压缩到相同数量时,较高分辨率模型的特征仍然包含更多细粒度的信息。但是将分辨率提升到1024以上会导致生成过多的视觉标记。为了解决这个问题,作者为 ConvNeXt 增加一个阶段来进一步压缩视觉信息,以增强分层骨干网络的固有信息压缩能力。视觉输入将被压缩64倍,而不是32倍,以进一步减少冗余。因此,当处理1536分辨率输入时,ConvLLaVA 仅生成 576 个视觉标记,这相当于ViT在处理 336 分辨率输入时生成的视觉标记数量(见第3.3节)。

所以,ConvLLaVA 的视觉编码器是一个五阶段的 ConvNeXt。ConvLLaVA 将高分辨率图像压缩成信息丰富的视觉特征,有效避免了生成过多的视觉标记(见表1;[31, 27, 25, 36])。此外,由于卷积的平移等价性,ConvLLaVA 可以在低分辨率下训练并在高分辨率下评估,还可以处理任意纵横比的图像。大量实验已经证明了方法的有效性。在各种基准测试中,ConvLLaVA 7B优于LLaVA-1.5-13B,包括MME [13]、MMBench [33]、SEEDBench [22]、RealWorldQA [50]、TextVQA [44]、DocVQA [38]、POPE [26]和MMVet [57]。

大规模多模态模型

为了利用大规模语言模型的潜力并结合视觉信息,BLIP系列模型提出了Q-former,它生成视觉标记供LLM解释视觉数据。同时,LLaVA采用单线性层将视觉特征映射到词嵌入空间,使LLM能够感知视觉特征。这些方法使用ViT作为视觉编码器,主要针对低分辨率的视觉数据(例如224或336分辨率)。此外,Qwen-VL 和 mPLUG-owl2 通过更新 ViT 的权重,将 ViT 的分辨率提升到 448。然而,由于 ViT 的二次空间复杂性,这些方法未能进一步扩大分辨率,而 ConvNeXt 可以以线性成本增加来扩大分辨率。Qwen-VL 和 mPLUG-owl2 还探索通过重采样器减少视觉标记。然而,最近的研究表明,卷积或简单连接比重采样器表现更好。

使用 cropping 的高分辨率 LMMs

高分辨率 LMMs 的代表性裁剪方法在 LLaVA-NExT 中被引入,该方法将图像划分为四个部分,每个部分分别由ViT编码,然后连接起来进行LLM处理。一些方法采用裁剪来扩大分辨率。虽然在降低ViT复杂性方面有效,但裁剪会破坏图像的结构完整性,从而可能影响整体性能。此外,由于裁剪引入的大量视觉标记对LLM提出了显著复杂性,并挑战了 LLM 的检索能力。

高分辨率 LMMs 与额外的视觉编码器

为了理解高分辨率图像,引入辅助视觉编码器不会显著增加视觉标记的数量。Vary 和 Deepseek-VL 利用 SAM 作为高分辨率视觉编码器来增强 ViT 的特征。MiniGemini-HD 和 LLaVA-HR 采用 ConvNeXt 处理高分辨率图像,并使用交叉注意力或适配器从高分辨率输入中提取特征。然而,这些方法通过补充视觉编码器和相关超参数引入了额外的复杂性。此外,从低质量表示(例如LAION-CLIP-ConvNeXt)中提取特征可能会损害 LMMs 的性能。

二、方法

在这里插入图片描述

ConvLLaVA 的结构如图 1b:

  • 视觉编码器:g(),5 层的 ConvNeXt ,使用 CLIP-ConvNeXt [34,17]
  • 语言编码器:f(),使用 Vicuna-7B
  • 视觉-语音连接器:h(),两层 MLP
  • 结构:参考典型的 LLaVA [32, 30], Qwen-VL [2], 和 VILA [28].

2.1 ConvNeXt

ConvNeXt 的基本模块包括一个深度卷积和一个前馈网络。深度卷积的核大小为 7×7,计算复杂度为 O ( k 2 C N ) O(k^2CN) O(k2CN),其中 k、C 和 N 分别表示核大小、通道数量和视觉标记数量。

相比之下,ViT中的自注意力复杂度为 O ( 4 C 2 N + 2 C N 2 ) O(4C^2N + 2CN^2) O(4C2N+2CN2)。因此,ConvNeXt 的空间复杂性显著低于 ViT。输入最初由一个 4×4 非重叠卷积下采样层处理。随后,这些特征依次输入到 ConvNeXt 的四个阶段中,每个阶段包含若干个 ConvNeXt 块。在各阶段之间,特征图以 2× 的比例下采样,维度扩展为 2×。ConvNeXt的输出被下采样至 32×,而不是 ViT-L的 14×。因此,与 ViT 相比,ConvNeXt 生成的视觉标记少于四分之一,从而减轻了语言模型的计算负担。得益于线性空间复杂性和更少的视觉标记,从ViT-L(红线)到ConvNeXt(蓝线),LMMs的计算量减少了几乎8倍,如图2所示。

Five-stage ConvNeXt†:

利用 ConvNeXt 作为视觉编码器在编码 768 分辨率图像时非常高效,而将分辨率扩展到高于768会产生过多的视觉标记。之前的研究[31, 25]忽略了压缩视觉标记的探索,但压缩视觉标记是合理的,因为在视觉表示中存在冗余[28, 5]。

这些研究表明,可以使用 ConvNeXt 进一步对视觉特征进行下采样。作者提出通过在原有四阶段模型中加入第五阶段的 ConvNeXt 块来压缩视觉特征。

作者将整体五阶段 ConvNeXt 称为 ConvNeXt†。在 1536 分辨率下,ConvNeXt† 将视觉标记数量减少到 576,相当于 ViT 在 336 分辨率下的数量。这将使总计算量相对于原始 ConvNeXt(蓝线)减少 6 倍至 ConvNeXt†(绿线),如图2所示。

本文方法比裁剪方法更具计算效率,因为裁剪方法通常会产生过多的视觉标记[39, 31, 27]。此外,通过消除裁剪和合并的需求,ConvLLaVA 避免了全局视图,从而进一步减少了视觉标记数量。

在这里插入图片描述

2.2 更新 ConvNeXt 的参数非常必要

主流的方法一般都会冻结 vision encoder,但本文作者经过实验发现,更新 ConvNeXt 的参数能获得更好的效果

在这里插入图片描述

如何更新参数呢:

  • 第一步:使用 LLaVA-1.5 的 558k caption 数据来优化 projector
  • 第二步:使用 ShareGPT4V-PT 来训练 visual encoder(ShareGPT4v 训练 ViT 的最后 12 层,ConvNeXt-L 训练最后 18 层)
  • 第三步:使用 LLaVA-1.5 的 665K IT 数据来训练指令跟随能力

2.3 训练 5 层 ConvNeXt,将分辨率提升到 1536

将分辨率从 768 提升到更大的话,就会引入更多的 token,很大程度增大了 LLM 的计算量,所以作者引入了 5 层 ConvNeXt 来压缩视觉信息

训练方式:

  • 第一阶段:使用 ShareGPT4V-PT 数据来训练 ConvNeXt 的第五层 + projector
  • 第二阶段:使用 ShareGPT4V-PT 数据训练全部的模型参数
  • 第三阶段:使用 665K LLava IT 数据来训练 LLM 和 projector

训练 5 层 ConvNeXt 的结果分析(ConvNeXt†):

  • 表 4 中展示了在 ConvNeXt 中添加第5阶段的结果。
  • 提高分辨率在 SEEDBench、TextVQA 和 DocVQA 上的表现一致提升,这些基准测试需要细粒度理解,并从更高的分辨率中受益。这些结果突显了我们训练第 5 阶段方法的有效性。
  • 然而,在 MMBench 上,当分辨率从 1024 提高到 1536 时,ConvNeXt†的性能略有下降。1536 的分辨率大约是预训练分辨率(256)的六倍。要使预训练的视觉编码器适应从如此显著增加的分辨率中有效提取全局信息,需要大量的训练数据。在第4节中,作者通过在第二个训练阶段为视觉编码器提供足够的数据来验证这一假设

提高分辨率的效果对比:

提高分辨率,视觉标记(visual tokens)的数量也会增加。这两个因素是相互关联的,作者比较了在相同 token 数量下,作为视觉编码器的 ConvNeXt 和 ConvNeXt† 的结果。这两系列模型都预训练于 ShareGPT4V-PT,并使用 665k LLaVA 指令数据进行微调。ConvNeXt† 有一个额外的阶段,将视觉标记数量压缩到 1/4。因此,这两系列模型之间的差异已大大减少。我对照实验揭示了新的发现:

  • 当 visual token 数量相同时,具有更高分辨率的模型在 SEEDBench 和 DocVQA 上的表现更好。

    在图3中,绿色线条始终优于蓝色线条。这是因为高分辨率模型即使输出相同数量的视觉标记,也能提供更细致和更高质量的视觉特征。之前的研究 [31, 27, 11] 通过将图像分割成小块来提高分辨率,这会生成过多的视觉标记。这种裁剪方法显著降低了效率,并挑战了LLM的检索能力。
    所以,本文中将高分辨率图像压缩成信息丰富的视觉标记比裁剪方法更有效。训练一个阶段进一步压缩视觉特征提供了一种增加分辨率并保持适度计算成本的方法。

  • 在等效分辨率下,视觉标记数量的重要性在不同基准测试中有所不同。

    对于像 SEEDBench 这样的通用基准测试,压缩 768 分辨率模型的视觉标记带来的性能下降是微小的(SEEDBench上下降0.9)。然而,对于像DocVQA这样的OCR基准测试,具有较少视觉标记的模型性能下降是显著的(DocVQA上下降9.1)。总体而言,在通用基准测试上压缩视觉标记只会导致轻微的信息损失,但在细粒度OCR基准测试上则会导致显著的信息损失。

在这里插入图片描述

三、效果

3.1 完整的训练数据

完整的训练还是分为三个阶段:

  • 阶段一:projector initialization:训练 ConvNeXt 的第五个 stage 和 projector,使用的数据共约 2M,包括ShareGPT4V-PT [6], ShareGPT4V [6], 和 ALLaVA captions [4]
  • 阶段二:Vision-Language pretraining:训练模型所有参数,使用的数据约 2.9M,包括 ShareGPT4V-PT [6], ShareGPT4V [6], ALLaVA [4], 和 190k open-sourced subset of VFLAN [52]
  • 阶段三:Visual Instruct Tuning:作者使用 LLaVA 的 665k 数据来微调
  • 每个阶段的训练都训练 1 epoch

3.2 效果

在这里插入图片描述

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

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

相关文章

ROS编译错误: fatal error: test_pkg/test_pkg.h: 没有那个文件

在ROS安装完毕后编译ros工作空间,出现了以下错误: 解决方法: 删除工作空间,重建再重新编译

vue3+ el-tree 展开和折叠,默认展开第一项

默认第一项展开: 展开所有项&#xff1a; 折叠所有项&#xff1a; <template><el-treestyle"max-width: 600px":data"treeData"node-key"id":default-expanded-keys"defaultExpandedKey":props"defaultProps"…

超好用的傲软录屏下载和解锁版安装教程 (专业好用的桌面录屏软件)

录屏系列软件安装目录 一、ZD屏幕录像机解锁版下载及安装教程 (一款小巧的轻量级屏幕录像工具) 二、班迪录屏Bandicam v7解锁版安装教程&#xff08;高清录屏软件&#xff09; 三、Mirillis Action v4 解锁版安装教程(专业高清屏幕录像软件) 四、Aiseesoft Screen Recorder…

支持图片识别语音输入的LobeChat保姆级本地部署流程

文章目录 前言1. LobeChat对我们有哪些帮助?2. 本地安装LobeChat3. 如何使用LobeChat工具4. 安装Cpolar内网穿透5. 实现公网访问LobeChat6. 固定LobeChat公网地址 前言 本文主要介绍如何在Windows系统电脑本地部署LobeChat&#xff0c;一款高颜值的开源AI大模型智能应用&…

Java学习十四—Java8特性之Lambda表达式

一、简介 Java 8 引入了 Lambda 表达式&#xff0c;它是一种更简洁、更便于使用的函数式编程特性。Lambda 表达式允许将函数作为方法的参数&#xff08;函数式接口的实例&#xff09;传递给某个方法&#xff0c;或者将代码像数据一样进行传递。 ‍ lambda是一个匿名函数&#…

LLM之RAG实战(四十一)| 使用LLamaIndex和Gemini构建高级搜索引擎

Retriever 是 RAG&#xff08;Retrieval Augmented Generation&#xff09;管道中最重要的部分。在本文中&#xff0c;我们将使用 LlamaIndex 实现一个结合关键字和向量搜索检索器的自定义检索器&#xff0c;并且使用 Gemini大模型来进行多个文档聊天。 通过本文&#xff0c;我…

明确产业定位,用科学规划铸就高品质文化产业园

科学规划是构建高品质文化产业园区的重要保障。通过明确产业定位与发展目标、科学规划空间布局、完善基础设施与配套设施、注重生态环境保护、加强人才引进与培养以及推动产业协同发展等措施的实施&#xff0c;可以推动文化产业园区向高品质、高效益、可持续的方向发展。 一、明…

【TB作品】51单片机 Proteus仿真 超声波读取+LCD1602显示仿真12MHZ

实验报告&#xff1a;51单片机 Proteus仿真 超声波读取LCD1602显示仿真 一、实验背景 本实验旨在使用51单片机&#xff08;AT89C51&#xff09;结合超声波传感器HC-SR04和LCD1602液晶显示屏&#xff0c;通过Proteus仿真平台实现超声波测距功能&#xff0c;并将测得的距离显示…

leetcode hot100

哈希 49.字母异位词分组 HashMap的含义比较晕&#xff0c;可以重做 双指针 11.盛最多水的容器 双指针的起始位置和移动条件没转过来&#xff0c;可以重做 15.三数之和 不太熟练&#xff0c;可以再做一遍 42.接雨水 还可以用dp和单调栈做 双指针法&#xff1a; 首先需要注意…

【DFS(深度优先搜索)详解】看这一篇就够啦

【DFS详解】看这一篇就够啦 &#x1f343;1. 算法思想&#x1f343;2. 三种枚举方式&#x1f343;2.1 指数型枚举&#x1f343;2.2 排列型枚举&#x1f343;2.3 组合型枚举 &#x1f343;3. 剪枝优化&#x1f343;4. 图的搜索&#x1f343;5. 来几道题试试手&#x1f343;5.1 选…

spark任务,使用 repartition 对数据进行了重新分区,但任务输入数据大小仍存在不均衡

目录 目录 确认 Spark 任务重新分区后的数据不均衡 1. 检查分区大小 2. 使用 DataFrame API 检查分区 3. 使用 Spark UI 查看分区情况 4. 使用日志记录分区信息 可能原因 1. 数据分布不均衡 2. 分区策略 3. 数据预处理 解决方案 1. 检查数据分布 2. 使用 coalesce…

代码随想录算法训练营Day62|冗余连接、冗余连接II

冗余连接 108. 冗余连接 (kamacoder.com) 考虑使用并查集&#xff0c;逐次将s、t加入并查集中&#xff0c;当发现并查集中find(u)和find(v)相同时&#xff0c;输出u和v&#xff0c;表示删除的边即可。 #include <iostream> #include <vector> using namespace s…

【分布式系统】注册中心Zookeeper

目录 一.Zookkeeper 概述 1.Zookkeeper 定义 2.Zookkeeper 工作机制 3.Zookkeeper 特点 4.Zookkeeper 数据结构 5.Zookkeeper 应用场景 统一命名服务 统一配置管理 统一集群管理 服务器动态上下线 软负载均衡 6.Zookkeeper 选举机制 第一次启动选举机制 非第一次…

uboot镜像之boot烧写

适用场景:单板上没有boot&#xff0c;和按地址烧写配合&#xff0c;可完成单板所有镜像的烧写。 原理:bootrom读取u-boot.bin至内存并执行此u-boot 然后运行uboot,通过uboot sf命令烧录uboot.bin到flash存储空间去. bootrom读取u-boot.bin至内存并执行此u-boot 通过uboot sf命…

【开发工具】webStrom2024版-插件

Chinese (Simplified) Language Pack / 中文语言包 英文界面变为中文界面。 Material Theme UI 界面美化 Rainbow Brackets 代码量变大时&#xff0c;总会伴随着各种括号&#xff1b;它能将括号赋予不同的颜色&#xff0c;方便我们区分。 Translation 中英互译&#xff0c;…

Codeforces Round 918 (Div. 4)(A~F)

目录 A. Odd One Out B. Not Quite Latin Square C. Can I Square? D. Unnatural Language Processing E. Romantic Glasses F. Greetings A. Odd One Out Problem - A - Codeforces 输出一个不同于其他两个数的数&#xff0c;用异或操作可以轻松解决。 void solve{int…

高考志愿填报,选专业是看兴趣还是看就业?

对于结束高考的学生来说&#xff0c;选择专业的确是一个非常让人头疼的事情。因为很多人都不知道&#xff0c;选专业的时候究竟是应该看一下个人兴趣&#xff0c;还是看未来的就业方向&#xff0c;这也是让不少人都相当纠结的问题。这里分析一下关于专业选择的问题&#xff0c;…

windows下docker安装

目录 前言 1.搭建WSL2环境 1.1打开控制面板 1.2 将WSL 2设置为默认值 2.安装docker 3.使用docker 结论&#xff1a; 前言 本文安装docker&#xff0c;将使用WSL2&#xff0c;而不是vmeare和Hyper-V&#xff0c;也不需要你另外安装Linux系统&#xff08;如Ubuntu&#x…

PostgreSQL主从同步

目录 一、主从复制原理 二、配置主数据库 2.1 创建同步账号 2.2 配置同步账号访问控制 2.3 设置同步参数 3.4 重启主数据库 三、配置从数据库 3.1 停止从库 3.2 清空从库数据文件 3.3 拉取主库数据文件 3.4 配置从库同步参数 3.5 启动从库 四、测试主从 4.1在主库…