license: apache-2.0
language:
- en
- zh
pipeline_tag: video-text-to-text
袋鼠:支持长视频输入的强大视频语言模型
袋鼠模型正式发布。详情请参阅我们的论文、博客和GitHub。
摘要
我们推出袋鼠——一个专为长视频理解设计的强大多模态大语言模型。该模型在视频描述、问答和对话等多样化视频理解任务中展现出卓越性能。本工作的核心贡献可归纳为:
- 长视频输入支持。 通过将最大输入帧数扩展至160帧,我们提升了模型理解长视频的能力。为此,我们创新性地将不同帧数和宽高比的视频聚合为单一样本,并设计了时空分块模块以提升训练效率。
- 卓越性能表现。 在多个视频理解基准测试中,我们的模型在大多数综合基准上达到最先进水平,其余基准也保持竞争力。值得注意的是,在某些测试中,我们的模型性能超越了多数参数量超300亿的开源模型及部分商业模型。
- 视频标注系统。 我们开发了数据筛选与自动标注系统,为开源及内部视频生成描述文本。生成的大规模数据集被用于视频-文本预训练。在指令微调阶段,我们基于公开和内部数据集构建了覆盖多任务的视频指令数据集。
- 双语对话能力。 该模型具备中英文双语对话能力,支持单轮/多轮对话范式。
快速开始
安装指南
请访问我们的GitHub页面
使用🤗 Transformers进行多轮对话
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("KangarooGroup/kangaroo")
model = AutoModelForCausalLM.from_pretrained(
"KangarooGroup/kangaroo",
torch_dtype=torch.bfloat16,
trust_remote_code=True,
)
model = model.to("cuda")
terminators = [tokenizer.eos_token_id, tokenizer.convert_tokens_to_ids("<|eot_id|>")]
video_path = "/path/to/video"
query = "请简要描述视频内容。"
out, history = model.chat(video_path=video_path,
query=query,
tokenizer=tokenizer,
max_new_tokens=512,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,)
print('助手回复: \n', out)
query = "视频结尾发生了什么?"
out, history = model.chat(video_path=video_path,
query=query,
history=history,
tokenizer=tokenizer,
max_new_tokens=512,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,)
print('助手回复: \n', out)
引用
若您的研究工作受益于此项目,请使用以下BibTeX引用相关论文/博客:
@misc{kangaroogroup,
title={袋鼠:支持长视频输入的强大视频语言模型},
url={https://kangaroogroup.github.io/Kangaroo.github.io/},
author={刘佳俊 and 王艺冰 and 马航航 and 吴晓平 and 马晓琪 and 胡杰},
month={7月},
year={2024}
}