点击下方卡片,关注「魔方AI空间」公众号
Oryx :一种统一的多模态架构,用于图像、视频和多视角 3D 场景的时空理解。Oryx 提供按需解决方案,通过两个核心设计无缝、高效地处理任意空间大小和时间长度的视觉输入:
1. 预训练的 OryxViT 模型,可以将任何分辨率的图像编码为LLM友好的视觉表示;
2. 动态压缩器模块,支持根据请求对视觉 token 进行 1 倍到 16 倍的压缩。
得益于这些设计,Oryx 可以容纳极长的视觉上下文,例如低分辨率和高压缩的视频,同时保持高识别精度,以执行原始分辨率和无压缩的文档理解等任务。
项目主页:https://oryx-mllm.github.io/
引言
多模态大模型(MLLMs)在处理和整合视觉和语言输入以生成连贯且上下文相关的响应方面取得了显著进展。像 OpenAI 这样的专有模型展示了MLLMs的尖端能力。同时,开源社区正在积极通过增强其理解多样化视觉内容的能力来推进MLLMs的发展。
随着MLLMs变得越来越强大,对于更通用和统一的多模态模型需求日益增长,这些模型能够处理更多样化的视觉内容,并完成更具挑战性的多模态理解问题。
如何在多模态大模型(MLLMs)中实现图像、视频和多视图3D场景的空间-时间理解,并且能够按需处理任意分辨率和时长的视觉输入。
该问题的研究难点包括:现有方法通常将不同分辨率的视觉输入标准化为固定分辨率,这会导致信息丢失和效率低下;处理极长视觉上下文(如视频)时,需要在保持高识别精度的同时进行高效压缩。
早期的MLLMs尝试将所有视觉输入标准化为固定分辨率,最近的研究引入了动态分区技术来处理高分辨率图像,但这些方法仍然存在信息丢失和效率问题。
方法概述
Oryx,用于解决多模态理解中的空间-时间理解问题。具体来说:
OryxViT模型:提出一个预训练的OryxViT模型,该模型能够在任意分辨率下将图像编码为LLM友好的视觉表示。OryxViT模型采用了自适应位置嵌入和可变长度自注意力机制,能够并行处理不同大小的视觉数据。 动态压缩模块:提出一个动态压缩模块,支持在1倍到16倍的范围内对视觉令牌进行压缩。通过共享投影器融合信息,实现了从1倍到16倍的平滑切换。具体来说,视觉上下文被分类为纯图像、短视频和长视频,分别应用不同的下采样层,长视频的令牌长度减少到图像的1/16。 统一模型:Oryx模型能够处理图像、视频和3D数据的理解任务。通过引入粗略对应关系,使Oryx具备3D空间感知能力。长时视频训练采用了“针在干草堆里”的方法,通过生成包含目标帧的视频样本来训练模型。
实验细节
数据收集:训练数据包括来自多个视觉-语言任务的图像对,如字幕生成、OCR、视觉问答等。长时视频训练数据来自MovieNet数据集,视频样本平均时长为45分钟。
训练阶段:训练过程分为两个阶段。第一阶段仅使用图像数据进行文本-图像预训练和监督微调,使用LLaVA-1.5数据集中的558k图像进行动态压缩模块的预训练。第二阶段联合训练图像、视频和3D数据,使用约1.2M的额外数据。
超参数配置:在预训练阶段,使用256的总批量大小和1e-3的学习率。在监督微调阶段,使用128的总批量大小和2e-5(Oryx-7B)和1e-5(Oryx-34B)的学习率。
实验结果分析
一般时序理解:在多个选择基准测试中,Oryx模型表现出色,超过了多种现有的开源视频MLLMs。例如,在VideoMME基准测试中,Oryx-7B模型的准确率为62.6%,Oryx-34B模型的准确率为67.4%。
长时视频理解:在长时视频理解基准测试中,Oryx模型也表现出色,特别是在处理极长视频内容时。例如,在MLVU基准测试中,Oryx-34B模型的准确率为70.8%,比72B参数的模型高出4.4%。
2D和3D空间理解:在图像理解基准测试中,Oryx模型保持领先地位,例如在MMBench基准测试中的平均准确率为81.4%。在3D空间理解基准测试中,Oryx模型不仅超过了专门的3D模型,还超过了最近更新的通用MLLMs。
总结
Oryx系列模型,旨在处理多样化的视觉输入,支持按需处理不同的空间大小和时间长度。Oryx模型通过创新的OryxViT架构、动态压缩模块和强大的联合训练策略,在广泛的图像、视频和3D基准测试中展示了出色的性能。
希望这项工作能为未来的多模态学习和更通用的MLLMs的发展提供新的视角。
项目部署
克隆仓库
git clone https://github.com/Oryx-mllm/oryx
cd oryx
安装基础依赖环境
conda create -n oryx python=3.10 -y
conda activate oryx
pip install --upgrade pip
pip install -e
准备训练数据(即将发布)
训练
在自己环境中修改脚本中的以下行:
export PYTHONPATH=/PATH/TO/oryx:$PYTHONPATH
VISION_TOWER='oryx_vit:PATH/TO/oryx_vit_new.pth'
DATA="PATH/TO/DATA.json"
MODEL_NAME_OR_PATH="PATH/TO/7B_MODEL"
训练 Oryx-7B
bash scripts/train_oryx_7b.sh
训练 Oryx-34B
bash scripts/train_oryx_34b.sh
构建快速演示Demo
下载 Oryx 和 Oryx-ViT 模型:
Oryx模型地址:https://huggingface.co/collections/THUdyh/oryx-66ebe5d0cfb61a2837a103ff
Oryx-ViT 模型地址:https://huggingface.co/THUdyh/Oryx-ViT
将 config.json 中 “mm_vision_tower” 的路径替换为 Oryx-ViT 的本地路径 修改模型路径并使用自己的视频运行推理脚本
python inference.py
提炼关键问题
问题1:Oryx模型中的OryxViT模型是如何实现任意分辨率下的图像编码的?
OryxViT模型通过引入自适应位置嵌入和可变长度自注意力机制,实现了在任意分辨率下的图像编码。具体来说,OryxViT模型首先将原始视觉输入调整为与最大目标输入尺寸相匹配的尺寸,然后通过自适应位置嵌入矩阵将这些输入转换为适合Transformer处理的格式。由于视觉输入的尺寸可能不同,OryxViT模型采用了一种灵活的解决方案,使得视觉块可以在批处理模式下并行处理,从而保持与传统固定分辨率视觉编码器相当的前向速度。
问题2:Oryx模型中的动态压缩模块是如何实现视觉令牌的压缩的?其效果如何?
Oryx模型中的动态压缩模块通过在不同压缩比率下应用下采样层来实现视觉令牌的压缩。具体来说,视觉上下文被分类为纯图像、短视频和长视频,分别应用不同的下采样层,长视频的令牌长度减少到图像的1/16。为了缓解下采样带来的信息损失,Oryx模型采用了一种注意力操作,使得低分辨率特征图与高分辨率特征图之间可以进行交互。通过这种设计,Oryx模型能够在保持高识别精度的同时,实现对极长视觉上下文的高效压缩。实验结果表明,Oryx模型在长时视频理解基准上表现出色,例如在MLVU基准上,Oryx-34B模型的平均准确率为70.8%,比72B参数的模型高出4.4%。
问题3:Oryx模型在处理长时视频理解任务时采用了哪些特殊的数据增强方法?
Oryx模型在处理长时视频理解任务时采用了“针在干草堆里”的方法。具体来说,Oryx模型从MovieNet数据集中选择视频样本,这些视频样本平均时长为45分钟。为了训练模型识别特定信息,研究人员设计了两种任务:字幕生成和帧间差异识别。字幕生成任务要求模型为特定索引的帧生成字幕,而帧间差异识别任务则要求模型识别两个给定索引帧之间的差异。这些带有字幕的帧被重新插入到整体电影序列中,确保训练数据保持上下文完整性。通过这种数据增强方法,Oryx模型能够有效地处理极长视频内容,并在长时视频理解基准上取得优异的表现。
技术交流
加入「AIGCmagic社区」群聊,一起交流讨论,涉及 AI视频、AI绘画、Sora技术拆解、数字人、多模态、大模型、传统深度学习、自动驾驶等多个不同方向,可私信或添加微信号:【m_aigc2022】,备注不同方向邀请入群!!
推荐阅读
• 半年耕耘,《AIGCmagic社区知识星球》重磅升级!限量活动中!
• MiniCPM-V 2.0: 具备领先OCR和理解能力的高效端侧多模态大模型
• 多模态大模型:Video-LLaVA2 视频和图像的智能理解系统
• 多模态大模型:LLaVA-OneVision 轻松实现视觉任务迁移 | 单图、多图和视频理解
• 开源项目|多模态大模型:Show-o 统一多模态理解和生成
• 开源项目 | 多模态大模型VideoLLaMB:长上下文视频理解新框架