5分钟跑通InternVideo2_CLIP_S:从零搭建视频文本检索Demo(附完整代码)
5分钟跑通InternVideo2_CLIP_S从零搭建视频文本检索Demo附完整代码【免费下载链接】InternVideo2_CLIP_S项目地址: https://ai.gitcode.com/hf_mirrors/OpenGVLab/InternVideo2_CLIP_SInternVideo2_CLIP_S 是上海人工智能实验室 OpenGVLab 团队开源的轻量级视频-文本检索模型输入一句文字描述就能从一堆视频中找出语义最匹配的片段。它采用 CLIP 双塔结构把视频8帧和文本映射到同一个 512 维语义空间用余弦相似度即可完成检索广泛用于视频搜索、多模态检索与智能媒资管理。本文带你从零搭建环境5 分钟跑通一个完整可运行的视频文本检索 Demo。项目文件结构一览InternVideo2_CLIP_S 里有什么 项目说明模型架构InternVideo2_CLIP_small双塔 CLIP 结构视觉编码器InternVideo2 ViT24 层 / 1024 维 / patch 14文本编码器MobileCLIP 风格 Transformer12 层 / 512 维 / 词表 49408视频输入均匀采样 8 帧分辨率 224×224特征维度视频与文本共享 512 维空间L2 归一化后做余弦相似度文本长度最长 32 个 token上下文 77评测基准MSRVTT、DiDeMo 视频文本检索许可证Apache-2.0环境搭建一条命令装好全部依赖模型基于 HuggingFace Transformers 的自定义代码机制加载config.json中的auto_map字段声明了自定义配置与模型类因此对 Transformers 版本有要求建议使用 4.51.3pip install transformers4.51.3 torch torchvision decord av imageio numpy然后获取项目源码其中包含完整的使用示例demo.py与交互式版test.ipynbgit clone https://gitcode.com/hf_mirrors/OpenGVLab/InternVideo2_CLIP_S⚠️ 注意model.safetensors权重文件需完整放置在模型目录下与config.json、各.py源码文件同级加载时直接传入该目录路径即可。三步跑通视频文本检索 Demo第一步加载 InternVideo2_CLIP_S 模型 ⚡from transformers import AutoConfig, AutoModel MODEL_DIR InternVideo2_CLIP_S # 模型目录config.json .py 源码 权重 config AutoConfig.from_pretrained(MODEL_DIR, trust_remote_codeTrue) model AutoModel.from_pretrained(MODEL_DIR, trust_remote_codeTrue).to(config.device) model.eval()trust_remote_codeTrue必不可少本项目通过config.json的auto_map指向config.py与modeling_internvideo2encoder.py中的自定义实现必须显式信任并执行这些代码。第二步提取视频特征——抽 8 帧 视觉编码InternVideo2_CLIP_S 不直接读视频文件而是均匀抽取 8 帧送入视觉编码器。用decord抽帧模型自带的model.transform会自动完成 224×224 缩放与像素归一化import numpy as np import torch import decord from decord import VideoReader decord.bridge.set_bridge(torch) def encode_video(model, video_path, num_frames8): reader VideoReader(video_path) vlen len(reader) indices np.linspace(0, vlen - 1, numnum_frames).astype(int) # 均匀抽 8 帧 frames reader.get_batch(indices).permute(0, 3, 1, 2) # (T, C, H, W) frames model.transform(frames).unsqueeze(0).to(model.device) # 缩放 归一化 with torch.no_grad(): return model.encode_vision(frames, testTrue) # 视频特征 (1, 512)encode_vision是核心 API定义于modeling_internvideo2encoder.py当输入只有 1 帧时还会自动切换为图像编码模式所以这个模型同样能做图片检索。第三步提取文本特征并做 Top-K 检索 文本侧走model.tokenizer→model.encode_text两侧特征各自 L2 归一化后一次矩阵乘法就得到相似度矩阵import torch.nn.functional as F def encode_text(model, texts): text_input model.tokenizer(texts).to(model.device) with torch.no_grad(): return model.encode_text(text_input) # 文本特征 (B, 512) videos [video1.mp4, video2.mp4] queries [a person talking, a building] text_features F.normalize(encode_text(model, queries), dim-1) video_features F.normalize(torch.cat([encode_video(model, p) for p in videos], 0).to(text_features.dtype), dim-1) sim text_features video_features.T # 余弦相似度矩阵 topk torch.topk(sim, k2, dim1).indices # 每条查询取 Top-2 for i, q in enumerate(queries): print(q, -, [videos[j] for j in topk[i]])运行后即可得到类似结果a person talking - [video1.mp4, video2.mp4] a building - [video2.mp4, video1.mp4]把上面三段代码按顺序拼在一起就是一个完整的视频文本检索脚本。完整代码在哪看demo.py 与 test.ipynb仓库内附有两个开箱即用的官方示例建议对照阅读demo.py完整检索示例。其中read_frames_decord封装了帧采样支持rand随机采样、middle中间采样、fps0.5按帧率采样三种策略见get_frame_indices函数get_top_videos输出 Top-5 视频及 softmax 概率值检索结果更直观。test.ipynb与demo.py完全一致的 Notebook 交互版本适合在浏览器里逐单元格调试、观察中间特征形状。核心源码导读每个文件负责什么 文件作用config.jsonHuggingFace 模型配置auto_map声明自定义配置类与模型类config.pyInternVideo2Config配置类含set_num_frames等便捷方法modeling_internvideo2encoder.py主模型InternVideo2_CLIP_small提供encode_vision/encode_text两大 APIinternvideo2_clip_vision.pyInternVideo2 视频视觉编码器24 层 ViT CLIP 对齐投影internvideo2.py完整 InternVideo2 ViT 实现含 1B / 6B 规格mobile_clip.py文本编码器TextTransformer与ClipTokenizermobile_clip_transformer.py文本 Transformer 的基础构件pos_embed.py1D / 2D / 3D 位置编码及插值工具flash_attention_class.pyFlashAttention 加速实现demo.py/test.ipynb视频文本检索示例脚本版 / Notebook 版常见问题 FAQ ❓Q1为什么必须加trust_remote_codeTrue本仓库使用 Transformers 的远程代码机制模型结构由仓库内的config.py、modeling_internvideo2encoder.py等自定义文件实现不加该参数会因找不到模型类而报错。Q2显存不够OOM怎么办视频编码器属于 1B 规模可先用config.set_num_frames(4)把抽帧数从 8 降到 4同时减小 batch size推理时保持 bf16/fp16 精度也有明显收益。Q3只有一张图片能检索吗可以。encode_vision检测到输入帧数T1时会自动进入图像编码分支use_imageTrue把图片当作单帧视频传入即可。Q4视频很长8 帧够吗Demo 默认均匀抽 8 帧足够短视频检索。长视频可参考demo.py中的fps采样策略按帧率取帧或分段抽帧后拼接特征。Q5model.safetensors加载后结果不对请确认目录下是完整的官方权重文件而不是占位文件权重缺失或不全会直接导致输出无意义。下一步用视频文本检索模型还能做什么 搭建视频搜索服务离线批量跑encode_video把视频特征存入向量数据库线上只需编码文本即可毫秒级检索图文混检同一 512 维空间天然支持图片、视频与文本三者互检领域微调仓库配置中已内置训练超参AdamW、余弦退火、多任务损失权重等可基于自己的数据对投影层做领域适配。InternVideo2_CLIP_S 以8 帧 一段文字的极简输入提供了工业级可用的视频文本检索能力——按本文步骤走一遍你的检索 Demo 就已经在跑了。【免费下载链接】InternVideo2_CLIP_S项目地址: https://ai.gitcode.com/hf_mirrors/OpenGVLab/InternVideo2_CLIP_S创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

