Meta AI最新推出的长视频语言理解多模态模型LongVU分享

LongVU是由Meta AI团队推出的一种专注于长视频语言理解的多模态模型。

LongVU的架构设计包括使用DINOv2技术去除冗余帧,融合剩余帧的特征,通过跨模态查询选择性地减少视觉标记,根据时间依赖关系进行空间标记压缩,以进一步适应大型语言模型的有限上下文长度。

LongVU利用基于文本引导的跨模态查询来选择性地减少视频帧的特征,能保留与文本查询最相关的帧的详细信息,将其他帧减少到低分辨率的标记表示。

LongVU能有效处理1fps采样的视频输入,且能适应性地将每小时长视频的平均每个帧的标记数量减少到2个,适应8k上下文长度的多模态大型语言模型。

LongVU模型的出现为长视频的语言理解提供了一种有效的解决方案,通过减少视频标记的数量并保留视觉细节,LongVU不仅提高了视频处理的效率,还保持了视频内容的完整性。

github项目地址:https://github.com/Vision-CAIR/LongVU。

一、环境安装

1、python环境

建议安装python版本在3.10以上。

2、pip库安装

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

3、LongVU_Qwen2_7B_img 模型下载

git lfs install

git clone https://huggingface.co/Vision-CAIR/LongVU_Qwen2_7B_img

4、LongVU_Qwen2_7B 模型下载

git lfs install

git clone https://huggingface.co/Vision-CAIR/LongVU_Qwen2_7B

二**、功能测试**

1、运行测试

(1)python代码调用测试

复制代码
import numpy as np
import torch
from longvu.builder import load_pretrained_model
from longvu.constants import DEFAULT_IMAGE_TOKEN, IMAGE_TOKEN_INDEX
from longvu.conversation import conv_templates, SeparatorStyle
from longvu.mm_datautils import KeywordsStoppingCriteria, process_images, tokenizer_image_token
from decord import cpu, VideoReader

def describe_video(video_path, model_path="./checkpoints/longvu_qwen", model_name="cambrian_qwen", query="Describe this video in detail"):
    # Load pretrained model and tokenizer
    tokenizer, model, image_processor, context_len = load_pretrained_model(model_path, None, model_name)
    model.eval()

    # Read and process the video
    vr = VideoReader(video_path, ctx=cpu(0), num_threads=1)
    fps = float(vr.get_avg_fps())
    frame_indices = np.array([i for i in range(0, len(vr), round(fps))])
    video = np.stack([vr[frame_index].asnumpy() for frame_index in frame_indices])
    image_sizes = [video[0].shape[:2]]
    video = process_images(video, image_processor, model.config)
    video = [item.unsqueeze(0) for item in video]

    # Prepare the query
    qs = f"{DEFAULT_IMAGE_TOKEN}\n{query}"
    conv = conv_templates["qwen"].copy()
    conv.append_message(conv.roles[0], qs)
    conv.append_message(conv.roles[1], None)
    prompt = conv.get_prompt()

    # Tokenize input
    input_ids = tokenizer_image_token(prompt, tokenizer, IMAGE_TOKEN_INDEX, return_tensors="pt").unsqueeze(0).to(model.device)
    stop_str = conv.sep if conv.sep_style != SeparatorStyle.TWO else conv.sep2
    stopping_criteria = KeywordsStoppingCriteria([stop_str], tokenizer, input_ids)

    # Generate description
    with torch.inference_mode():
        output_ids = model.generate(
            input_ids,
            images=video,
            image_sizes=image_sizes,
            do_sample=False,
            temperature=0.2,
            max_new_tokens=128,
            use_cache=True,
            stopping_criteria=[stopping_criteria],
        )

    # Decode the output
    description = tokenizer.batch_decode(output_ids, skip_special_tokens=True)[0].strip()
    return description

# Example usage
video_description = describe_video("./examples/video1.mp4")
print(video_description)

未完......

更多详细的欢迎关注:杰哥新技术

相关推荐
wujian831113 小时前
怎么用文心生成word文档?从格式错乱到智能导出,AI导出鸭让创作再无后顾之忧
人工智能·ai·word·豆包·deepseek·ai导出鸭
动物园猫13 小时前
猪危险行为目标检测数据集:3类别、5,000+张图像 | 目标检测
人工智能·目标检测·计算机视觉
ai产品老杨13 小时前
AI视频分析并发优化完整流程:解决多路视频并发不足与高延迟排查指南
人工智能·音视频
why技术14 小时前
AI 写的文章,可能都带着手敲一遍都去不掉的“隐形水印”。
前端·人工智能·后端
罗西的思考14 小时前
【Agent OS / AIOS】AOHP 深度解读:当 OS 开始为 Agent 而设计
人工智能·算法·机器学习
新知图书14 小时前
8.2 智能体的心跳执行模式:以智能体为核心(智能体工程)
人工智能·agent·ai agent·智能体
民乐团扒谱机14 小时前
【微实验】组合优化matlab实战(马科维茨投资模型):在收益与风险之间,寻找最优的人生配比
大数据·人工智能·算法·机器学习·数学建模·matlab·组合优化
嘶哈哈哈15 小时前
使用 Labelme 标注遥感目标检测数据集:从类别表、矩形框到 group_id 完整流程
人工智能·目标检测·目标跟踪
kyriewen15 小时前
面试官说"打开你的AI工具"——我才发现,他考的根本不是写代码
前端·人工智能·面试
冬奇Lab15 小时前
Code Agent 解剖(03):各家 LLM 格式不一样,agent 怎么统一对接?
人工智能·开源