MA-LMM
通过记忆银行机制让大模型在有限显存下处理任意时长视频的CVPR 2024论文开源实现
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
通过记忆银行机制让大模型在有限显存下处理任意时长视频的CVPR 2024论文开源实现
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:MA-LMM 模型架构图,核心创新在于 Memory Bank 模块
你有没有过这样的经历——刷到一部两小时的电影解说,必须分段看完才能理解剧情?人类可以轻松做到,但传统多模态AI却很难。一段10分钟的视频,它能描述开头发生了什么、结尾发生了什么,但中间的情节推进、人物关系变化、情感起伏,这些"长程依赖"的信息——它记不住,也串不起来。
这正是CVPR 2024论文 MA-LMM(Memory-Augmented Large Multimodal Model) 要解决的问题:由 Bo He、Hengduo Li 等研究者提出的这个框架,核心创新是引入 Memory Bank(记忆银行)机制,让大模型在处理超长视频时不会"失忆"。
视频理解是计算机视觉的核心难题之一。近年来,大语言模型(LLM)和多模态模型的快速发展,让图文理解能力大幅提升,但在长视频领域仍然存在显著瓶颈。
核心痛点有两个:
MA-LMM 的解决方案是参考人类记忆机制——我们不会记住视频的每一帧,但会提取关键信息存储为"记忆",需要时再调用。 这就是 Memory Bank 的设计哲学。
MA-LMM 基于 InstructBLIP 框架进行改造,保留了其图文预训练能力,同时新增了 Memory Bank 模块。核心流程如下:
视频帧处理阶段:MA-LMM 首先使用预训练的视觉编码器(如 EVA-CLIP)逐帧提取视觉特征。由于未使用视频特有的时序建模,这些特征是"压缩"的——它们不追求逐帧精确,而是提炼空间信息。
记忆存储与压缩阶段(核心创新):这些视觉 token 被存入 Memory Bank。当 Bank 容量满时,MA-LMM 使用一种压缩算法(位于 lavis/models/blip2_models/blip2.py 的 forward 方法中)将多个 token 聚合为一个代表向量,释放空间。这个过程模拟了人类记忆的"遗忘与提炼"——不是删除,而是抽象化。
记忆检索与生成阶段:当 LLM(Vicuna-7B/13B)需要回答问题或生成描述时,它可以从 Memory Bank 中检索相关的记忆片段,结合当前帧的视觉信息,生成连贯的文本输出。
这一设计使得 MA-LMM 能够理论上处理无限长度的视频——因为 Memory Bank 的容量是固定的,计算复杂度被严格控制在可承受范围内。
MA-LMM 在多个标准视频理解任务上取得了 state-of-the-art(SOTA)结果:
| 任务 | 数据集 | 成绩 |
|---|---|---|
| 视频分类 | Breakfast | PWC 第一 |
| 视频分类 | COIN | PWC 第一 |
| 视频问答 | MSVD-QA | PWC 第一 |
| 视频问答 | MSRVTT-QA | PWC 第一 |
| 视频字幕 | YouCook2 | PWC 第一 |
尤其值得注意的是,MA-LMM 在零样本(Zero-shot) 设置下也表现出色——即不针对特定数据集微调,直接用预训练模型评估。这证明了 Memory Bank 学到的视觉-语言对齐具有很强的泛化能力。
MA-LMM 的代码基于 Salesforce LAVIS 框架开发,这是一个专为多模态学习设计的统一代码库。项目结构清晰:
lavis/:核心模型库,包含 BLIP2 模型实现(支持 Vision Encoder + LLM 的组合)、处理器(图像/视频特征提取)、任务定义等app/:Streamlit Web 演示界面,支持图像描述生成、多模态搜索、视觉问答、图像文本匹配、文本定位、分类等 6 个功能模块run_scripts/:各数据集(LVU、Breakfast、COIN、MSRVTT、MSVD、ActivityNet、YouCook2)的训练和测试脚本data/:数据下载脚本和视频帧提取工具train.py / evaluate.py:基于 LAVIS Config 系统的统一训练/评估入口代码大量依赖 fairscale(分布式训练)、transformers(HuggingFace 模型库)、timm(视觉 backbone)、decord(视频读取)等主流库,整体工程化程度较高。
部署难度:较高。官方未提供 Dockerfile,需手动安装所有依赖(包括 PyTorch、transformers、fairscale 等),并手动下载预训练的 Vicuna 权重(需自行申请)和视频数据集(总量可能超过 100GB)。训练环节还需 4×A100 的分布式环境。
Web Demo:项目提供了基于 Streamlit 的交互式演示页面(app/main.py),包含 6 个功能入口。运行 python app/main.py 即可启动,本地体验模型能力相对友好,但前提是已经正确配置了模型权重和依赖。
环境准备建议:
decord 替换为 eva-decord尽管 MA-LMM 取得了亮眼的成绩,但也存在一些值得关注的问题:
Memory Bank 压缩算法的信息损失:虽然聚合 token 减轻了计算压力,但不可避免地丢失了部分细粒度信息,对于需要精确时序定位的任务(如"视频第30秒发生了什么")可能表现一般。
依赖专有模型 Vicuna:Vicuna 权重需要额外申请,不完全开源,在商业应用中可能存在许可证风险。
缺乏官方 Docker 支持:对比同期多模态项目,MA-LMM 在部署便捷性上落后不少,限制了其在更广泛开发者群体中的普及。
视频预处理门槛高:需用 ffmpeg 提取帧,且不同 ffmPEG 版本导致帧数不一致,注释文件需要手动调整,实际上手成本不低。
MA-LMM 提出的 Memory Bank 范式,为长视频理解提供了一条新思路——不是单纯扩大上下文窗口,而是通过主动的记忆管理来突破长度限制。这种"类人记忆"的设计哲学,可能会成为未来长程视频/多模态模型的重要方向之一。
随着多模态大模型(GPT-4V、Gemini、LLaVA等)的持续进化,视频理解正成为下一个主战场。MA-LMM 作为 2024 CVPR 论文,在学术界已获得广泛认可,其 Memory Bank 思想也正在被后续工作所借鉴和扩展。