OMG-tools 6大核心运动规划问题类型:点-点、会合、队形、调度完全对比

OMG-tools 6大核心运动规划问题类型:点-点、会合、队形、调度完全对比

OMG-tools 6大核心运动规划问题类型:点-点、会合、队形、调度完全对比 【免费下载链接】omg-tools Optimal Motion Generation-tools: motion planning made easy 项目地址: https://gitcode.com/gh_mirrors/om/omg-tools OMG-tools(Optimal Moti…

2026/8/22 14:03:42 阅读更多 →
Peacock记忆补丁器揭秘:AOB扫描如何让HITMAN秒切私有服务器

Peacock记忆补丁器揭秘:AOB扫描如何让HITMAN秒切私有服务器

Peacock记忆补丁器揭秘:AOB扫描如何让HITMAN秒切私有服务器 【免费下载链接】Peacock The Peacock Project is a HITMAN™ World of Assassination trilogy server replacement. 项目地址: https://gitcode.com/gh_mirrors/pe/Peacock 还在为 HITMAN 三部曲联…

2026/8/22 14:03:42 阅读更多 →
5分钟上手 ScriptableObjectCollection:从 OpenUPM 安装到创建第一个 Collection 的完整教程

5分钟上手 ScriptableObjectCollection:从 OpenUPM 安装到创建第一个 Collection 的完整教程

