VideoMAE视频分类API速查:VideoMAEForVideoClassification与FeatureExtractor全参数参考

  • 人工智能
  • 计算机视觉
  • 视频

【免费下载链接】videomae-small-finetuned-ssv2

项目地址: https://ai.gitcode.com/MCG-NJU/videomae-small-finetuned-ssv2
点击查看 免费下载

videomae-small-finetuned-ssv2 是一个基于 VideoMAE 架构、经自监督预训练后在 Something-Something V2(SSV2)数据集上微调的小型视频分类模型,可将视频输入识别为 174 种日常物体交互动作之一。本文将它的两大核心 API——VideoMAEForVideoClassification(分类模型)和 VideoMAEFeatureExtractor(视频特征提取器)的全部参数逐一拆解,帮你快速上手视频分类任务 🎬。

模型定位:VideoMAE 小模型能做什么?

VideoMAE 是 Masked Autoencoders(MAE)思想在视频领域的扩展,架构类似 ViT(Vision Transformer):

  • 视频被切成 16×16 像素的图块(patch),并沿时间维度按 tubelet_size=2 打包成"体素块"
  • 序列前加 [CLS] token,其最终隐状态即整段视频的特征表示
  • 该模型已接好分类头,开箱即用于 SSV2 的 174 类动作识别
  • 测试集表现:Top-1 准确率 66.8%,Top-5 准确率 90.3%

一句话总结:有 SSV2 风格的动作识别需求,或想拿它做视频特征底座微调其他任务,选它就对了。

快速上手:5 步完成视频分类

from transformers import VideoMAEFeatureExtractor, VideoMAEForVideoClassification
import numpy as np, torch

# 1. 加载特征提取器 + 模型
feature_extractor = VideoMAEFeatureExtractor.from_pretrained("MCG-NJU/videomae-small-finetuned-ssv2")
model = VideoMAEForVideoClassification.from_pretrained("MCG-NJU/videomae-small-finetuned-ssv2")

# 2. 准备视频:形状为 (num_frames, 3, H, W) 的帧列表,本模型为 (16, 3, 224, 224)
video = list(np.random.randn(16, 3, 224, 224))

# 3. 预处理:自动 resize、中心裁剪、归一化
inputs = feature_extractor(video, return_tensors="pt")

# 4. 前向推理
with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits

# 5. 读取预测类别
predicted_class_idx = logits.argmax(-1).item()
print("Predicted class:", model.config.id2label[predicted_class_idx])

关键点:

步骤要点
视频输入帧序列列表,每帧形状 (3, 224, 224),共 16 帧
return_tensors="pt"输出 PyTorch 张量;也可用 "np" / "tf"
读取类别名通过 model.config.id2label 字典映射

VideoMAEFeatureExtractor 全参数参考

参数默认值定义在 preprocessor_config.json 中:

参数名本模型取值含义说明
feature_extractor_typeVideoMAEFeatureExtractor特征提取器类型标识
do_resizetrue是否缩放输入视频帧
size224缩放目标尺寸(宽高均 224)
resample2插值方式,2 表示 BICUBIC(双三次)
do_center_croptrue是否做中心裁剪(防止非正方形画面拉伸变形)
do_normalizetrue是否归一化像素值
image_mean[0.485, 0.456, 0.406]ImageNet 训练集 RGB 三通道均值
image_std[0.229, 0.224, 0.225]ImageNet 训练集 RGB 三通道标准差

调用时可临时覆盖的参数(无需修改配置文件):

inputs = feature_extractor(
    video,
    return_tensors="pt",   # 张量框架:pt / np / tf
    do_pad=True,           # 视频长短不一时是否填充对齐
    padding="longest",     # 以批中最长视频为准填充
)

💡 小贴士:image_mean / image_std 采用 ImageNet 统计值,如果你的视频数据色彩分布差异极大,微调时可自行调整。

VideoMAEForVideoClassification 全参数参考

模型超参定义在 config.json 中,按模块分组速查:

编码器(Encoder)核心参数

