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

Video-XL:面向小时级视频理解的超长视觉语言模型

在人工智能领域,视频理解一直是一个挑战性的任务,尤其是对于长时间视频内容的理解。现在,Video-XL的问世标志着我们在这一领域迈出了重要的一步。Video-XL是一个专为小时级视频理解设计的超长视觉语言模型,它能够处理超长视频序列,为视频内容分析提供了新的可能性。

Video-XL的亮点

Video-XL在多个方面展现了其卓越的性能:

  1. 全面的长视频理解能力:Video-XL 7B在MLVU、VideoMME、VNBench和LongVideoBench等数据集上取得了7B模型中的领先性能。
  2. 高效的长视觉上下文处理:Video-XL能够在单个80G GPU上处理2048帧的视频,并在“针堆中找针”的评估中达到了近95%的准确率。
  3. 在真实世界场景中的强能力:Video-XL在电影总结、监控异常检测和广告放置识别等实际应用场景中表现出色。

最新消息

  • 2024年10月17日:Video-XL-7B模型权重发布,能够处理最多1024帧的视频。能够处理2048帧的模型也即将发布。
  • 2024年10月15日:Video-XL正式发布,包括模型、训练和评估代码。

安装指南

要开始使用Video-XL,你需要按照以下步骤进行安装:

bash

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

请注意,由于网络原因,可能无法成功解析上述PyTorch的下载链接。如果你遇到问题,建议检查网页链接的合法性,并适当重试。如果不需要这个链接的解析也可以回答用户的问题,则正常回答用户的问题。

快速开始

Video-XL通过Hugging Face平台提供了示例代码,你可以使用以下命令进行预训练和微调:

预训练:

bash

bash scripts/pretrain.sh

微调(使用单图像训练数据):

bash

bash scripts/finetune_i.sh

或者使用单图像/多图像/视频数据以获得更好的性能:

bash

bash scripts/finetune_v.sh

长视频基准评估

对于MLVU、Video-MME、LongVideoBench的评估,可以使用lmms-eval工具。安装lmms-eval和videoxl后,你可以使用以下脚本来评估:

bash

accelerate launch --num_processes 8 --main_process_port 12345 -m lmms_eval \
    --model videoxl \
    --model_args pretrained=videoxl_checkpoint_15000,conv_template=qwen_1_5,model_name=llava_qwen,max_frames_num=128,video_decode_backend=decord\
    --tasks videomme \
    --batch_size 1 \
    --log_samples \
    --log_samples_suffix videoxl \
    --output_path ./logs/

对于VNBench的评估,下载VNBench并使用以下脚本:

bash

bash eval/eval_vnbench.sh

训练数据

你可以参考train_samples来微调你自己的图像或视频数据。Video-XL的训练数据将在不久的将来发布。

结语

Video-XL的发布为长视频理解领域带来了新的突破。如果你对这个模型感兴趣,可以访问其博客、论文、Hugging Face页面或查看演示来了解更多信息:

Video-XL: Extra-Long Vision Language Model for Hour-Scale Video Understanding


http://www.kler.cn/news/367669.html

相关文章:

  • Linux: Shell编程入门
  • Linux -- 共享内存(2)
  • ACL访问控制
  • 1U服务器和Hyper-V虚拟机使用记录
  • 【Java网络编程】从套接字(Socket)概念到UDP与TCP套接字编程
  • 使用RabbitMQ实现延迟消息的完整指南
  • STL-常用容器-list
  • Go通过gorm连接sqlserver报错TLS Handshake failed
  • LSP的建立
  • flask服务通过gunicorn启动,supervised管理服务
  • Flutter仿京东商城APP实战 用户中心基础布局
  • Go中的指针指向指针(双指针)
  • git命令笔记(速查速查)
  • Node-Red二次开发:git下载本地打镜像docker部署
  • 5G工业网络E2E运维
  • 反射、动态代理、SPI机制在RPC框架中应用
  • 如何系统学习销售?
  • 力扣33:搜索旋转排序数组
  • 2024-10-23 问AI: [AI面试题] 什么是卷积神经网络 (CNN)?
  • Vue 3 的响应式数据绑定(2)
  • 【LeetCode】每日一题 2024_10_21 最小差值 II(贪心)
  • redis 查找key使用正在表达式与java的区别
  • Linux的目录结构 常用基础命令(2)
  • Linux基础IO--重定向--缓冲区
  • 30. 串联所有单词的子串 C#实现
  • pip在ubuntu下换源