理解时间戳的视频理解大模型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

相关文章
|
机器学习/深度学习 自然语言处理 算法
文本摘要(text summarization)任务:研究范式,重要模型,评估指标(持续更新ing...)
本文是作者在学习文本摘要任务的过程中,根据学习资料总结逐步得到并整理为成文的相关内容。相关学习资料(包括论文、博文、视频等)都会以脚注等形式标明。有一些在一篇内会导致篇幅过长的内容会延伸到其他博文中撰写,但会在本文中提供超链接。 本文将主要列举里程碑式的重要文本摘要论文。 注意:除文首的表格外,本文所参考的论文,如本人已撰写对应的学习博文,则不直接引用原论文,而引用我撰写的博文。 本文会长期更新。
文本摘要(text summarization)任务:研究范式,重要模型,评估指标(持续更新ing...)
|
2月前
|
自然语言处理 算法 JavaScript
面向长文本的多模型协作摘要架构:多LLM文本摘要方法
多LLM摘要框架通过生成和评估两个步骤处理长文档,支持集中式和分散式两种策略。每个LLM独立生成文本摘要,集中式方法由单一LLM评估并选择最佳摘要,而分散式方法则由多个LLM共同评估,达成共识。论文提出两阶段流程:先分块摘要,再汇总生成最终摘要。实验结果显示,多LLM框架显著优于单LLM基准,性能提升最高达3倍,且仅需少量LLM和一轮生成评估即可获得显著效果。
81 10
面向长文本的多模型协作摘要架构:多LLM文本摘要方法
|
2月前
|
人工智能 自然语言处理 数据处理
FlexRAG:不再局限于文本的 RAG!中科院开源多模态 RAG 助手,支持多数据类型、上下文压缩和多种检索器类型
FlexRAG 是中科院推出的高性能多模态 RAG 框架,支持多数据类型、上下文压缩和多模态数据处理,显著提升生成模型的表现。
264 17
FlexRAG:不再局限于文本的 RAG!中科院开源多模态 RAG 助手,支持多数据类型、上下文压缩和多种检索器类型
|
2月前
|
机器学习/深度学习 自然语言处理
NeurIPS 2024:文本图格式大一统!首个大规模文本边基准TEG-DB发布
TEG-DB是NeurIPS 2024发布的全新数据集,首次将丰富的文本描述引入图的边中,填补了现有TAG数据集只关注节点文本信息的空白。该数据集涵盖多个领域,提供全面的节点和边文本描述,助力更深入挖掘实体间上下文关系,提升图结构数据的理解。实验表明,现有技术在利用文本边信息方面仍有提升空间,未来研究需关注文本描述的质量、隐私和伦理问题。论文地址:https://arxiv.org/abs/2406.10310
47 9
|
3月前
|
数据采集 人工智能 自然语言处理
FineWeb 2:开源的多语言预训练数据集,覆盖超过 1000 种语言
FineWeb 2 是由 Hugging Face 推出的多语言预训练数据集,覆盖超过 1000 种语言,支持多种 NLP 任务,如机器翻译和文本分类。该数据集通过定制化的数据处理流程,包括语言识别、去重、内容过滤和 PII 匿名化,提升了多语言模型的性能和泛化能力。
131 5
FineWeb 2:开源的多语言预训练数据集,覆盖超过 1000 种语言
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
Documind:开源 AI 文档处理工具,将 PDF 转换为图像提取结构化数据
Documind 是一款利用 AI 技术从 PDF 中提取结构化数据的先进文档处理工具,支持灵活的本地或云端部署。
162 8
Documind:开源 AI 文档处理工具,将 PDF 转换为图像提取结构化数据
可控细节的长文档摘要,探索开源LLM工具与实践
本文通过将文档分为几部分来解决这个问题,然后分段生成摘要。在对大语言模型进行多次查询后,可以重建完整的摘要。通过控制文本块的数量及其大小,我们最终可以控制输出中的细节级别。
|
7月前
|
自然语言处理
预训练模型STAR问题之开放信息抽取(OpenIE)目标的问题如何解决
预训练模型STAR问题之开放信息抽取(OpenIE)目标的问题如何解决
|
自然语言处理 机器人 API
GPT学术优化 (GPT Academic):支持一键润色、一键中英互译、一键代码解释、chat分析报告生成、PDF论文全文翻译功能、互联网信息聚合+GPT等等
GPT学术优化 (GPT Academic):支持一键润色、一键中英互译、一键代码解释、chat分析报告生成、PDF论文全文翻译功能、互联网信息聚合+GPT等等
|
10月前
|
数据采集 存储 人工智能
【AI大模型应用开发】【LangChain系列】实战案例4:再战RAG问答,提取在线网页数据,并返回生成答案的来源
【AI大模型应用开发】【LangChain系列】实战案例4:再战RAG问答,提取在线网页数据,并返回生成答案的来源
719 0