Idefics3:构建和更好地理解视觉-语言模型:洞察与未来方向

温馨提示:
本篇文章已同步至"AI专题精讲" Idefics3:构建和更好地理解视觉-语言模型:洞察与未来方向

摘要

视觉-语言模型(VLMs)领域,接收图像和文本作为输入并输出文本的模型,正在快速发展,然而在多个关键方面(如数据、架构和训练方法)仍未达成共识。本文可以视为构建VLM的教程。我们首先提供当前最先进方法的全面概述,突出每种方法的优缺点,解决该领域面临的主要挑战,并提出未被充分探讨的研究方向。接着,我们详细介绍了构建Idefics3-8B的实际步骤,这是一种强大的VLM,相比其前身Idefics2-8B在性能上有显著提升,同时仅在开放数据集上进行训练,并采用简单的管道。这些步骤包括创建Docmatix,一个旨在提高文档理解能力的数据集,其规模是以往数据集的240倍。我们发布了该模型以及为其训练创建的数据集。

1 引言

视觉-语言模型(VLMs)接收图像和文本作为输入,并输出文本,在文档和图形理解(Hu et al., 2024)、解决视觉数学问题(Gao et al., 2023)或将网页截图转化为代码(Laurençon et al., 2024)等多个应用中非常有效。强大的开放大型语言模型(Touvron et al., 2023;Jiang et al., 2023;Team et al., 2024)和视觉编码器(Zhai et al., 2023;Sun et al., 2023;Radford et al., 2021)的进步,使得研究人员可以在这些单模态预训练模型的基础上,创建能够以更高精度解决这些任务的先进VLM(Dai et al., 2023;Liu et al., 2023;Bai et al., 2023;Lin et al., 2023;Li et al., 2023;Wang et al., 2023)。

尽管该领域取得了进展,文献中仍突出显示了在开发管道的关键方面(如数据、架构和训练方法)的设计选择存在多种分歧,表明该领域尚未达成共识。例如,许多最近的模型(Koh et al., 2023;Li et al., 2023;Liu et al., 2023)选择在将图像隐藏状态序列与文本嵌入序列连接后,将其作为输入送入语言模型,而Llama 3-V模型(Dubey et al., 2024)则使用交替的基于Transformer的跨注意力机制,将视觉信息融合进LLM,类似于Flamingo(Alayrac et al., 2022)。这些在VLM开发中的不同核心选择,往往在研究论文中没有进行消融或解释,使得很难区分哪些决策对模型性能的影响,并评估每种方法在计算和数据效率上的权衡。

在本文中,我们首先引导读者了解该领域中的主要研究问题,提供一个详细的概述,讨论当前的VLM方法,分析每种方法的优缺点,具体涉及:(a)用于连接预训练语言模型与视觉编码器的不同架构,(b)VLM训练中采用的各种数据类型,它们的实用性以及通常引入的阶段,(c)VLM的训练方法,通常为提高效率和稳定性,分为多个阶段,(d)在模型评估中遇到的挑战。我们提出了未来的研究方向,特别是在数据方面,以提高模型性能。

在此概述的基础上,我们详细介绍了构建Idefics3-8B2这一强大VLM的实际步骤。Idefics3-8B在文档理解任务上明显超过其前身Idefics2-8B,在DocVQA(Mathew et al., 2021)上取得了13.7分的提升。为了特别提升在此任务上的能力,我们创建了Docmatix3数据集,包含240万张图像和950万个问答对,来源于130万个PDF文档,规模是以往开放数据集的240倍。我们发布了我们的模型以及用于其训练的数据集。

2 分析VLM架构选择

2.1 连接单模态预训练模型

