同步操作将从 PaddlePaddle/PaddleVideo 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
简体中文 | English
SlowFast是视频分类领域的高精度模型,使用slow和fast两个分支。slow分支以稀疏采样得到的帧作为输入,捕捉视频中的表观信息。fast分支以高频采样得到的帧作为输入,捕获视频中的运动信息,最终将两个分支的特征拼接得到预测结果。
SlowFast Overview
详细内容请参考ICCV 2019论文SlowFast Networks for Video Recognition
SlowFast模型的训练数据采用Kinetics400数据集,数据下载及准备请参考Kinetics-400数据准备
数据准备完成后,可通过如下方式启动训练:
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
python -B -m paddle.distributed.launch --gpus="0,1,2,3,4,5,6,7" --log_dir=log_slowfast main.py --validate -c configs/recognition/slowfast/slowfast.yaml
从头开始训练,使用上述启动命令行或者脚本程序即可启动训练,不需要用到预训练模型。
建议使用多卡训练方式,单卡由于batch_size减小,精度可能会有损失。
SlowFast为3D模型,训练异常耗时,为进一步加速模型的训练,我们实现了Multigrid加速策略算法,其训练启动方式如下:
python -B -m paddle.distributed.launch --selected_gpus="0,1,2,3,4,5,6,7" --log_dir=log-slowfast main.py --validate --multigrid -c configs/recognition/slowfast/slowfast_multigrid.yaml
性能数据如下:
训练策略 | 单个epoch平均耗时/min | 训练总时间/min | 加速比 |
---|---|---|---|
Multigrid | 27.25 | 9758(6.7天) | 2.89x |
Normal | 78.76 | 15438(10.7天) | base |
速度详细数据说明可参考加速文档。
可通过如下命令进行模型测试:
python -B -m paddle.distributed.launch --gpus="0,1,2,3,4,5,6,7" --log_dir=log_slowfast_test main.py --test -c configs/recognition/slowfast/slowfast.yaml -w output/SlowFast/SlowFast_epoch_000196.pdparams
通过 -w
参数指定待测试模型文件的路径,您可以下载我们训练好的模型进行测试SlowFast.pdparams
使用multi_crop
的方式进行评估,因此评估有一定耗时,建议使用多卡评估,加快评估速度。若使用默认方式进行多卡评估,耗时约4小时。
模型最终的评估精度会打印在日志文件中。
若使用单卡评估,启动方式如下:
python -B main.py --test -c configs/recognition/slowfast/slowfast.yaml -w output/SlowFast/SlowFast_epoch_000196.pdparams
在Kinetics400数据集下评估精度及权重文件如下:
Configs | Acc1 | Acc5 | Weights |
---|---|---|---|
slowfast.yaml | 74.35 | 91.33 | slowfast_4x16.pdparams |
slowfast_multigrid.yaml | 75.84 | 92.33 | slowfast_8x8.pdparams |
python3.7 tools/export_model.py -c configs/recognition/slowfast/slowfast.yaml \
-p data/SlowFast.pdparams \
-o inference/SlowFast
上述命令将生成预测所需的模型结构文件SlowFast.pdmodel
和模型权重文件SlowFast.pdiparams
。
python3.7 tools/predict.py --input_file data/example.avi \
--config configs/recognition/slowfast/slowfast.yaml \
--model_file inference/SlowFast/SlowFast.pdmodel \
--params_file inference/SlowFast/SlowFast.pdiparams \
--use_gpu=True \
--use_tensorrt=False
输出示例如下:
Current video file: data/example.avi
top-1 class: 5
top-1 score: 1.0
可以看到,使用在Kinetics-400上训练好的SlowFast模型对data/example.avi
进行预测,输出的top1类别id为5
,置信度为1.0。通过查阅类别id与名称对应表data/k400/Kinetics-400_label_list.txt
,可知预测类别名称为archery
。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。