同步操作将从 PaddlePaddle/PaddleVideo 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
English | 简体中文
Video-Swin-Transformer是基于Swin Transformer的视频分类模型,其利用了Swin Transformer的多尺度建模和高效局部注意力特性,目前在Kinetics-400数据集上达到了SOTA精度,超过了同为transformer结构的TimeSformer模型。
K400数据下载及准备请参考Kinetics-400数据准备
下载图像预训练模型SwinTransformer_imagenet.pdparams作为Backbone初始化参数,或通过wget命令下载
wget https://videotag.bj.bcebos.com/PaddleVideo-release2.2/SwinTransformer_imagenet.pdparams
打开configs/recognition/videoswin/videoswin_k400_videos.yaml
,将下载好的权重存放路径填写到下方pretrained:
之后
MODEL:
framework: "RecognizerTransformer"
backbone:
name: "SwinTransformer3D"
pretrained: 将路径填写到此处
Kinetics400数据集使用8卡训练,训练方式的启动命令如下:
# videos数据格式
python3.7 -u -B -m paddle.distributed.launch --gpus="0,1,2,3,4,5,6,7" --log_dir=log_videoswin main.py --validate -c configs/recognition/videoswin/videoswin_k400_videos.yaml
开启amp混合精度训练,可加速训练过程,其训练启动命令如下:
export FLAGS_conv_workspace_size_limit=800 # MB
export FLAGS_cudnn_exhaustive_search=1
export FLAGS_cudnn_batchnorm_spatial_persistent=1
# videos数据格式
python3.7 -u -B -m paddle.distributed.launch --gpus="0,1,2,3,4,5,6,7" --log_dir=log_videoswin main.py --amp --validate -c configs/recognition/videoswin/videoswin_k400_videos.yaml
另外您可以自定义修改参数配置,以达到在不同的数据集上进行训练/测试的目的,建议配置文件的命名方式为模型_数据集名称_文件格式_数据格式_采样方式.yaml
,参数用法请参考config。
Video-Swin-Transformer模型在训练时同步进行验证,您可以通过在训练日志中查找关键字best
获取模型测试精度,日志示例如下:
Already save the best model (top1 acc)0.7258
由于Video-Swin-Transformer模型测试模式的采样方式是速度稍慢但精度高一些的UniformCrop,与训练过程中验证模式采用的CenterCrop不同,所以训练日志中记录的验证指标topk Acc
不代表最终的测试分数,因此在训练完成之后可以用测试模式对最好的模型进行测试获取最终的指标,命令如下:
python3.7 -B -m paddle.distributed.launch --gpus="0,1,2,3,4,5,6,7" --log_dir=log_videoswin main.py --test -c configs/recognition/videoswin/videoswin_k400_videos.yaml -w "output/VideoSwin/VideoSwin_best.pdparams"
当测试配置采用如下参数时,在Kinetics-400的validation数据集上的测试指标如下:
backbone | Sampling method | num_seg | target_size | Top-1 | checkpoints |
---|---|---|---|---|---|
Swin Transformer | UniformCrop | 32 | 224 | 82.40 | SwinTransformer_k400.pdparams |
python3.7 tools/export_model.py -c configs/recognition/videoswin/videoswin_k400_videos.yaml \
-p data/VideoSwin_k400.pdparams \
-o inference/VideoSwin
上述命令将生成预测所需的模型结构文件VideoSwin.pdmodel
和模型权重文件VideoSwin.pdiparams
。
python3.7 tools/predict.py --input_file data/example.avi \
--config configs/recognition/videoswin/videoswin_k400_videos.yaml \
--model_file inference/VideoSwin/VideoSwin.pdmodel \
--params_file inference/VideoSwin/VideoSwin.pdiparams \
--use_gpu=True \
--use_tensorrt=False
输出示例如下:
Current video file: data/example.avi
top-1 class: 5
top-1 score: 0.9999829530715942
可以看到,使用在Kinetics-400上训练好的Video-Swin-Transformer模型对data/example.avi
进行预测,输出的top1类别id为5
,置信度为0.99。通过查阅类别id与名称对应表data/k400/Kinetics-400_label_list.txt
,可知预测类别名称为archery
。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。