动作识别需要一段连续视频,而单帧姿态坐标只描述身体位置。PyTorchVideo 的 Kinetics 预训练分类器可以给短片输出动作候选,但类别集合有限。下面使用官方 SlowFast 路径解释采样与前五名核对,未运行模型。
先按官方例子验证环境
打开 PyTorchVideo 官方 Torch Hub 分类教程,按其 Imports、Load Model、Setup Labels 与 Input Transform 完整准备。保留 slowfast_r50、Kinetics 400 标签映射和 PackPathway;别换 slow_r50 后仍传两个路径。教程依赖历史 torchvision 视频变换,当前环境不兼容时先按该项目的兼容环境复现。

输入需要两种时间采样路径
官方 SlowFast 示例固定 num_frames=32、sampling_rate=2、frames_per_second=30,窗口约为 32×2/30 秒,归一化均值0.45、标准差0.225。快路径保留32帧,慢路径抽取其中较少帧。空间缩放与裁切不能替代时间抽样;把连续32原帧直接当正确输入可能改变动作速度。
在教程变量已准备后换自有视频
from pytorchvideo.data.encoded_video import EncodedVideo
import torch
video = EncodedVideo.from_path("own_action.mp4")
start_sec = 0.0
video_data = video.get_clip(start_sec=start_sec, end_sec=start_sec+clip_duration)
video_data = transform(video_data)
inputs = [x.to(device)[None,...] for x in video_data["video"]]
with torch.no_grad(): p = model(inputs).softmax(dim=1)
values, ids = p.topk(5, dim=1)
for score, idx in zip(values[0],ids[0]):
print(kinetics_id_to_classname[int(idx)],float(score))
clip_duration、transform、model、device 与标签字典需由上一步官方教程定义,此块不是独立完整脚本。选只含一个主要动作的自有短片,先记下真实动作,别看输出后倒推真值。
候选分数不等于动作证据
比较前五名是否包含真实动作;若“拿杯子”和“喝水”混淆,回看采样窗口有没有覆盖举杯与接触嘴部。换起始时间后标签跳变可能来自内容改变,不一定是程序错误。未知类别也会被分到已知类别,不能把高分作为危险行为、心理意图或运动规范判断。下一步对多个相同动作的授权片段检查稳定性,并保留错误候选。
参考资料
依据 2026-10-03 读取的官方资料整理:官方文档 1。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/33154.html