5分钟上手 ScriptableObjectCollection:从 OpenUPM 安装到创建第一个 Collection 的完整教程 【免费下载链接】ScriptableObjectCollection A library to help improve the usability of Unity3D Scriptable Objects by grouping them into a collection and provid…

2026/8/22 14:03:42 阅读更多 →

最新新闻

锤子助手第054个开关:显示红包详情的位置、验证方法与资金信息隐私边界

锤子助手第054个开关:显示红包详情的位置、验证方法与资金信息隐私边界

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

2026/8/22 16:09:30 阅读更多 →
为什么PHP需要各种扩展?

为什么PHP需要各种扩展?

首先,我们要明白PHP是一种编程语言,它可以让我们告诉电脑去执行一些任务。但是,PHP本身并不包含所有可能的功能。就像我们玩游戏时,游戏本身可能只提供了基础的游戏玩法,如果我们想要更多的功能或者更好的体验&#xf…

2026/8/22 16:09:30 阅读更多 →
[AutoSar]BSW_Com020 Handle_ID,Global_PDU,Local_PDU的联系

[AutoSar]BSW_Com020 Handle_ID,Global_PDU,Local_PDU的联系

目录关键词平台说明一、概念二、API的使用和形参三、Handle ID 唯一性特例四、PDU和handle ID关联用例关键词 嵌入式、C语言、autosar、OS、BSW 平台说明 项目ValueOSautosar OSautosar厂商vector , EB芯片厂商TI 英飞凌编程语言C,C编译器HighTec (GC…

2026/8/22 16:09:30 阅读更多 →
chrome-react-perf自定义Redux中间件深度剖析:如何向被测页面注入Perf.start()命令

chrome-react-perf自定义Redux中间件深度剖析:如何向被测页面注入Perf.start()命令

chrome-react-perf自定义Redux中间件深度剖析:如何向被测页面注入Perf.start()命令 【免费下载链接】chrome-react-perf An Operation Interface for react-addons-perf Package 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-react-perf chrome-reac…

2026/8/22 16:09:29 阅读更多 →
Linux日志审计与故障追踪:从基础命令到高级工具实战指南

Linux日志审计与故障追踪:从基础命令到高级工具实战指南

在 Linux 服务器运维和开发过程中,你是否遇到过这样的场景:系统突然变慢,却不知道是哪个进程在“作祟”;服务莫名其妙崩溃,日志里只有一句含糊的错误信息;或者更糟,怀疑系统被入侵,却…

2026/8/22 16:09:29 阅读更多 →
Katapult刷固件翻车怎么办?10个常见问题排查与变砖恢复方法清单

Katapult刷固件翻车怎么办?10个常见问题排查与变砖恢复方法清单

Katapult刷固件翻车怎么办?10个常见问题排查与变砖恢复方法清单 【免费下载链接】katapult Configurable bootloader for Klipper 项目地址: https://gitcode.com/gh_mirrors/ka/katapult Katapult(前身 CanBoot)是一款专为 Klipper 3…

2026/8/22 16:08:29 阅读更多 →

日新闻

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

2026/8/22 0:00:11 阅读更多 →
电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

这次我们来看一个针对电气考研电路科目的学习规划项目。它不是软件工具,而是一套聚焦于8月份关键节点的备考策略。对于电气工程考研的同学来说,电路分析是专业课的重中之重,也是拉开分差的关键。进入8月,复习进入强化阶段&#xf…

2026/8/22 0:00:11 阅读更多 →
消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

大家好,我是专注于前端开发与AI工具实践的技术博主。在日常使用 Claude Code 等AI编程助手时,你是否也遇到过这样的困扰:生成的代码功能上没问题,但代码风格、组件设计、交互逻辑总透着一股“AI味”——布局单调、样式简陋、交互生…

2026/8/22 0:00:11 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/22 8:09:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/21 16:42:28 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →