Video-ChatGPT
让大模型真正「看懂」视频:ACL 2024录用的里程碑视频对话模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让大模型真正「看懂」视频:ACL 2024录用的里程碑视频对话模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:Video-ChatGPT 在视频对话任务上的 Demo 效果演示,涵盖动作识别、创造性生成、空间理解等多个维度。
想象这样一个场景:你上传了一段篮球比赛视频,问 AI:「这个球员最后时刻做了什么关键决策?」传统视频问答模型只能回答「球员在投篮」这样的表层描述,而 Video-ChatGPT 能够像一位资深解说员一样,告诉你这个球员如何跑位、队友如何配合、最后投篮的弧线和结果如何。
这背后是阿联酋人工智能大学(MBZUAI)研究团队在 2023 年做出的重要突破——Video-ChatGPT。这个模型将大语言模型(LLM)的推理能力与视觉编码器的时空理解能力深度融合,让 AI 第一次能够就视频内容进行连贯、深入的多轮对话。该论文被 ACL 2024(自然语言处理顶级会议)正式录用,标志着视频-语言多模态领域的一个重要里程碑。
Video-ChatGPT 的核心架构可以类比为一套「视觉翻译系统」:CLIP 视觉编码器负责「看懂」视频的每一帧,将像素信息转换为特征向量;投影层(Projection Layer)将这些视觉特征「翻译」为语言模型能理解的表示;最后由 LLaMA-7B 大语言模型基于翻译后的视觉 token 生成自然语言回答。
这个过程中,最关键的技术创新在于时空特征融合(Spatio-Temporal Feature Fusion)。CLIP 视觉编码器逐帧提取空间特征后,Video-ChatGPT 额外设计了时序建模机制:将时间维度上相邻帧的视觉特征进行聚合,形成兼具时间和空间维度的视频表征。这使得模型不仅能理解「画面里有什么」,更能理解「发生了什么、怎么发生的」。
具体而言,代码实现中 get_spatio_temporal_features_torch() 函数负责这一融合过程:沿时间轴对每帧特征取均值得到「时间 token」,沿空间轴取均值得到「空间 token」,两者拼接后形成 356 个 video token,注入 LLM 进行生成。
高质量的训练数据是多模态模型成功的关键。Video-ChatGPT 团队构建了 VideoInstruct-100K 数据集,包含 10 万条视频-指令-回答三元组,覆盖动作识别、时间推理、空间关系、因果解释等多种类型的视频理解任务。数据生成采用了半自动化标注流水线(semi-automatic annotation pipeline),结合人类审核确保回答质量。
这个数据集现已开源发布在 HuggingFace(MBZUAI/VideoInstruct-100K),方便社区在此基础上继续微调和改进。后续发布的 VideoGPT+ 和 VCGBench-Diverse 基准进一步扩展了评估维度,涵盖 18 个视频类别、4354 个问答对,形成了更全面的评测体系。
Video-ChatGPT 提供了一套完整的工具链,涵盖从推理到评估的全流程:
推理推理:支持单视频推理(single_video_inference.py)、批量推理和 Gradio Web Demo。Web Demo 基于 Gradio 框架,支持上传视频文件、输入自然语言问题、实时返回 AI 生成的回答,并提供点赞/点踩反馈机制。
量化评估:内置 VCGBench 基准评测,包含五个核心维度——信息正确性(Correctness)、细节导向(Detail Orientation)、上下文理解(Contextual Understanding)、时序理解(Temporal Understanding)和一致性(Consistency)。在 ActivityNet-200 等标准数据集上,Video-ChatGPT 在五项指标中的四项取得了最高分。
零样本问答评测:支持 MSVD-QA、MSRVTT-QA、TGIF-QA、ActivityNet-QA 等多个视频问答数据集的零样本评估,无需在目标数据集上微调即可直接测试模型泛化能力。
部署 Video-ChatGPT 面临两个主要门槛。首先是硬件要求:模型加载需要约 32GB 显存(fp16),因为 LLaMA-7B 本身需要约 14GB,CLIP 视觉编码器约 2GB,加上推理过程中的中间激活值,16GB 显存的消费级 GPU(如 RTX 3090)勉强能跑但已无余量,推荐使用 A100 或同级别专业 GPU。
其次是模型权重获取:LLaVA-7B-Lightening-v1-1 基座模型和 Video-ChatGPT 投影权重均需单独下载,权重文件较大(7B 参数约 14GB),且下载链接不稳定(依赖 OneDrive 共享或邮件申请)。这使得项目的开箱即用性大打折扣,是该项目的最大痛点。
好在代码本身组织清晰,requirements.txt 明确列出了所有依赖,模型初始化逻辑封装在 initialize_model() 函数中,开发者只需指定模型路径即可运行。Gradio Web UI 的部署也较为标准,有相关经验的开发者可以较顺利完成。
Video-ChatGPT 的发布在多模态 AI 社区引发了广泛关注。GitHub Star 超过 1500,项目衍生出多个后续工作:
作者团队来自 MBZUAI(阿联酋人工智能大学),指导教师为 Salman Khan 教授和 Fahad Khan 副教授,两位均为计算机视觉领域的知名学者,研究成果广泛发表于 CVPR、ICCV、ECCV 等顶会。
Video-ChatGPT/
├── video_chatgpt/
│ ├── model/ # 核心模型:VideoChatGPTLlamaForCausalLM
│ │ ├── video_chatgpt.py # 模型主类定义
│ │ └── utils.py # 工具函数
│ ├── eval/ # 推理与评估
│ │ ├── model_utils.py # 模型加载、initialize_model()
│ │ └── run_inference_*.py # 各任务推理脚本
│ ├── demo/ # Gradio Web UI
│ │ ├── video_demo.py # Gradio 应用主入口
│ │ ├── chat.py # 对话逻辑
│ │ └── template.py # UI 样式
│ ├── train/ # 训练代码
│ │ ├── train.py # 主训练脚本
│ │ └── llama_flash_attn_monkey_patch.py # Flash Attention 优化
│ ├── inference.py # 推理核心函数
│ └── video_conversation.py # 对话模板管理
├── docs/ # 文档与示例
├── quantitative_evaluation/ # 量化评估基准代码
└── requirements.txt # 依赖列表
当前版本的主要局限包括:长视频处理能力有限(固定采样 100 帧),依赖外部视频解码库(decord),以及模型权重获取流程不够自动化。这些也是后续改进工作的方向。
总体而言,Video-ChatGPT 代表了视频理解与大型语言模型融合的一个重要方向,为构建更强大的视频对话系统奠定了基础。其完整的数据集、评测基准和开源代码,也为社区提供了宝贵的研究起点。