理解时间戳的视频理解大模型CogVLM2开源!视频生成、视频摘要等任务有力工具!

简介: 随着大型语言模型和多模态对齐技术的发展,视频理解模型在通用开放领域也取得了长足的进步。

 随着大型语言模型和多模态对齐技术的发展,视频理解模型在通用开放领域也取得了长足的进步。然而,目前大多数视频理解模型采用帧平均和视频 token 压缩的方法,导致时间信息丢失,无法准确回答时间相关的问题。另一方面,一些专注于时间问答数据集的模型过度局限于特定的格式和适用领域,导致模型丧失了更通用的问答能力。CogVLM团队引入多帧视频图像和时间戳作为编码器输入,训练了一个新的视频理解模型 — CogVLM2-Video。CogVLM2-Video 不仅在公开的视频理解基准上取得了最佳表现,而且在视频字幕和时间基础方面也表现出色,为后续的视频生成、视频摘要等任务提供了有力的工具。

模型效果:

image.gif

模型架构

目前视频理解的主流思路是利用图像编码器从视频中提取帧,对其进行编码,然后设计编码压缩模块(如时间池化或Q-Former模块)对视频编码信息进行压缩,再输入大型语言模型(LLM)与文本输入进行联合理解。虽然这种方法可以有效压缩视频信息,但是却导致模型丧失时间感知能力,无法将视频帧与精确的时间戳准确关联,从而导致模型缺乏时间定位、时间戳检测和关键时刻总结能力。此外,利用现有的时间基础标注数据训练的视频理解模型受限于数据范围和固定的问答格式,缺乏开放域问答和处理能力。

针对这些问题,研究团队提出了基于CogVLM2图像理解模型的扩展视频模型CogVLM2-Video。这个模型不仅在开放域问答中取得了很好的表现,而且还能感知视频中的时间戳信息,从而实现时间定位和相关的问答。具体来说,CogVLM2-Video从输入的视频片段中提取帧,并用时间戳信息进行注释,从而使后续的语言模型能够准确地知道原始视频中每一帧对应的确切时间。下图显示了CogVLM2-Video的整体架构:

image.gif

代码链接:

https://github.com/THUDM/CogVLM2

模型链接:

https://modelscope.cn/models/ZhipuAI/cogvlm2-video-llama3-chat

模型体验

创空间链接:https://modelscope.cn/studios/ZhipuAI/Cogvlm2-Video-Llama3-Chat-Demo

image.gif

模型推理

环境安装

pip install transformers==4.41.*
#pip uninstall pytorchvideo
pip install git+https://github.com/facebookresearch/pytorchvideo.git
pip install decord

image.gif

运行代码

git clone https://github.com/THUDM/CogVLM2.git
cd CogVLM2/video_demo
python cli_video_demo.py

image.gif

显存占用:

image.gif

模型微调

我们使用ms-swift对CogVLM2-Video-Llama-Chat进行微调。swift是魔搭社区官方提供的LLM工具箱,支持300+大语言模型和50+多模态大模型的微调、推理、量化、评估和部署。

ms-swift对CogVLM2-Video-Llama-Chat推理与微调的最佳实践可以查看:https://github.com/modelscope/swift/blob/main/docs/source/Multi-Modal/cogvlm2-video%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.md

通常,多模态大模型微调会使用自定义数据集进行微调。在这里,我们将展示可直接运行的demo。我们使用 video-chatgpt 数据集进行微调,该数据集的任务是对图片内容进行描述。您可以在 modelscope 上找到该数据集:https://modelscope.cn/datasets/huangjintao/VideoChatGPT

在开始微调之前,请确保您的环境已正确安装:

# 安装ms-swift
git clone https://github.com/modelscope/swift.git
cd swift
pip install -e .[llm]
pip install "transformers==4.41.*"
# https://github.com/facebookresearch/pytorchvideo/issues/258
# https://github.com/dmlc/decord/issues/177
pip install decord pytorchvideo

image.gif

LoRA微调脚本如下所示。该脚本默认只对LLM的qkv进行lora微调,如果你想对所有linear层都进行微调,可以指定--lora_target_modules ALL。

# Experimental environment: A100
# 40GB GPU memory
CUDA_VISIBLE_DEVICES=0 swift sft \
    --model_type cogvlm2-video-13b-chat \
    --model_id_or_path ZhipuAI/cogvlm2-video-llama3-chat \
    --dataset video-chatgpt \
    --num_train_epochs 3