自Frozen(Tsimpoukelli et al., 2021)和Flamingo(Alayrac et al., 2022)引入以来,大多数VLM都是基于单模态预训练骨干模型(语言模型和/或视觉编码器)构建的,而不是从头开始训练全新的模型(Koh et al., 2023;Li et al., 2023;Liu et al., 2023)。强大的开源LLM(Dubey et al., 2024;Jiang et al., 2023;Team et al., 2024)和图像编码器(Zhai et al., 2023;Sun et al., 2023;Radford et al., 2021)的可用性,减少了训练这些模型的成本,使研究人员能够在这些模型的基础上,创建高性能的VLM(Dai et al., 2023;Koh et al., 2023;Liu et al., 2023;Vallaeys et al., 2024)。这两个预训练模型通常通过交叉注意力或自注意力架构连接。

2.1.1 交叉注意力架构

交叉注意力架构在Flamingo(Alayrac et al., 2022)中被引入。由视觉骨干编码的图像隐藏状态用于通过新初始化的交叉注意力层调节冻结的语言模型,这些层交替插入在预训练语言模型层之间。在这些层中,键和值来自视觉特征,而查询来自语言输入。实际上,交叉注意力模块通常插入到LLM的每四个Transformer块后,并增加大约1/4个LLM大小的新初始化参数。这一显著的参数增加提升了模型的表达能力,使得模型能够在不解冻LLM进行训练的情况下,仍能在文本任务上表现良好。
Idefics1(Laurençon et al., 2023)和OpenFlamingo(Awadalla et al., 2023)是Flamingo的开源复现版本。最近,Llama 3-V(Dubey et al., 2024)也采用了这种方法,将Llama 3适配为多模态。

2.1.2 自注意力架构

自注意力架构(或完全自回归架构)在FROMAGe(Koh et al., 2023)和BLIP2(Li et al., 2023)中被引入,在这种架构中,视觉编码器的输出被视为令牌,并与文本令牌序列连接。整个序列然后作为输入送入语言模型。视觉令牌序列可以选择性地进行池化,以缩短序列,使模型在训练和推理时都更加高效。我们将映射视觉隐藏空间到文本隐藏空间的层称为模态投影层。图1突出显示了自注意力架构的不同组件。
大多数最近的VLM现在采用了这种设计,包括Llava(Liu et al., 2023)、Qwen-VL(Bai et al., 2023)、DeepSeek-VL(Lu et al., 2024)、SPHINX(Lin et al., 2023)、VILA(Lin et al., 2023)、MiniGemini(Li et al., 2024)、Monkey(Li et al., 2023)、MM1(McKinzie et al., 2024)、Idefics2(Laurençon et al., 2024)、MiniCPM-V(Yao et al., 2024)、InternLM(Dong et al., 2024)或InternVL(Chen et al., 2024)。
在这里插入图片描述

2.1.3 哪种架构表现最佳?

Lau et al. (2024) 探讨了这两种主要架构类型的性能比较。预训练的单模态模型包括用于大语言模型(LLM)的 Mistral-7B (Jiang et al., 2023) 和用于视觉编码器的 SigLIP-SO400M (Zhai et al., 2023)。使用自注意力架构的模型共有 83 亿个参数,其中包括 7.4 亿个新初始化的参数,而使用交叉注意力架构的模型共有 100 亿个参数,其中包括 25 亿个新初始化的参数。

作者证明,当在训练过程中保持骨干网络冻结时,交叉注意力架构的表现显著优于自注意力架构。然而,当使用 LoRA (Hu et al., 2022) 训练部分视觉编码器和语言模型,并增加额外的 2 亿可训练参数时,尽管交叉注意力架构的参数更多,但其表现却不如自注意力架构。

尽管如此,这项研究并未评估视觉语言模型(VLM)在仅文本基准上的表现。直观来看,当在训练过程中解冻部分语言模型时,我们需要将 LLM 训练数据混合中的数据纳入 VLM 训练数据中,以保持在仅文本基准上的表现。

2.1.4 预训练骨干网络对性能的影响

