@inproceedings{feichtenhofer2019slowfast,
title={Slowfast networks for video recognition},
author={Feichtenhofer, Christoph and Fan, Haoqi and Malik, Jitendra and He, Kaiming},
booktitle={Proceedings of the IEEE international conference on computer vision},
pages={6202--6211},
year={2019}
}
配置文件 | 分辨率 | GPU 数量 | 主干网络 | 预训练 | top1 准确率 | top5 准确率 | 推理时间 (video/s) | GPU 显存占用 (M) | ckpt | log | json |
---|---|---|---|---|---|---|---|---|---|---|---|
slowonly_r50_4x16x1_256e_kinetics400_rgb | 短边 256 | 8x4 | ResNet50 | None | 72.76 | 90.51 | x | 3168 | ckpt | log | json |
slowonly_r50_video_4x16x1_256e_kinetics400_rgb | 短边 320 | 8x2 | ResNet50 | None | 72.90 | 90.82 | x | 8472 | ckpt | log | json |
slowonly_r50_8x8x1_256e_kinetics400_rgb | 短边 256 | 8x4 | ResNet50 | None | 74.42 | 91.49 | x | 5820 | ckpt | log | json |
slowonly_r50_4x16x1_256e_kinetics400_rgb | 短边 320 | 8x2 | ResNet50 | None | 73.02 | 90.77 | 4.0 (40x3 frames) | 3168 | ckpt | log | json |
slowonly_r50_8x8x1_256e_kinetics400_rgb | 短边 320 | 8x3 | ResNet50 | None | 74.93 | 91.92 | 2.3 (80x3 frames) | 5820 | ckpt | log | json |
slowonly_imagenet_pretrained_r50_4x16x1_150e_kinetics400_rgb | 短边 320 | 8x2 | ResNet50 | ImageNet | 73.39 | 91.12 | x | 3168 | ckpt | log | json |
slowonly_imagenet_pretrained_r50_8x8x1_150e_kinetics400_rgb | 短边 320 | 8x4 | ResNet50 | ImageNet | 75.55 | 92.04 | x | 5820 | ckpt | log | json |
slowonly_nl_embedded_gaussian_r50_4x16x1_150e_kinetics400_rgb | 短边 320 | 8x2 | ResNet50 | ImageNet | 74.54 | 91.73 | x | 4435 | ckpt | log | json |
slowonly_nl_embedded_gaussian_r50_8x8x1_150e_kinetics400_rgb | 短边 320 | 8x4 | ResNet50 | ImageNet | 76.07 | 92.42 | x | 8895 | ckpt | log | json |
slowonly_r50_4x16x1_256e_kinetics400_flow | 短边 320 | 8x2 | ResNet50 | ImageNet | 61.79 | 83.62 | x | 8450 | ckpt | log | json |
slowonly_r50_8x8x1_196e_kinetics400_flow | 短边 320 | 8x4 | ResNet50 | ImageNet | 65.76 | 86.25 | x | 8455 | ckpt | log | json |
在数据基准测试中,比较两种不同的数据预处理方法 (1) 视频分辨率为 340x256, (2) 视频分辨率为短边 320px, (3) 视频分辨率为短边 256px.
配置文件 | 分辨率 | GPU 数量 | 主干网络 | 输入 | 预训练 | top1 准确率 | top5 准确率 | 测试方案 | ckpt | log | json |
---|---|---|---|---|---|---|---|---|---|---|---|
slowonly_r50_randomresizedcrop_340x256_4x16x1_256e_kinetics400_rgb | 340x256 | 8x2 | ResNet50 | 4x16 | None | 71.61 | 90.05 | 10 clips x 3 crops | ckpt | log | json |
slowonly_r50_randomresizedcrop_320p_4x16x1_256e_kinetics400_rgb | 短边 320 | 8x2 | ResNet50 | 4x16 | None | 73.02 | 90.77 | 10 clips x 3 crops | ckpt | log | json |
slowonly_r50_randomresizedcrop_256p_4x16x1_256e_kinetics400_rgb | 短边 256 | 8x4 | ResNet50 | 4x16 | None | 72.76 | 90.51 | 10 clips x 3 crops | ckpt | log | json |
配置文件 | 分辨率 | 主干网络 | 预训练 | w. OmniSource | top1 准确率 | top5 准确率 | ckpt | log | json |
---|---|---|---|---|---|---|---|---|---|
slowonly_r50_4x16x1_256e_kinetics400_rgb | 短边 320 | ResNet50 | None | ❌ | 73.0 | 90.8 | ckpt | log | json |
x | x | ResNet50 | None | ✔️ | 76.8 | 92.5 | ckpt | x | x |
slowonly_r101_8x8x1_196e_kinetics400_rgb | x | ResNet101 | None | ❌ | 76.5 | 92.7 | ckpt | x | x |
x | x | ResNet101 | None | ✔️ | 80.4 | 94.4 | ckpt | x | x |
配置文件 | 分辨率 | GPU 数量 | 主干网络 | 预训练 | top1 准确率 | top5 准确率 | ckpt | log | json |
---|---|---|---|---|---|---|---|---|---|
slowonly_r50_video_8x8x1_256e_kinetics600_rgb | 短边 256 | 8x4 | ResNet50 | None | 77.5 | 93.7 | ckpt | log | json |
配置文件 | 分辨率 | GPU 数量 | 主干网络 | 预训练 | top1 准确率 | top5 准确率 | ckpt | log | json |
---|---|---|---|---|---|---|---|---|---|
slowonly_r50_video_8x8x1_256e_kinetics700_rgb | 短边 256 | 8x4 | ResNet50 | None | 65.0 | 86.1 | ckpt | log | json |
配置文件 | 分辨率 | GPU 数量 | 主干网络 | 预训练 | top1 准确率 | 类别平均准确率 | ckpt | log | json |
---|---|---|---|---|---|---|---|---|---|
slowonly_imagenet_pretrained_r50_4x16x1_120e_gym99_rgb | 短边 256 | 8x2 | ResNet50 | ImageNet | 79.3 | 70.2 | ckpt | log | json |
slowonly_kinetics_pretrained_r50_4x16x1_120e_gym99_flow | 短边 256 | 8x2 | ResNet50 | Kinetics | 80.3 | 71.0 | ckpt | log | json |
1: 1 融合 | 83.7 | 74.8 |
配置文件 | 分辨率 | GPU 数量 | 主干网络 | 预训练 | top1 准确率 | ckpt | log | json |
---|---|---|---|---|---|---|---|---|
slowonly_imagenet_pretrained_r50_8x8x1_64e_jester_rgb | 高 100 | 8 | ResNet50 | ImageNet | 97.2 | ckpt | log | json |
配置文件 | GPU 数量 | 主干网络 | 预训练 | top1 准确率 | top5 准确率 | GPU 显存占用 (M) | ckpt | log | json |
---|---|---|---|---|---|---|---|---|---|
slowonly_imagenet_pretrained_r50_8x4x1_64e_hmdb51_rgb | 8 | ResNet50 | ImageNet | 37.52 | 71.50 | 5812 | ckpt | log | json |
slowonly_k400_pretrained_r50_8x4x1_40e_hmdb51_rgb | 8 | ResNet50 | Kinetics400 | 65.95 | 91.05 | 5812 | ckpt | log | json |
配置文件 | GPU 数量 | 主干网络 | 预训练 | top1 准确率 | top5 准确率 | GPU 显存占用 (M) | ckpt | log | json |
---|---|---|---|---|---|---|---|---|---|
slowonly_imagenet_pretrained_r50_8x4x1_64e_ucf101_rgb | 8 | ResNet50 | ImageNet | 71.35 | 89.35 | 5812 | ckpt | log | json |
slowonly_k400_pretrained_r50_8x4x1_40e_ucf101_rgb | 8 | ResNet50 | Kinetics400 | 92.78 | 99.42 | 5812 | ckpt | log | json |
配置文件 | GPU 数量 | 主干网络 | 预训练 | top1 准确率 | top5 准确率 | GPU 显存占用 (M) | ckpt | log | json |
---|---|---|---|---|---|---|---|---|---|
slowonly_imagenet_pretrained_r50_8x4x1_64e_sthv1_rgb | 8 | ResNet50 | ImageNet | 46.63 | 77.19 | 7759 | ckpt | log | json |
注:
- 这里的 GPU 数量 指的是得到模型权重文件对应的 GPU 个数。默认地,MMAction2 所提供的配置文件对应使用 8 块 GPU 进行训练的情况。 依据 线性缩放规则,当用户使用不同数量的 GPU 或者每块 GPU 处理不同视频个数时,需要根据批大小等比例地调节学习率。 如,lr=0.01 对应 4 GPUs x 2 video/gpu,以及 lr=0.08 对应 16 GPUs x 4 video/gpu。
- 这里的 推理时间 是根据 基准测试脚本 获得的,采用测试时的采帧策略,且只考虑模型的推理时间, 并不包括 IO 时间以及预处理时间。对于每个配置,MMAction2 使用 1 块 GPU 并设置批大小(每块 GPU 处理的视频个数)为 1 来计算推理时间。
- 我们使用的 Kinetics400 验证集包含 19796 个视频,用户可以从 验证集视频 下载这些视频。同时也提供了对应的 数据列表 (每行格式为:视频 ID,视频帧数目,类别序号)以及 标签映射 (类别序号到类别名称)。
对于数据集准备的细节,用户可参考 数据集准备文档 中的 Kinetics400 部分。
用户可以使用以下指令进行模型训练。
python tools/train.py ${CONFIG_FILE} [optional arguments]
例如:以一个确定性的训练方式,辅以定期的验证过程进行 SlowOnly 模型在 Kinetics400 数据集上的训练。
python tools/train.py configs/recognition/slowonly/slowonly_r50_4x16x1_256e_kinetics400_rgb.py \
--work-dir work_dirs/slowonly_r50_4x16x1_256e_kinetics400_rgb \
--validate --seed 0 --deterministic
更多训练细节,可参考 基础教程 中的 训练配置 部分。
用户可以使用以下指令进行模型测试。
python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments]
例如:在 Kinetics400 数据集上测试 SlowOnly 模型,并将结果导出为一个 json 文件。
python tools/test.py configs/recognition/slowonly/slowonly_r50_4x16x1_256e_kinetics400_rgb.py \
checkpoints/SOME_CHECKPOINT.pth --eval top_k_accuracy mean_class_accuracy \
--out result.json --average-clips=prob
更多测试细节,可参考 基础教程 中的 测试某个数据集 部分。