3. 从预训练模型中提取视频特征

当您没有大型标注数据集或没有足够的计算资源从头开始训练模型以满足您的用例时,特征提取是一个非常有用的工具。它也有助于可视化模型学到了什么。在本教程中,我们提供了一个简单统一的解决方案。您唯一需要准备的是一个包含视频信息(例如,视频路径)的文本文件,其余的我们将处理。您可以使用一条命令行从 GluonCV 视频模型库中许多流行的预训练模型中提取强大的视频特征。

注意

您可以随意跳过本教程,因为特征提取脚本是完整的,可以直接运行。

下载 完整的 Python 脚本: feat_extract_pytorch.py

请查阅 模型库 选择您偏好的预训练模型。

python feat_extract_pytorch.py --config-file CONFIG

准备数据

您的数据可以存储在任何层级结构中。只需使用我们在上一个教程中用于训练模型的格式,并将数据标注文件保存为 video.txt

/home/ubuntu/your_data/video_001.mp4 200 0
/home/ubuntu/your_data/video_001.mp4 300 1
/home/ubuntu/your_data/video_002.mp4 100 2
/home/ubuntu/your_data/video_003.mp4 400 2
/home/ubuntu/your_data/video_004.mp4 200 1
......
/home/ubuntu/your_data/video_100.mp4.100 3

每一行包含三项内容:视频路径、视频帧数和视频标签。然而,第二和第三项在代码中不会使用,它们只是占位符。所以您可以在这两个位置填写任何正数。

请注意,目前我们仅支持直接从视频中提取特征。

准备好 video.txt 文件后,您可以通过以下命令开始提取特征

python feat_extract_pytorch.py --config-file ./scripts/action-recognition/configuration/i3d_resnet50_v1_feat.yaml

提取的特征将保存到配置文件中定义的目录。每个视频将有一个特征文件。例如,video_001.mp4 将有一个名为 i3d_resnet50_v1_kinetics400_video_001_feat.npy 的特征文件。特征是从视频中心提取的,使用了 32 帧的片段。

还有许多其他选项和其他模型供您选择,例如 resnet50_v1b_feat.yamlslowfast_4x16_resnet50_feat.yamltpn_resnet50_f32s2_feat.yamlr2plus1d_v1_resnet50_feat.yamli3d_slow_resnet50_f32s2_feat.yaml。尝试在您自己的数据集上从这些 SOTA 视频模型中提取特征,看看哪个表现更好。

脚本总运行时间:( 0 分 0.000 秒)

由 Sphinx-Gallery 生成的图库