MiniCPM-V-2.6 视频理解Demo

MiniCPM-V 2.6

MiniCPM-V 2.6 是 MiniCPM-V 系列中最新、性能最佳的模型。该模型基于 SigLip-400M 和 Qwen2-7B 构建,共 8B 参数。与 MiniCPM-Llama3-V 2.5 相比,MiniCPM-V 2.6 性能提升显著,并引入了多图和视频理解的新功能。

模型下载

下载需要的模型文件, 下载模型

from modelscope import snapshot_download
model_dir = snapshot_download('OpenBMB/MiniCPM-V-2_6', cache_dir='/root/autodl-tmp', revision='master')

视频理解demo

视频理解

import torch
from PIL import Image
from transformers import AutoModel, AutoTokenizer
from decord import VideoReader, cpu    # pip install decord

torch.manual_seed(0)
model_dir = r"D:\codes\python\MiniCPM\minicpm-v-2_6"

model = AutoModel.from_pretrained(model_dir, trust_remote_code=True,
                                  attn_implementation='sdpa',
                                  torch_dtype=torch.bfloat16)  # sdpa or flash_attention_2, no eager
model = model.eval().cuda()
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)


MAX_NUM_FRAMES=64 # if cuda OOM set a smaller number

def encode_video(video_path):
    def uniform_sample(l, n):
        gap = len(l) / n
        idxs = [int(i * gap + gap / 2) for i in range(n)]
        return [l[i] for i in idxs]

    vr = VideoReader(video_path, ctx=cpu(0))
    sample_fps = round(vr.get_avg_fps() / 1)  # FPS
    frame_idx = [i for i in range(0, len(vr), sample_fps)]
    if len(frame_idx) > MAX_NUM_FRAMES:
        frame_idx = uniform_sample(frame_idx, MAX_NUM_FRAMES)
    frames = vr.get_batch(frame_idx).asnumpy()
    frames = [Image.fromarray(v.astype('uint8')) for v in frames]
    print('num frames:', len(frames))
    return frames

video_path="test_video.mp4"
frames = encode_video(video_path)
question = "这个视频中有什么商品,请用JSON格式输出,商品名为productName,商品数量为num?"
msgs = [
    {'role': 'user', 'content': frames + [question]},
]

# Set decode params for video
params = {}
params["use_image_id"] = False
params["max_slice_nums"] = 2 # use 1 if cuda OOM and video resolution > 448*448

answer = model.chat(
    image=None,
    msgs=msgs,
    tokenizer=tokenizer,
    **params
)
print(answer)

### MiniCPM-V-2.6 知识库集成与使用说明 #### 一、MiniCPM-V-2.6简介 MiniCPM-V 2.6是一个用于单图像、多图像和视频的GPT-4V级别的MLLM(多模态语言模型)。该模型具备强大的语言理解和生成能力,可以处理多种涉及图像和视频的任务。借助此工具,用户能够在移动设备上实现对图像和视频的智能化分析与互动[^2]。 #### 二、知识库集成方式 为了使MiniCPM-V-2.6更好地服务于特定应用场景,通常会将其与外部的知识库相结合。这种结合可以通过API接口调用来完成,也可以是在源码层面做定制化开发来达成更深层次的功能融合。具体来说: - **API接口调用**:如果目标平台支持RESTful API或其他形式的服务端口,则可以直接利用这些服务来进行数据交换;这种方式简单快捷,适合快速原型验证。 - **源码层面上的修改**:当需要更加紧密地耦合两个系统时,可能就需要深入研究MiniCPM-V-2.6及其所依赖框架的内部机制,在此基础上编写适配代码以接入指定的知识库资源。这往往涉及到理解并遵循项目的贡献指南以及相关技术栈的最佳实践[^1]。 #### 三、使用说明概览 一旦完成了上述任一种类型的集成工作之后,便可以根据实际需求设计具体的业务逻辑流程。一般而言,操作步骤如下所示: 加载已下载好的`MiniCPM-V-2_6`目录下的模型文件,并初始化必要的环境变量; 准备待处理的数据集——无论是静态图片还是动态影像片段均可作为输入素材; 执行推理过程,即让模型依据给定提示词或上下文信息去解析所提供的多媒体资料; 最后收集输出结果并对之加以解释应用,比如提取关键帧特征描述、自动生成解说文案等。 ```python from minicpm_v import load_model, process_image_or_video model_path = "./MiniCPM-V-2_6" loaded_model = load_model(model_path) input_data = "path_to_your_input_file.jpg" # 或者 .mp4 文件路径 output_result = process_image_or_video(loaded_model, input_data) print(output_result) ``` #### 四、官方文档获取途径 关于更多详细的配置选项和技术细节,请参阅GitHub仓库中的README.md文件以及其他配套文档。此外还可以关注开发者社区论坛上的讨论帖,那里经常会有热心人士分享宝贵经验或是解答疑问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天机️灵韵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值