【免费下载链接】VideoMamba
VideoMamba 是一个基于双向状态空间模型(Bidirectional SSM)的轻量级视频理解模型,由 OpenGVLab 开发,核心定位是可替换 ViT 的开源视频 Backbone。本指南面向新手开发者,讲解如何快速把 VideoMamba 作为骨干网络接入你的视频分类、动作识别等 PyTorch 项目,并挑选合适的预训练权重(Checkpoint)。
为什么要把 ViT 换成 VideoMamba?
传统视频 Transformer 的自注意力计算量随序列长度呈二次方增长,处理长视频时显存和速度都吃不消。VideoMamba 用 SSM(状态空间模型)替代注意力机制,带来三个开发者最关心的优势:
| 对比维度 | 传统 ViT 类 Backbone | VideoMamba(SSM Backbone) |
|---|---|---|
| 序列建模复杂度 | O(N²) 注意力 | 线性复杂度,长序列友好 |
| 双向建模 | 需要额外设计 | 原生双向状态空间,无需因果掩码 |
| 适用任务 | 图像/短视频 | 图像分类、动作识别、长视频理解、视频文本检索 |
官方说明中明确指出其定位:An efficient backbone based on the bidirectional state space model.(基于双向状态空间模型的高效骨干网络),也就是说它天生就是"拿来替换 Backbone"的。
第一步:获取代码与预训练权重
本仓库提供 60 个官方预训练权重文件(均为 LFS 存储的大文件),配合 README.md 中的使用说明,构成完整资源。源码与权重可克隆获取:
git clone https://gitcode.com/OpenGVLab/VideoMamba💡 权重文件通过 Git LFS 管理,克隆时请确保本地已安装
git lfs,否则下载到的是指针文件而非真实权重。
模型定义在哪里?
README 给出了接入 VideoMamba 的官方指引:
- 用 VideoMamba 替换你视频任务中的 backbone:源码位于
videomamba/video_sm/models/videomamba.py(VideoMamba模型定义文件); - 然后加载对应 Checkpoint,即可开始训练。
即"替换 backbone + 加载权重"两步,这就是无缝替换 ViT 的全部核心。
第二步:看懂 60 个 Checkpoint 的命名规则
仓库根目录下的权重文件采用统一命名:videomamba_{结构}_{数据集}_{帧数}_res{输入分辨率}.pth。学会拆解文件名,选权重就不再迷茫。
命名四要素拆解
| 片段 | 含义 | 示例 |
|---|---|---|
| 结构前缀 | 序列划分方式 | b16(双向 16-patch)、s16(空间序列 16)、t16(时间序列 16) |
| 数据集 | 预训练来源 | in1k(ImageNet-1k)、k400(Kinetics-400)、ssv2(Something-Something V2)、breakfast/coin(下游数据集) |
| 帧数 | 训练/推理帧数 | f8、f16、f32、f64 |
| 分辨率 | 输入分辨率及渐进策略 | res224、res224to448、res224to448to576、res224to384、res224to288 |
常见 Checkpoint 速查表
| 你的场景 | 推荐权重 |
|---|---|
| 通用特征提取 / 迁移学习起点 | videomamba_b16_in1k_res224.pth |
| 高分辨率图像/视频理解 | videomamba_m16_in1k_res224to448to576.pth |
| Kinetics-400 动作识别 | videomamba_m16_k400_f32_res224.pth |
| 长视频(64 帧)理解 | videomamba_t16_k400_f64_res224.pth |
| 大规模模型(17M/25M 参数) | videomamba_m16_25M_f8_res224.pth、videomamba_m16_17M_f8_res224.pth |
| 带 Mask 微调的 COIN/Breakfast 下游任务 | videomamba_m16_coin_mask_ft_f32_res224.pth、videomamba_m16_breakfast_mask_ft_f64_res224.pth |
📌 选型建议:不确定选哪个时,从
b16+in1k+ 与你任务帧数、分辨率最接近的文件入手,再逐步对比s16(空间序列)与t16(时间序列)两种序列划分方式在下游任务上的表现。
第三步:替换 Backbone 接入你的项目
整体流程只有四步,改动点集中在"模型定义"处,数据管线基本可以沿用:
- 引入模型:在项目中导入
videomamba.py里的VideoMamba,作为你网络中的特征提取器; - 替换原 ViT 模块:把原代码中 Backbone(如 ViT-B/16)替换为 VideoMamba 实例,保持"输入视频/图像 Tensor → 输出特征"的接口不变;
- 加载预训练权重:按上表挑选仓库根目录下的
.pth文件,用torch.load加载并model.load_state_dict注入; - 微调(可选):保留分类头等下游模块随机初始化或复用旧权重,按你的超参继续训练即可。
由于 VideoMamba 输出的是标准特征表示,你原有的分类头、检测头或检索对比损失函数都可以原样保留,无需改动任务层代码。
常见问题(FAQ)
Q1:能用于商业项目吗?注意:根据 README.md,VideoMamba 采用非商业许可(Non-commercial license),商用前请务必确认授权方式。
Q2:支持哪些任务?官方列出的主要用途为研究与图像/视频任务:图像分类、动作识别、长期视频理解、视频文本检索等。
Q3:帧数(f8~f64)怎么选?以你数据集的实际采样帧数为准,帧数不匹配的权重需要重新对齐输入维度,优先下载与帧数一致的 Checkpoint 更省事。
写在最后
把 ViT 换成 VideoMamba 的本质,就是"换掉 backbone、接上 Checkpoint":
- 模型定义:
videomamba/video_sm/models/videomamba.py - 使用说明:README.md
- 预训练权重:仓库根目录 60 个
.pth文件(命名规则见上表)
理解命名规则、按任务选对权重、保留原有任务头,三步走完,你的视频项目就完成了向 SSM Backbone 的平滑迁移。
【免费下载链接】VideoMamba
相关推荐
终极指南:如何将yamllint无缝集成到你的开发工作流中
终极指南:如何将yamllint无缝集成到你的开发工作流中 yamllint是一个强大的YAML文件语法检查和格式规范工具,能够帮助你检测YAML文件中的语法错
NVIDIA Efficient-DLM-4B:革命性扩散语言模型如何实现并行文本生成
NVIDIA Efficient DLM 4B:革命性扩散语言模型如何实现并行文本生成 Efficient DLM 4B是一款专为并行生成设计的基础扩散语言模型
pytest 10分钟跑通:别再手写难看的断言了
pytest 10分钟跑通:别再手写难看的断言了 pytest 是 Python 世界最主流的测试框架,解决的是单元测试的真痛点:写个测试不用建类,断言失败时直
测试开发工具质量保障
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考