ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

InternVideo2_CLIP_S架构全解:InternVideo2视觉编码器与MobileCLIP文本编码器如何协作

2026/8/22 13:25:26 拓冰建站 浏览量
InternVideo2_CLIP_S架构全解:InternVideo2视觉编码器与MobileCLIP文本编码器如何协作 InternVideo2_CLIP_S架构全解InternVideo2视觉编码器与MobileCLIP文本编码器如何协作【免费下载链接】InternVideo2_CLIP_S项目地址: https://ai.gitcode.com/hf_mirrors/OpenGVLab/InternVideo2_CLIP_SInternVideo2_CLIP_S 是一款 CLIP 风格的视频-文本对比学习模型它将强大的InternVideo2 视觉编码器与轻量高效的MobileCLIP 文本编码器组合在同一套 512 维特征空间里只需一个相似度矩阵就能实现「文字搜视频」「图文对齐」等能力。本文带你用大白话快速读懂它的整体架构、双编码器设计以及如何跑通第一个检索 Demo。 一句话理解 InternVideo2_CLIP_SInternVideo2_CLIP_S 采用经典的「双塔Two-Tower」CLIP 架构视觉塔InternVideo2 视频编码器把 8 帧视频或单张图片编码成 512 维向量文本塔MobileCLIP 文本编码器把一句描述文本编码成 512 维向量对齐方式两个向量各自做 L2 归一化后计算余弦相似度训练时通过对比学习拉近「匹配的图文对」、推远「不匹配的对」最终效果就是给定一句a person talking模型可以从一堆视频中检索出最相关的那一个——这正是 demo.py 演示的核心场景。 核心文件地图文件作用config.json模型超参数与 AutoConfig/AutoModel 注册入口config.py训练/推理配置类InternVideo2Configmodeling_internvideo2encoder.py顶层模型InternVideo2_CLIP_small串联双编码器internvideo2_clip_vision.pyInternVideo2 视觉编码器本体internvideo2.py更大规模1B/6B的 PretrainInternVideo2 参考实现mobile_clip.pyMobileCLIP 文本编码器TextTransformer与分词器mobile_clip_transformer.py文本侧 Transformer 基础模块注意力、FP32 归一化等pos_embed.py3D 正弦位置编码让模型理解「时间 × 空间」flash_attention_class.py可选的 FlashAttention 加速实现demo.py文字检索视频的最小可用示例model.safetensors预训练权重文件️ 整体架构两个「编码器塔」如何分工从 config.json 中可以读到这套小模型S 版的关键参数视频输入: 224×224 分辨率 × 8 帧 视觉编码器: 24 层 Transformer, 隐藏维度 1024, 16 个注意力头, patch 大小 14 文本编码器: 12 层 Transformer, 隐藏维度 512, 8 个注意力头, 上下文长度 77 共享特征空间: 512 维数据流向可以概括为视频/图片路径8 帧画面 → 3D Patch 切块 → 24 层 Transformer 提取特征 → 注意力池化压缩成 1 个 768 维向量 → 线性投影到 512 维文本路径句子 → BPE 分词最长 77 个 token→ 12 层带因果掩码的 Transformer → 取末尾有效 token 的特征 → 投影到 512 维汇合两条路径输出在 512 维空间里碰面用余弦相似度衡量匹配程度 InternVideo2 视觉编码器看懂 8 帧视频的眼睛视觉编码器定义在internvideo2_clip_vision.py中的InternVideo2类它本质上是一个带 3D 位置感知的视频 Transformer3D Patch 嵌入用卷积把 224×224 的画面按 14×14 切块8 帧视频会被切成一串时空块像给视频拍了一张马赛克地图CLS Token在所有块前加一个全局摘要 token负责汇总整段视频的信息3D 正弦位置编码见pos_embed.py让每个块都知道自己处在第几帧、哪个位置输入单张图片时会自动对时间维度取平均优雅降级为图像编码稳定训练的小技巧块内使用 RMSNorm、QK 归一化和 LayerScale并支持 FlashAttention 加速开关在config.json的use_flash_attn等字段注意力池化投影器clip_projector不用 CLS token 做最终表示而是用一层交叉注意力挑选出最有信息量的块输出 768 维向量——再经vision_align线性层投影到 512 维值得一提的是internvideo2.py中还保留了对应 1B40 层、1408 维与 6B48 层、3200 维更大规格的PretrainInternVideo2实现S 版可以看作它的轻量精简款。 MobileCLIP 文本编码器轻巧但够用的耳朵文本侧代码来自 Apple 开源的 MobileCLIP 项目见mobile_clip.py文件头版权说明核心是TextTransformer类分词器ClipTokenizer复用 OpenCLIP 的 BPE 词表49408 个 token输入句子会被补全/截断到 77 个 token可学习位置编码每个位置有一个独立的可学习向量叠加在 token 嵌入上12 层因果注意力 Transformer隐藏维度 512、8 个头使用因果掩码每个 token 只能看到它之前的内容FP32 LayerNorm归一化在浮点 32 位下计算避免低精度训练中的数值问题输出策略取序列中最后一个有效 tokenEOT的特征再通过projection_layer投影到 512 维——与视觉塔同维才能比较相似度基础模块多头注意力、位置编码、FP32 归一化位于mobile_clip_transformer.py。 双编码器协作对比学习的关键三步两个编码器如何默契配合答案都在modeling_internvideo2encoder.py的InternVideo2_CLIP_small类里分别编码encode_vision()负责视频/图片encode_text()负责文本各自输出 512 维向量温度缩放模型内置一个可学习温度参数temp初始 0.01下限 0.01控制相似度分布的尖锐程度冻结策略从config.json可以看到freeze_vision: true、freeze_text: true但open_vision_clip_projector: true——即训练时冻结两个大编码器的主体只放开视觉投影头进行高效对齐这是典型的大模型冻结 小头微调省钱策略推理阶段如demo.py的检索逻辑非常直白用 decord 从视频中均匀抽取 8 帧Resize 到 224×224 并归一化model.encode_vision(frames)得到视频向量model.encode_text(texts)得到文本向量归一化后做矩阵相乘text_features video_features.T取 Top-K 即得检索结果 快速上手从 clone 到第一次检索克隆仓库git clone https://gitcode.com/hf_mirrors/OpenGVLab/InternVideo2_CLIP_S依赖transformers、torch、decord、open_clip等包后参考demo.py的三步流程AutoConfig.from_pretrained(..., trust_remote_codeTrue)加载配置AutoModel.from_pretrained(...)加载模型配置在config.json的auto_map中自动指向InternVideo2_CLIP_small抽帧 → 编码 → 相似度排序几分钟即可跑通「文字搜视频」❓ 新手常见问题Q为什么叫 _SS 代表 Small。相比 1B 版40 层 × 1408 维S 版只有 24 层 × 1024 维参数量和显存占用都小得多更适合普通开发者部署和微调。Q图片和视频能混着用吗可以。encode_vision()会根据输入帧数自动判断1 帧按图片处理时间位置编码取平均多帧按视频处理同一个向量空间内直接比较。Q特征维度为什么是 512config.json中align_dim与文本侧embed_dim均为 512这是双编码器共同约定的会客厅维度适中兼顾精度与检索效率。Q想换更大的视觉骨干怎么办internvideo2.py中的 1B/6B 版PretrainInternVideo2提供了完整参考替换config.json里vision_encoder的层数、维度等参数即可需配套权重。总结InternVideo2_CLIP_S 的精髓在于强强组合——用 InternVideo2 的视频 Transformer 看懂 8 帧画面用 MobileCLIP 的轻量编码器读懂文字再借助 512 维共享空间 对比学习让图与文在同一坐标系下对话。理解了 Patch 切块、注意力池化、因果掩码和温度缩放这几个关键点你就掌握了它的架构全貌。【免费下载链接】InternVideo2_CLIP_S项目地址: https://ai.gitcode.com/hf_mirrors/OpenGVLab/InternVideo2_CLIP_S创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考