2. 在您自己的数据集上微调 SOTA 视频模型

当您没有大型标注数据集或没有足够的计算资源从头开始训练模型时,微调是在您自己的数据上获得优秀视频模型的重要方法。在本教程中,我们提供了一个简单的统一解决方案。您只需准备一个文本文件,其中包含视频信息(例如,视频路径),剩下的由我们来处理。您可以通过一个简单的命令行从许多流行的预训练模型(例如,I3D, R2+1D, SlowFast 和 TPN)开始微调。

自定义数据加载器

您需要准备的第一件事也是唯一一件事是数据标注文件 train.txtval.txt。我们提供了一个通用的数据加载器供您在自己的数据集上使用。您的数据可以按任何层级结构存储,train.txt 的内容应如下所示:

video_001.mp4 200 0
video_001.mp4 200 0
video_002.mp4 300 0
video_003.mp4 100 1
video_004.mp4 400 2
......
video_100.mp4 200 10

如您所见,每行有三个项,由空格分隔。第一个项是您的训练视频路径,例如 video_001.mp4。第二个项是每个视频的帧数。但您可以在此处放置任何数字,因为我们的视频加载器会在训练期间自动重新计算帧数。第三个项是该视频的标签,例如 0。val.txt 的格式与 train.txt 相同。

准备好 train.txtval.txt 后,您就可以开始了。在本教程中,我们将使用 I3D 模型和 Something-something-v2 数据集作为示例。假设您拥有 Something-something-v2 数据集,并且不想从头开始训练 I3D 模型。首先,按照上述说明准备数据标注文件。其次,遵循此配置文件 i3d_resnet50_v1_custom.yaml。具体来说,您只需要更改该 yaml 文件中的数据路径和类别数量即可。

TRAIN_ANNO_PATH: '/home/ubuntu/data/sthsthv2/sthsthv2_train.txt'
VAL_ANNO_PATH: '/home/ubuntu/data/sthsthv2/sthsthv2_val.txt'
TRAIN_DATA_PATH: '/home/ubuntu/data/sthsthv2/20bn-something-something-v2/'
VAL_DATA_PATH:  '/home/ubuntu/data/sthsthv2/20bn-something-something-v2/'
NUM_CLASSES: 174

如果您想调整其他参数,也很容易做到。根据您的用例更改学习率、批量大小、视频片段长度。通常建议使用较小的学习率,因为模型初始化已经很不错了。

我们也支持在其他模型上进行微调,例如 resnet50_v1b_custom.yaml, slowfast_4x16_resnet50_custom.yaml, tpn_resnet50_f32s2_custom.yaml, r2plus1d_v1_resnet50_custom.yaml, i3d_slow_resnet50_f32s2_custom.yaml。尝试在您自己的数据集上微调这些 SOTA 视频模型,看看效果如何。

如果您想在自己的数据集上提取优质视频特征,请随时阅读下一篇关于特征提取的教程

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

Sphinx-Gallery 生成的图库