多项研究发现,每个独立的单模态预训练骨干网络的性能与最终 VLM 的表现相关。例如,在 Laurençon et al. (2024) 中,作者展示了用 Mistral-7B (Jiang et al., 2023)(MMLU(Hendrycks et al., 2021)上得分 60.1%)替代 LLaMA-1-7B (Touvron et al., 2023)(MMLU 上得分 35.1%)后,所有基准测试上的性能都有了显著提升。类似地,用 SigLIP-SO400M (Zhai et al., 2023)(在 ImageNet 上得分 83.2%)替代 CLIP-ViT-H (Radford et al., 2021)(在 ImageNet 上得分 78.0%),也在所有基准测试上带来了显著的性能提升,且没有改变 VLM 的总参数数量。

由于视觉编码器通常是在不同的数据集上训练并针对不同任务进行优化,一些模型,如 SPHINX (Lin et al., 2023),结合了多个编码器的表示,例如 DINOv2 (Oquab et al., 2023) 和 CLIP (Radford et al., 2021),从而创造出更丰富的视觉嵌入序列,尽管这样做会牺牲计算效率。

近年来的研究主要集中在提高开放语言模型(Touvron et al., 2023;Dubey et al., 2024;Team et al., 2024;Jiang et al., 2023;Zheng et al., 2024;Conover et al., 2023;Mehta et al., 2024;Abdin et al., 2024;Hu et al., 2024;DeepSeek-AI et al., 2024;Bai et al., 2023)。相比之下,发布的开放视觉编码器很少,其中 SigLIP-SO400M 因其仅 4 亿个参数却具有良好的性能-参数比而脱颖而出。这表明,仍然需要大规模训练的开源视觉编码器。

2.2 考察其他架构选择

2.2.1 视觉编码器真的是必需的吗?

Fuyu (Bavishi et al., 2023) 直接将图像块输入语言模型,在进行简单的线性投影以调整维度后,不使用视觉编码器。这种架构有两个主要优势:它独立于其他预训练模型,并且保留了原始图像的所有信息。后者非常重要,因为原始图像的细节可能是准确回答提示所必需的。另一方面,预训练的视觉编码器将图像转换为与用户提示无关的表示。因此,视觉编码器旨在尽可能多地捕捉信息,但仍可能遗漏与提示相关的细节。VisFocus (Abramovich et al., 2024) 尝试通过将用户的提示整合到视觉编码器中来解决这个问题。然而,这种方法在交织的图像-文本对话中不太自然,因为提示可能会引用之前的问题。

尽管有这些优势,这种架构尚未表现出优于其他方法的性能。Fuyu 在基准测试中的得分显著低于同一时期发布的类似规模的最佳模型。PaliGemma (Beyer et al., 2024) 也尝试了这种方法,并报告了与使用预训练视觉编码器相比的性能显著下降。作者建议,绕过一个在数十亿图像上预训练的视觉编码器可能导致训练时间更长,才能达到类似的性能。

此外,在语言模型内处理图像表示可能会降低其在仅文本基准上的表现。即使这种方法在多模态基准上优于其他方法,大多数 VLM 仍未在仅文本基准上进行评估,因此目前尚不清楚省略视觉编码器是否会影响文本基准表现。

最后,这种方法尚未使用高效的池化策略来避免通过直接操作原始像素而显著减少信息。展望未来,对于视频理解等任务或扩展到其他模态,开发一种可以高效减少传递给语言模型的视觉 token 数量的架构,将有助于保持合理的序列长度。

2.2.2 应该如何将视觉编码器连接到语言模型?

许多模型,如 FROMAGe (Koh et al., 2023) 和 LLaVA (Liu et al., 2023),在视觉编码器和 LLM 之间使用一个简单的线性层,确保所有编码的视觉信息被保留,因为没有应用池化策略。然而,这种方法会导致一个很长的视觉 token 序列,使得训练和推理效率较低。为了解决这个问题,Qwen-VL (Bai et al., 2023) 通过在一组嵌入和图像隐藏状态之间使用单层交叉注意力模块来减少视觉 token 的数量。类似地,Idefics2 (Laurençon et al., 2024) 在感知器重采样器 (Jaegle et al., 2021; Alayrac et al., 2022) 内部使用交叉注意力模块,展示了视觉 token 数量可以压缩到 64 个(除以 77),同时保持大多数任务的性能,除了那些需要大量 OCR 功能的任务。

