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

news/2024/11/8 7:26:11/

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, VideoReaderdef describe_video(video_path, model_path="./checkpoints/longvu_qwen", model_name="cambrian_qwen", query="Describe this video in detail"):# Load pretrained model and tokenizertokenizer, model, image_processor, context_len = load_pretrained_model(model_path, None, model_name)model.eval()# Read and process the videovr = 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 queryqs = 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 inputinput_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.sep2stopping_criteria = KeywordsStoppingCriteria([stop_str], tokenizer, input_ids)# Generate descriptionwith 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 outputdescription = 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)

未完......

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


http://www.ppmy.cn/news/1545290.html

相关文章

代码随想录之字符串刷题总结

目录 1.反转字符串 2.反转字符串II 3.替换数字 4.翻转字符串里面的单词 5.右旋&&左旋字符串 1.反转字符串 题目描述: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外…

【信号处理】基于联合图像表示的深度学习卷积神经网络

Combined Signal Representations for Modulation Classification Using Deep Learning: Ambiguity Function, Constellation Diagram, and Eye Diagram 信号表示 Ambiguity Function(AF) 模糊函数描述了信号的两个维度(dimensions):延迟(delay)和多普勒(Doppler)。 …

【设计模式系列】总览

努力填完如下表格ing... 设计模式简述详细链接单例模式(Singleton)工厂方法模式(Factory Method)简单工厂模式(Simple Factory Pattern)简单工厂模式是一个静态的工厂类,它提供一个根据参数决定…

反转链表(Leetcode)

反转链表 Leetcode题目链接 题意:翻转一个单链表 🌰: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 在链表本身进行反转即可,不用重新定义链表,这同时浪费时间和空间。 需要采用哑…

第二章 虚拟仪器及其构成原理

目录 第二章 虚拟仪器及其构成原理 第七章 基于VXI总线的虚拟仪器 7.2 VXI总线系统的体系结构 7.3.1 系统和硬件 7.5 PXI总线与PCI性能比较 第二章 虚拟仪器及其构成原理 2.4 虚拟仪器及其系统集成 2.4.1 虚拟仪器硬件组成 接口硬件:根据不同的标…

Echats柱状图的横坐标用图片显示

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图片作为横坐标示例 - ECharts</title><!-…

AutoOps 使每个 Elasticsearch 部署都更易于管理

作者&#xff1a;来自 Elastic Ziv Segal&#xff0c;Ori Shafir AutoOps for Elasticsearch 通过性能建议、资源利用率和成本洞察、实时问题检测和解决路径显著简化了集群管理。 虽然 Elasticsearch 是一款功能强大且可扩展的搜索引擎&#xff0c;可提供多种功能&#xff0c;但…

虚实地址转换

虚实地址转换的过程涉及多个关键组件和步骤。以下是虚实地址转换过程的主要涉及点&#xff1a; 一、基本概念 虚地址&#xff08;逻辑地址&#xff09;&#xff1a;由程序提供的地址&#xff0c;是程序在逻辑上所使用的地址。实地址&#xff08;物理地址&#xff09;&#xf…