# ZeRO2
# Experimental environment: 4 * A100
# 4 * 40GB GPU memory
NPROC_PER_NODE=4 \
CUDA_VISIBLE_DEVICES=0,1,2,3 swift sft \
    --model_type cogvlm2-video-13b-chat \
    --model_id_or_path ZhipuAI/cogvlm2-video-llama3-chat \
    --dataset video-chatgpt \
    --num_train_epochs 3 \
    --deepspeed default-zero2

image.gif

微调显存消耗:

image.gif

微调过程的loss可视化:

image.gif

如果要使用自定义数据集,只需按以下方式进行指定:

# val_dataset可选,如果不指定,则会从dataset中切出一部分数据集作为验证集
--dataset train.jsonl \
--val_dataset val.jsonl \

image.gif

自定义数据集支持json和jsonl样式。CogVLM2-Video-Llama-Chat支持多轮对话,但总的对话轮次中需包含一张图片, 支持传入本地路径或URL。以下是自定义数据集的示例:

{"query": "55555", "response": "66666", "videos": ["video_path"]}
{"query": "eeeee", "response": "fffff", "history": [], "videos": ["video_path"]}
{"query": "EEEEE", "response": "FFFFF", "history": [["AAAAA", "BBBBB"], ["CCCCC", "DDDDD"]], "videos": ["video_path"]}

image.gif

微调后推理脚本如下,这里的ckpt_dir需要修改为训练生成的checkpoint文件夹:

CUDA_VISIBLE_DEVICES=0 swift infer \
    --ckpt_dir output/cogvlm2-video-13b-chat/vx-xxx/checkpoint-xxx \
    --load_dataset_config true \

image.gif

你也可以选择merge lora并进行推理:

CUDA_VISIBLE_DEVICES=0 swift export \
    --ckpt_dir output/cogvlm2-video-13b-chat/vx-xxx/checkpoint-xxx \
    --merge_lora true
CUDA_VISIBLE_DEVICES=0 swift infer \
    --ckpt_dir output/cogvlm2-video-13b-chat/vx-xxx/checkpoint-xxx-merged \
    --load_dataset_config true

image.gif

微调后模型对验证集进行推理的示例:

  image.gif

相关文章
|
5月前
|
分布式计算 测试技术 Spark
科大讯飞开源星火化学大模型、文生音效模型
近期,科大讯飞在魔搭社区(ModelScope)和Gitcode上开源两款模型:讯飞星火化学大模型Spark Chemistry-X1-13B、讯飞文生音频模型AudioFly,助力前沿化学技术研究,以及声音生成技术和应用的探索。
475 2
|
5月前
|
人工智能 缓存 监控
使用LangChain4j构建Java AI智能体:让大模型学会使用工具
AI智能体是大模型技术的重要演进方向,它使模型能够主动使用工具、与环境交互,以完成复杂任务。本文详细介绍如何在Java应用中,借助LangChain4j框架构建一个具备工具使用能力的AI智能体。我们将创建一个能够进行数学计算和实时信息查询的智能体,涵盖工具定义、智能体组装、记忆管理以及Spring Boot集成等关键步骤,并展示如何通过简单的对话界面与智能体交互。
1741 1
|
6月前
|
人工智能 算法 开发者
开源VLM“华山论剑”丨AI Insight Talk多模态专场直播预告
开源VLM“华山论剑”丨AI Insight Talk多模态专场直播预告
577 10
开源VLM“华山论剑”丨AI Insight Talk多模态专场直播预告
|
5月前
|
存储 编解码 监控
针对3-15分钟视频的抽帧策略:让Qwen2.5 VL 32B理解视频内容
针对3-15分钟视频,提出高效抽帧策略:通过每5-10秒定间隔或关键帧检测方法,提取30-100帧关键图像,结合时间均匀采样与运动变化捕捉,降低冗余,提升Qwen2.5 VL 32B对视频内容的理解效率与准确性。
|
5月前
|
机器学习/深度学习 数据采集 人工智能
通义实验室Mobile-Agent-v3开源,全平台SOTA的GUI智能体,支持手机电脑等多平台交互
近日,通义实验室MobileAgent团队正式开源全新图形界面交互基础模型 GUI-Owl,并同步推出支持多智能体协同的自动化框架 Mobile-Agent-v3。该模型基于Qwen2.5-VL打造,在手机端与电脑端共8个GUI任务榜单中全面刷新开源模型性能纪录,达成全平台SOTA。
1686 2
|
5月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
2308 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
843 13
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型

热门文章

最新文章