InternLM-XComposer2-4KHD (Dong et al., 2024) 也显示,对于 OCR 任务相关的基准(如 InfoVQA (Mathew et al., 2022) 和 DocVQA (Mathew et al., 2021)),每幅图像的视觉 token 数量增加是必需的。

尽管感知器重采样器的效率较高,但它的使用在几篇论文中受到质疑,这些论文建议更有效地利用图像的二维结构。例如,HoneyBee (Cha et al., 2024) 引入了 C-Abstractor,通过将 2D 位置嵌入重新引入到视觉特征中,之后使用 ResNet 块 (Xie et al., 2017)。在 mPLUG-DocOwl-1.5 (Hu et al., 2024) 中,引入了 H-Reducer,使用卷积将图像隐藏状态的数量减少了 4 倍。InternVL (Chen et al., 2024) 也使用简单的像素洗牌策略实现了 4 倍的压缩。最近,MiniCPM-V 2.6 (Yao et al., 2024) 和 Idefics2 一样,选择了感知器重采样器,使用 64 个可学习的嵌入,但通过添加 2D 位置嵌入进行了增强。

2.2.3 图像切分策略:增加视觉token数量的技巧

图像切分策略在UReader (Ye et al., 2023)和SPHINX (Lin et al., 2023)中有所介绍,它通过将原始图像分割成多个子图像,每个子图像都由视觉编码器单独编码。切片的数量可以是固定的,例如每张图像始终使用四个切块,或者根据图像的原始分辨率变化,例如每隔N个像素进行切分。

当切片数量基于原始分辨率时,模型会使用不同数量的视觉token进行训练。这种方法在推理时尤其具有优势:对于较简单的任务,所需的视觉token较少,从而节省计算资源;而对于需要进行大量OCR计算的任务,可以通过提高图像分辨率来分配更多的计算资源。这种灵活性对于那些既需要在高计算资源下对单张图像进行推理,又需要处理包含大量帧的视频,同时通过降低每帧的分辨率来保持合理序列长度的模型非常有益。

大多数视觉编码器的设计是基于相对较低的固定图像分辨率,因此不太适合处理大图像。图像切分策略通过将多个较小的子图像传递给视觉编码器,而不是直接传递原始的大图像,解决了这一问题。由于视觉编码器的权重在每个子图像中共享,这种方法也提高了训练效率。

然而,由于图像的切片并非独立的,单独编码每个切片可能并非最优,可能会导致丧失全局上下文。为了解决这一问题,当前的策略是在切片列表中加入下采样后的原始图像,并将其调整为视觉编码器支持的分辨率。尽管这样有助于保留一些全局上下文,但并不是完美的解决方案,因为原始图像的分辨率较低,难以捕捉更精细的细节,并且其分辨率依赖于原始图像的分辨率。

我们能做得比图像切分策略更好吗?图像切分策略的替代方案以及未来研究的一个有前景的方向是开发一种能够原生处理不同分辨率图像的视觉编码器,包括非常大的图像,而不改变原始宽高比,可能还需要引入一种有效处理长上下文的机制。该模型可以通过使用 Patch’n’Pack (Dehghani et al., 2023) 策略高效地训练,基于原始分辨率为每个图像生成不同数量的视觉token,从而能够直接对整个图像进行编码,无需将其切分成多个子图像。

3 VLM的训练方法和数据集

