LongVU:Meta AI 开源的创新交互式长视频理解模型

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

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


🚀 快速阅读

  1. LongVU 是 Meta AI 的长视频理解模型,基于时空自适应压缩机制。
  2. 主要功能包括时空自适应压缩、跨模态查询和帧间依赖性利用。
  3. 技术原理涉及时间压缩策略、选择性特征降低和空间标记压缩。

正文(附运行示例)

LongVU 是什么

在这里插入图片描述

LongVU 是 Meta AI 团队推出的长视频理解模型,基于时空自适应压缩机制,解决处理长视频时受限于大型语言模型(LLM)上下文大小的挑战。通过跨模态查询和帧间依赖性,LongVU 能在减少视频标记数量的同时,保留长视频的视觉细节。

LongVU 的主要功能

  • 时空自适应压缩:减少视频标记数量,保留关键视觉细节,处理长视频内容。
  • 跨模态查询:基于文本引导,选择性地减少视频帧特征,保留相关帧详细信息。
  • 帧间依赖性利用:分析帧间时间依赖性,执行空间标记压缩,减少上下文长度需求。
  • 长视频理解:有效处理 1fps 采样的视频,适应 8k 上下文长度的多模态大型语言模型(MLLM)。

LongVU 的技术原理

  • 时间压缩策略:用 DINOv2 特征识别、去除冗余视频帧,减少时间维度冗余。
  • 选择性特征降低:基于文本引导,对相关帧保留完整标记,其他帧应用空间池化。
  • 空间标记压缩:基于帧间时间依赖性,进一步压缩空间标记,减少数据处理量。
  • 多模态训练:结合图像-语言预训练和视频-语言微调,提升视频理解表现。

在线体验演示

视频请前往公众号对应文章进行观看。

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

如何运行 LongVU

快速开始

  1. 在线体验:huggingface.co/spaces/Vision-CAIR/LongVU。
  2. 本地部署
git clone https://github.com/Vision-CAIR/LongVU
cd LongVU
conda create -n longvu python=3.10
conda activate longvu
pip install -r requirements.txt
  1. 下载模型检查点
模态LongVU_Qwen2_7BLongVU_Llama3_2_3B
图像huggingface.co/Vision-CAIR/LongVU_Qwen2_7B_imghuggingface.co/Vision-CAIR/LongVU_Llama3_2_3B_img
视频huggingface.co/Vision-CAIR/LongVU_Qwen2_7Bhttps://huggingface.co/Vision-CAIR/LongVU_Llama3_2_3B
  1. 运行示例
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

tokenizer, model, image_processor, context_len = load_pretrained_model(
    "./checkpoints/longvu_qwen", None, "cambrian_qwen",
)

model.eval()
video_path = "./examples/video1.mp4"
qs = "Describe this video in detail"

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 = []
for frame_index in frame_indices:
    img = vr[frame_index].asnumpy()
    video.append(img)
video = np.stack(video)
image_sizes = [video[0].shape[:2]]
video = process_images(video, image_processor, model.config)
video = [item.unsqueeze(0) for item in video]

qs = DEFAULT_IMAGE_TOKEN + "\n" + qs
conv = conv_templates["qwen"].copy()
conv.append_message(conv.roles[0], qs)
conv.append_message(conv.roles[1], None)
prompt = conv.get_prompt()

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
keywords = [stop_str]
stopping_criteria = KeywordsStoppingCriteria(keywords, tokenizer, input_ids)
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],
    )
pred = tokenizer.batch_decode(output_ids, skip_special_tokens=True)[0].strip()

资源


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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值