English | 简体中文
文章 "MMFuser: Multimodal Multi-Layer Feature Fuser for Fine-Grained Vision-Language Understanding" 的官方实现。
- [10月 16, 2024] 论文已在arXiv发布!
- [5月 30, 2024] 🔥🔥🔥 源码已经发布。
与以前的体系结构相比: (a) 仅CLIP:仅使用单层视觉特征,例如倒数第二层; (b) 混合:集成多个视觉编码器以增强图像表示; (c) MMFuser(我们的):一个多层特征融合模块,用于处理来自视觉主干不同层的图像特征(如CLIP)。
MMFuser是为多模态多层特征融合而设计的,它可以增强MLLMs的视觉表示。我们发现,CLIP最后几层的功能虽然与文本对齐,但缺乏详细信息。而与之相对的是,来自浅层和中间层的输出特征包含更多的图像细节,但语义对齐较差。因此,我们的MMFuser使用CLIP最后层的输出特征作为查询(Q),使用浅层和中间层的特征作为键(K)和值(V),来改善前面几层的语义对齐程度。通过应用注意力机制,我们融合了多层特征,以获得丰富详细并和文本对齐的图像表示。
不同模型大小的性能比较。 (左)与包括 Qwen-VL-Chat、LLaVA-1.5-7B 在内的 7B 模型相比,我们的模型在 12 个基准测试中的 11 个上实现了 SoTA。 (右)与包括 InstructBLIP、LLaVA-1.5-13B 在内的 13B 模型相比,我们的模型在 12 个基准测试中的 10 个上实现了 SoTA。
与传统 VQA 基准测试和最近的多模式基准测试上最先进的 VLLM 进行比较。最佳结果以 粗体 标记,第二好结果以 下划线 标记。
加入MMFuser后,LLaVA-1.5的性能得到了大幅提升,在多个基准测试中超越了LLaVA-1.5。 其中,在Vizwiz、MME和MMBench上的得分分别为57.4、 1585.2和69.9,分别比LLaVA-1.5高出3.8分、53.9分和2.2分。
OCRBench 是一个全面的 OCR 基准,包含 1,000 条手动整理和校正的 OCR 相关 VQA 指令。如表所示,我们的模型有 7B 和 13B 个参数,与 LLaVA-1.5 相比平均提高了 15 分。
为了评估区域理解和基础能力,我们在两个具有代表性的区域级任务上评估了 MMFuser。
-
区域字幕结果 在区域字幕任务中,我们的模型显示出显着的改进。如表所示,与 LLaVA-1.5 相比,MMFuser 的 7B 模型平均比 LLaVA-1.5 提高了 2.5 分,而 13B 版本则提高了 3.9 分。
-
指称表达理解 (REC) 的结果 如表所示,我们的模型在指称表达理解基准测试中始终优于 LLaVA-1.5 模型,与 LLaVA-1.5-7B 相比,7B 模型的平均改进尤其显著,为 5.7 分。
为了直观地验证 MMFuser 对视觉特征的影响,我们在图中展示了四个示例图像的输入和输出特征图可视化。
-
克隆此存储库并切换到MMFuser文件夹
git clone [email protected]:yuecao0119/MMFuser.git cd MMFuser
-
安装程序包
我们的项目基于LLaVA-1.5并根据LLaVA-1.5安装创建相关环境。
conda create -n MMFuser python=3.10 -y conda activate MMFuser pip install --upgrade pip # enable PEP 660 support pip install -e .
-
安装其他软件包
安装Flash-Attention:
pip install -e ".[train]" pip install flash-attn==2.3.6 --no-build-isolation
在我们的项目中使用了Deformation-DETR中的可变形注意力机制。需要运行以下脚本编译CUDA算子:
cd llava/model/multimodal_projector/deformable_attention/ops sh ./make.sh # unit test python test.py
我们的训练管线和数据集直接取自LLaVA-v1.5. 训练包括两个阶段:
- 预训练: 在~558K图像-文本对的子集上训练projector,以连接冻结的预训练视觉编码器和冻结的大语言模型。
sh scripts/mmfuser/pertrain.sh
- 指令微调: 利用多模态指令数据LLaVA-665K对整个MLLM进行微调。
sh scripts/mmfuser/finetune.sh
我们遵循LLaVA-v1.5进行评估。您应该下载eval.zip,并将其解压缩到./playground/data/eval
。请参考Evaluation.md准备数据。
然后,您可以在scripts/v1_5/eval
中运行我们的评估脚本。
并且您可以通过以下代码进行模型推理:
sh scripts/mmfuser/inference.sh
- LLaVA :我们基于该代码库改进。
- 该项目的大部分内容都是在LICENSE文件中的Apache 2.0许可证下发布的。
- 该服务是一个仅用于非商业用途的研究预览,受LLaMA的License模型和OpenAI生成的数据的Terms of Use约束。如果您发现任何潜在的违规行为,请与我们联系。
如果这项工作对您的研究有帮助,请考虑引用以下 BibTeX 条目。
@article{cao2024mmfuser,
title={MMFuser: Multimodal Multi-Layer Feature Fuser for Fine-Grained Vision-Language Understanding},
author={Cao, Yue and Liu, Yangzhou and Chen, Zhe and Shi, Guangchen and Wang, Wenhai and Zhao, Danhuai and Lu, Tong},
journal={arXiv preprint arXiv:2410.11829},
year={2024}
}