VLM的训练通常分为多个阶段,主要是由于以下原因:(a)大规模高质量数据的有限可用性,(b)高效训练的内存约束,以及(c)稳定性问题。在这些阶段中,逐步引入更高质量的数据,逐渐增加图像的最大分辨率,并且逐步解冻更多的模型部分。图2展示了训练的关键阶段以及每个阶段使用的数据集类型。如前所述,训练过程从两个单模态预训练骨干模型开始:一个语言模型和一个视觉编码器。

在这里插入图片描述
在这里插入图片描述
温馨提示:
阅读全文请访问"AI深语解构" Idefics3:构建和更好地理解视觉-语言模型:洞察与未来方向

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

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

相关文章

利用DeepSeek解决kdb+x进行tpch测试的几个问题及使用感受

上文其实没有成功运行tpch的22个标准查询中的任何一个,因为DeepSeek原始给出的导入语句有错,有一些表没有导入。 1.解决类型及长度问题导致的插入tbl文件到内存表失败。 kdbx的Reference card()提到的基本数据类型如下: Basic datatypes n …

SGLang 核心技术详解

SGLang 作为一个高性能的 LLM 服务框架,通过一系列先进的优化技术实现了卓越的推理性能。下面详细解释其核心功能组件: 1. RadixAttention 用于前缀缓存 核心概念 RadixAttention 是 SGLang 独创的前缀缓存机制,基于 Radix Tree(基…

精密全波整流电路(四)

精密全波整流电路(四) 背景说明 [[精密半波整流电路|半波整流]]虽然能实现交直流信号的转换,但是半波整流只能保留信号半个周期的能量,导致信号能量的利用率不高。 因此,在一些场合需要使用到全波整流电路。 同样的&…

深入解读Prometheus 2.33 Series Chunks压缩特性:原理与实践

深入解读Prometheus 2.33 Series Chunks压缩特性:原理与实践 随着监控指标规模不断增长,Prometheus的本地TSDB存储压力日益增大。为提升存储效率,Prometheus 2.33引入了Series Chunks压缩特性,对时间序列数据在写入和存储时进行深…

SpringBoot整合Liquibase提升数据库变更的可控性、安全性、自动化程度(最详细)

为什么要使用liquibase?- 团队协作与版本管理- 当多人(或多个小组)并行开发、对同一数据库结构进行变更时,如果仅靠手写 SQL 脚本,很 容易产生冲突或漏掉某些变更。- Liquibase 将所有 DDL/DML 操作以“changeset”形式纳入源码管…

数据写入因为汉字引发的异常

spark 数据写hive表,发生 查询分区异常问题 异常: 25107124 19 26.49 ERROR Hive: MelaException(message.Exception thrown when execuling quey. S ELECT DISTINCT ‘org apache.hadop.hive melastore .modelMpartion As"NUCLEUS TYPE,AONCREATE TIME,AO.LAST ACCE…

Springboot项目实现将文件上传到阿里云

Springboot项目实现将文件上传到阿里云 一、概述二、具体步骤 2.1引入阿里云工具 首先先建utils包,然后引入AliOSSUtils类,如下: package com.hechixueyuan.forestfiredetectionsystem.utils;import com.aliyun.oss.OSS; import com.aliyun.o…

如何理解 TCP 是字节流协议?详解

文章目录一、面向字节流二、粘包问题应用层如何解决粘包问题?一、面向字节流 使用 TCP socket 进行网络编程,Linux 内核会给每个 socket 都分配一个发送缓冲区和一个接收缓冲区 由于缓冲区的存在, TCP 读写不需要一一匹配,例如:…

面试问题总结——关于OpenCV(二)

最近小组在面试视觉算法工程师,顺便整理了一波关于OpenCV的面试题目。 有些知识点也不深入,对于写的不对的地方,欢迎指正。 目录 20.像素梯度如何计算? 21.关于开运算和闭运算的理解 22.开运算和闭运算有什么优缺点? 23.图像插值有哪些? 24.图像金字塔的原理 25.边缘检测…

目标导向的强化学习:问题定义与 HER 算法详解—强化学习(19)

目录 1、目标导向的强化学习:问题定义 1.1、 核心要素与符号定义 1.2、 核心问题:稀疏奖励困境 1.3、 学习目标 2、HER(Hindsight Experience Replay)算法 2.1、 HER 的核心逻辑 2.2、 算法步骤(结合 DDPG 举例…

2025 XYD Summer Camp 7.21 智灵班分班考 · Day1

智灵班分班考 Day1 时间线 8:00 在滨兰实验的远古机房中的一个键盘手感爆炸的电脑上开考。开 T1,推了推发现可以 segment tree 优化 dp,由于按空格需要很大的力气导致马蜂被迫改变。后来忍不住了顶着疼痛按空格。8:30 过了样例,但是没有大样…

基于多种主题分析、关键词提取算法的设计与实现【TF-IDF算法、LDA、NMF分解、BERT主题模型】

文章目录有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主一、项目背景二、研究目标与意义三、数据获取与处理四、文本分析与主题建模方法1. 传统方法探索2. 主题模型比较与优化3. 深度语义建模与聚类五、研究成果与应用价值六、总结与展望总结每文一…

MDC(Mapped Diagnostic Context) 的核心介绍与使用教程

关于日志框架中 MDC(Mapped Diagnostic Context) 的核心介绍与使用教程,结合其在分布式系统中的实际应用场景,分模块说明: 一、MDC 简介 MDC(映射诊断上下文) 是 SLF4J/Logback 提供的一种线程…

Linux随记(二十一)

一、highgo切换leader,follow - 随记 【待写】二、highgo的etcd未授权访问 - 随记 【待写】三、highgo的etcd未授权访问 - 随记 【待写】3.2、etcd的metric未授权访问 - 随记 【待写】四、安装Elasticsearch 7.17.29 和 Elasticsearch 未授权访问【原理扫描】…

Java环境配置之各类组件下载安装教程整理(jdk、idea、git、maven、mysql、redis)

Java环境配置之各类组件下载安装教程整理(jdk、idea、git、maven、mysql、redis)1.[安装配置jdk8]2.[安装配置idea]3.[安装配置git]4.[安装配置maven]5.[安装配置postman]6.[安装配置redis和可视化工具]7.[安装配置mysql和可视化工具]8.[安装配置docker]…

配置https ssl证书生成

1.可用openssl生成私钥和自签名证书 安装opensslsudo yum install openssl -y 2.生成ssl证书 365天期限sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout /etc/ssl/private/nginx-selfsigned.key \-out /etc/ssl/certs/nginx-selfsigned.crt3、按照提示编…

编程语言Java——核心技术篇(四)集合类详解

言不信者行不果,行不敏者言多滞. 目录 4. 集合类 4.1 集合类概述 4.1.1 集合框架遵循原则 4.1.2 集合框架体系 4.2 核心接口和实现类解析 4.2.1 Collection 接口体系 4.2.1.1 Collection 接口核心定义 4.2.1.2 List接口详解 4.2.1.3 Set 接口详解 4.2.1.4…

GaussDB 数据库架构师(八) 等待事件(1)-概述

1、等待事件概述 等待事件:指当数据库会话(session)因资源竞争或依赖无法继续执行时,进入"等待"状态,此时产生的性能事件即等待事件。 2、等待事件本质 性能瓶颈的信号灯,反映CPU,I/O、锁、网络等关键资源的阻塞情况。…

五分钟系列-文本搜索工具grep

目录 1️⃣核心功能​​ ​​2️⃣基本语法​​ 3️⃣​​常用选项 & 功能详解​​ ​​4️⃣经典应用场景 & 示例​​ 5️⃣​​重要的提示 & 技巧​​ ​​6️⃣总结​​ grep 是 Linux/Unix 系统中功能强大的​​文本搜索工具​​,其名称源自 …

Java面试题及详细答案120道之(041-060)

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…