当前位置: 首页 > news >正文

Video-XL:智源研究院开源超基准测试的长视频理解大模型

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. Video-XL 是由智源研究院联合多所高校开发的长视频理解大模型。
  2. 该模型能在单块 80G GPU 上处理 2048 帧视频,并在多个基准测试中表现优异。
  3. Video-XL 适用于电影摘要、监控异常检测和广告投放识别等实际应用场景。

正文(附运行示例)

Video-XL 是什么

在这里插入图片描述

Video-XL 是一款创新性的长视频理解大模型,由智源研究院联合上海交通大学、中国人民大学、北京大学等多所高校开发。该模型专门设计用于小时级视频的分析和理解,突破了传统模型在处理长视频时的性能瓶颈。

Video-XL 的主要功能

  • 全面的长视频理解能力:在 MLVU、VideoMME、VNBench 和 LongVideoBench 上,Video-XL 7B 实现了在 7B 型号中领先的性能。
  • 高效的长视觉上下文处理:可在 80G GPU 上处理 2048 个帧,并在视频「大海捞针」任务中取得了接近 95%的准确率。
  • 适应复杂场景:在电影摘要、监控异常检测和广告投放识别等实际应用场景中显示出强大的能力。

如何运行 Video-XL

安装

conda create -n videoxl python=3.10 -y && conda activate videoxl
pip install torch==2.1.2 torchvision --index-url https://download.pytorch.org/whl/cu118
pip install -e "videoxl/.[train]"
pip install packaging &&  pip install ninja && pip install flash-attn --no-build-isolation --no-cache-dir
pip install -r requirements.txt

快速上手示例

from videoxl.model.builder import load_pretrained_model
from videoxl.mm_utils import tokenizer_image_token, process_images,transform_input_id
from videoxl.constants import IMAGE_TOKEN_INDEX,TOKEN_PERFRAME
from PIL import Image
from decord import VideoReader, cpu
import torch
import numpy as np
# fix seed
torch.manual_seed(0)model_path = "assets/videoxl_checkpoint-15000"
video_path="assets/ad2_watch_15min.mp4"max_frames_num =900
gen_kwargs = {"do_sample": True, "temperature": 1, "top_p": None, "num_beams": 1, "use_cache": True, "max_new_tokens": 1024}
tokenizer, model, image_processor, _ = load_pretrained_model(model_path, None, "llava_qwen", device_map="cuda:0")model.config.beacon_ratio=[8]   # you can delete this line to realize random compression of {2,4,8} ratio#video input
prompt = "<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n<|im_start|>user\n<image>\nDoes this video contain any inserted advertisement? If yes, which is the content of the ad?<|im_end|>\n<|im_start|>assistant\n"
input_ids = tokenizer_image_token(prompt, tokenizer, IMAGE_TOKEN_INDEX, return_tensors="pt").unsqueeze(0).to(model.device)
vr = VideoReader(video_path, ctx=cpu(0))
total_frame_num = len(vr)
uniform_sampled_frames = np.linspace(0, total_frame_num - 1, max_frames_num, dtype=int)
frame_idx = uniform_sampled_frames.tolist()
frames = vr.get_batch(frame_idx).asnumpy()
video_tensor = image_processor.preprocess(frames, return_tensors="pt")["pixel_values"].to(model.device, dtype=torch.float16)beacon_skip_first = (input_ids == IMAGE_TOKEN_INDEX).nonzero(as_tuple=True)[1].item()
num_tokens=TOKEN_PERFRAME *max_frames_num
beacon_skip_last = beacon_skip_first  + num_tokenswith torch.inference_mode():output_ids = model.generate(input_ids, images=[video_tensor],  modalities=["video"],beacon_skip_first=beacon_skip_first,beacon_skip_last=beacon_skip_last, **gen_kwargs)if IMAGE_TOKEN_INDEX in input_ids:transform_input_ids=transform_input_id(input_ids,num_tokens,model.config.vocab_size-1)output_ids=output_ids[:,transform_input_ids.shape[1]:]
outputs = tokenizer.batch_decode(output_ids, skip_special_tokens=True)[0].strip()
print(outputs)

资源

  • Video-XL 论文:https://arxiv.org/pdf/2409.14485
  • Video-XL 模型:https://huggingface.co/sy1998/Video_XL
  • Video-XL 项目:https://github.com/VectorSpaceLab/Video-XL

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


http://www.mrgr.cn/news/61297.html

相关文章:

  • 深入理解 Python 的装饰器
  • Thrustmaster Hotas Warthog飞行操作杆开发
  • Docker Compose 教程
  • rk3568 内核态OOM内存泄漏kmemleak使用
  • WPF 如何添加系统托盘
  • 【日常小记】Ubuntu启动后无图形界面且网络配置消失
  • [ACTF2020 新生赛]Exec 1
  • 2. Flink快速上手
  • 如何通过接口版本控制实现向后兼容
  • autojs使用中的一些坑
  • 看低代码开发如何通过几步加速融入产业进程
  • SAP-MM委外订单的退货处理
  • FreeRTOS队列分析
  • M3U8不知道如何转MP4?包能学会的4种格式转换教学!
  • StringBuilder类
  • golang版本工具GVM 和包管理工具go mod原理讲解
  • 如何快速将特斯拉3D感知移植到擎天柱?有可能只需要HeightFormer
  • 如何判断谷歌SEO服务的真假?
  • Fakelocation 运动世界校园(虚拟机篇)
  • 了解无线数传模块信号传输范围的多种因素——实现最佳性能
  • 乐尚代驾的项目问题
  • Leetcode73. 矩阵置零
  • 金融文本情感分析模型
  • 即插即用篇 | YOLOv8 引入 空间和通道协同注意力模块 SCSA
  • 使用 Microsoft Clarity 记录分析用户行为
  • Golang的多版本管理