参数名本模型取值含义说明
model_typevideomae模型架构类型
hidden_size384编码器隐藏层维度(决定模型"大小")
num_hidden_layers12Transformer 编码器层数
num_attention_heads16多头注意力头数(384 ÷ 16 = 24/头)
intermediate_size1536前馈网络(FFN)中间维度
image_size224输入帧分辨率
patch_size16空间图块大小(16×16,即每帧 14×14=196 个 patch)
tubelet_size2时间维体素块长度(每 2 帧合并为一个时间 token)
num_frames16固定输入帧数
num_channels3输入通道数(RGB)
hidden_actgelu激活函数
layer_norm_eps1e-12LayerNorm 数值稳定项
qkv_biastrue注意力 Q/K/V 投影是否使用偏置
initializer_range0.02权重初始化截断正态分布标准差
hidden_dropout_prob0.0隐层 Dropout(推理配置为 0)
attention_probs_dropout_prob0.0注意力 Dropout(推理配置为 0)
torch_dtypefloat32权重存储精度

解码器(Decoder)参数

参数名本模型取值含义说明
decoder_hidden_size192解码器隐藏层维度(比编码器更窄)
decoder_intermediate_size768解码器 FFN 中间维度
decoder_num_attention_heads3解码器注意力头数
decoder_num_hidden_layers12解码器层数
norm_pix_losstrue预训练时使用像素级归一化损失(仅预训练阶段生效)

分类头与标签参数

参数名本模型取值含义说明
use_mean_poolingtrue用全部 token 均值池化(而非仅 [CLS])输出视频表示
id2label174 项字典类别 ID → 动作名,如 "0": "Approaching [something] with your camera"
label2id174 项字典动作名 → 类别 ID 的反向映射

📌 完整 174 类标签列表可直接查看 config.json,涵盖抓取、倾倒、推拉、折叠等物体交互动作。

输出解读:logits 长什么样?

模型前向输出 outputs.logits 形状为 (batch_size, 174):

  • 每一行对应一段视频,174 个值分别是各类别的未归一化得分
  • argmax(-1) 取得分最高的类别 ID
  • 如需概率分布,套一层 torch.softmax(logits, -1) 即可
probs = torch.softmax(logits, dim=-1)
top3 = torch.topk(probs[0], k=3)   # 查看置信度前三的动作
for score, idx in zip(top3.values, top3.indices):
    print(model.config.id2label[idx.item()], score.item())

文件清单:这个仓库里有什么?

文件作用
README.md模型卡:架构说明、使用示例、评估结果
config.json模型超参 + 174 类标签映射(上方参数表的来源)
preprocessor_config.json视频预处理参数(resize / 裁剪 / 归一化)
pytorch_model.binPyTorch 格式模型权重

常见问题 FAQ

Q1:视频分类输入必须是 16 帧吗? 是的,num_frames=16 是预训练时的固定设定。实际项目中先用 OpenCV 或 decord 按固定帧率采样 16 帧,再交给 feature_extractor 处理。

Q2:能换数据集继续微调吗? 可以。将分类头换成你目标类别数(修改 id2label/label2id),加载本模型权重做监督微调即可,这正是预训练模型的价值所在。

Q3:需要安装哪些依赖? transformers、torch 为必备;读取真实视频还需 opencv-python 或 av。安装 transformers 后即可用 from_pretrained 一键加载本模型。

Q4:VideoMAEForVideoClassification 与基础 VideoMAEModel 的区别? 前者内置分类头,直接输出 174 类 logits;后者只输出隐状态,适合自建下游任务(如自训分类器、做特征提取)。

写在最后

这份速查覆盖了 videomae-small-finetuned-ssv2 视频分类模型的全部可调参数:特征侧 8 项预处理参数 + 模型侧编码器、解码器、分类头共 20 余项配置。配合上方 5 步代码骨架,你已具备完成一段视频动作识别推理的全部信息 🚀

  • 人工智能
  • 计算机视觉
  • 视频

【免费下载链接】videomae-small-finetuned-ssv2

项目地址: https://ai.gitcode.com/MCG-NJU/videomae-small-finetuned-ssv2
点击查看 免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值