时序动作检测模型¶
BMN¶
简介¶
@inproceedings{lin2019bmn,
title={Bmn: Boundary-matching network for temporal action proposal generation},
author={Lin, Tianwei and Liu, Xiao and Li, Xin and Ding, Errui and Wen, Shilei},
booktitle={Proceedings of the IEEE International Conference on Computer Vision},
pages={3889--3898},
year={2019}
}
@article{zhao2017cuhk,
title={Cuhk \& ethz \& siat submission to activitynet challenge 2017},
author={Zhao, Y and Zhang, B and Wu, Z and Yang, S and Zhou, L and Yan, S and Wang, L and Xiong, Y and Lin, D and Qiao, Y and others},
journal={arXiv preprint arXiv:1710.08011},
volume={8},
year={2017}
}
模型库¶
ActivityNet feature¶
配置文件 | 特征 | GPU 数量 | AR@100 | AUC | AP@0.5 | AP@0.75 | AP@0.95 | mAP | GPU 显存占用 (M) | 推理时间 (s) | ckpt | log | json |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bmn_400x100_9e_2x8_activitynet_feature | cuhk_mean_100 | 2 | 75.28 | 67.22 | 42.47 | 31.31 | 9.92 | 30.34 | 5420 | 3.27 | ckpt | log | json |
mmaction_video | 2 | 75.43 | 67.22 | 42.62 | 31.56 | 10.86 | 30.77 | 5420 | 3.27 | ckpt | log | json | |
mmaction_clip | 2 | 75.35 | 67.38 | 43.08 | 32.19 | 10.73 | 31.15 | 5420 | 3.27 | ckpt | log | json | |
BMN-official (for reference)* | cuhk_mean_100 | - | 75.27 | 67.49 | 42.22 | 30.98 | 9.22 | 30.00 | - | - | - | - | - |
注:
这里的 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。
对于 特征 这一列,
cuhk_mean_100
表示所使用的特征为利用 anet2016-cuhk 代码库抽取的,被广泛利用的 CUHK ActivityNet 特征,mmaction_video
和mmaction_clip
分布表示所使用的特征为利用 MMAction 抽取的,视频级别 ActivityNet 预训练模型的特征;视频片段级别 ActivityNet 预训练模型的特征。MMAction2 使用 ActivityNet2017 未剪辑视频分类赛道上 anet_cuhk_2017 所提交的结果来为每个视频的时序动作候选指定标签,以用于 BMN 模型评估。
*MMAction2 在 原始代码库 上训练 BMN,并且在 anet_cuhk_2017 的对应标签上评估时序动作候选生成和时序检测的结果。
对于数据集准备的细节,用户可参考 数据集准备文档 中的 ActivityNet 特征部分。
如何训练¶
用户可以使用以下指令进行模型训练。
python tools/train.py ${CONFIG_FILE} [optional arguments]
例如:在 ActivityNet 特征上训练 BMN。
python tools/train.py configs/localization/bmn/bmn_400x100_2x8_9e_activitynet_feature.py
更多训练细节,可参考 基础教程 中的 训练配置 部分。
如何测试¶
用户可以使用以下指令进行模型测试。
python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments]
例如:在 ActivityNet 特征上测试 BMN 模型。
## 注:如果需要进行指标验证,需确测试数据的保标注文件包含真实标签
python tools/test.py configs/localization/bmn/bmn_400x100_2x8_9e_activitynet_feature.py checkpoints/SOME_CHECKPOINT.pth --eval AR@AN --out results.json
用户也可以利用 anet_cuhk_2017 的预测文件评估模型时序检测的结果,并生成时序动作候选文件(即命令中的 results.json
)
python tools/analysis/report_map.py --proposal path/to/proposal_file
注:
(可选项) 用户可以使用以下指令生成格式化的时序动作候选文件,该文件可被送入动作识别器中(目前只支持 SSN 和 P-GCN,不包括 TSN, I3D 等),以获得时序动作候选的分类结果。
python tools/data/activitynet/convert_proposal_format.py
更多测试细节,可参考 基础教程 中的 测试某个数据集 部分。
BSN¶
简介¶
@inproceedings{lin2018bsn,
title={Bsn: Boundary sensitive network for temporal action proposal generation},
author={Lin, Tianwei and Zhao, Xu and Su, Haisheng and Wang, Chongjing and Yang, Ming},
booktitle={Proceedings of the European Conference on Computer Vision (ECCV)},
pages={3--19},
year={2018}
}
模型库¶
ActivityNet feature¶
配置文件 | 特征 | GPU 数量 | 预训练 | AR@100 | AUC | GPU 显存占用 (M) | 迭代时间 (s) | ckpt | log | json |
---|---|---|---|---|---|---|---|---|---|---|
bsn_400x100_1x16_20e_activitynet_feature | cuhk_mean_100 | 1 | None | 74.66 | 66.45 | 41(TEM)+25(PEM) | 0.074(TEM)+0.036(PEM) | ckpt_tem ckpt_pem | log_tem log_pem | json_tem json_pem |
mmaction_video | 1 | None | 74.93 | 66.74 | 41(TEM)+25(PEM) | 0.074(TEM)+0.036(PEM) | ckpt_tem ckpt_pem | log_tem log_pem | json_tem json_pem | |
mmaction_clip | 1 | None | 75.19 | 66.81 | 41(TEM)+25(PEM) | 0.074(TEM)+0.036(PEM) | ckpt_tem ckpt_pem | log_tem log_pem | json_tem json_pem |
注:
这里的 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。
对于 特征 这一列,
cuhk_mean_100
表示所使用的特征为利用 anet2016-cuhk 代码库抽取的,被广泛利用的 CUHK ActivityNet 特征,mmaction_video
和mmaction_clip
分布表示所使用的特征为利用 MMAction 抽取的,视频级别 ActivityNet 预训练模型的特征;视频片段级别 ActivityNet 预训练模型的特征。
对于数据集准备的细节,用户可参考 数据集准备文档 中的 ActivityNet 特征部分。
如何训练¶
用户可以使用以下指令进行模型训练。
python tools/train.py ${CONFIG_FILE} [optional arguments]
例如:
在 ActivityNet 特征上训练 BSN(TEM) 模型。
python tools/train.py configs/localization/bsn/bsn_tem_400x100_1x16_20e_activitynet_feature.py
基于 PGM 的结果训练 BSN(PEM)。
python tools/train.py configs/localization/bsn/bsn_pem_400x100_1x16_20e_activitynet_feature.py
更多训练细节,可参考 基础教程 中的 训练配置 部分。
如何进行推理¶
用户可以使用以下指令进行模型推理。
推理 TEM 模型。
## Note: This could not be evaluated. python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments]
推理 PGM 模型
python tools/misc/bsn_proposal_generation.py ${CONFIG_FILE} [--mode ${MODE}]
推理 PEM 模型
python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments]
例如
利用预训练模型进行 BSN(TEM) 模型的推理。
python tools/test.py configs/localization/bsn/bsn_tem_400x100_1x16_20e_activitynet_feature.py checkpoints/SOME_CHECKPOINT.pth
利用预训练模型进行 BSN(PGM) 模型的推理
python tools/misc/bsn_proposal_generation.py configs/localization/bsn/bsn_pgm_400x100_activitynet_feature.py --mode train
推理 BSN(PEM) 模型,并计算 ‘AR@AN’ 指标,输出结果文件。
## 注:如果需要进行指标验证,需确测试数据的保标注文件包含真实标签 python tools/test.py configs/localization/bsn/bsn_pem_400x100_1x16_20e_activitynet_feature.py checkpoints/SOME_CHECKPOINT.pth --eval AR@AN --out results.json
如何测试¶
用户可以使用以下指令进行模型测试。
TEM
## 注:该命令无法进行指标验证 python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments]
PGM
python tools/misc/bsn_proposal_generation.py ${CONFIG_FILE} [--mode ${MODE}]
PEM
python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments]
例如:
在 ActivityNet 数据集上测试 TEM 模型。
python tools/test.py configs/localization/bsn/bsn_tem_400x100_1x16_20e_activitynet_feature.py checkpoints/SOME_CHECKPOINT.pth
在 ActivityNet 数据集上测试 PGM 模型。
python tools/misc/bsn_proposal_generation.py configs/localization/bsn/bsn_pgm_400x100_activitynet_feature.py --mode test
测试 PEM 模型,并计算 ‘AR@AN’ 指标,输出结果文件。
python tools/test.py configs/localization/bsn/bsn_pem_400x100_1x16_20e_activitynet_feature.py checkpoints/SOME_CHECKPOINT.pth --eval AR@AN --out results.json
注:
(可选项) 用户可以使用以下指令生成格式化的时序动作候选文件,该文件可被送入动作识别器中(目前只支持 SSN 和 P-GCN,不包括 TSN, I3D 等),以获得时序动作候选的分类结果。
python tools/data/activitynet/convert_proposal_format.py
更多测试细节,可参考 基础教程 中的 测试某个数据集 部分。
SSN¶
简介¶
@InProceedings{Zhao_2017_ICCV,
author = {Zhao, Yue and Xiong, Yuanjun and Wang, Limin and Wu, Zhirong and Tang, Xiaoou and Lin, Dahua},
title = {Temporal Action Detection With Structured Segment Networks},
booktitle = {Proceedings of the IEEE International Conference on Computer Vision (ICCV)},
month = {Oct},
year = {2017}
}
模型库¶
配置文件 | GPU 数量 | 主干网络 | 预训练 | mAP@0.3 | mAP@0.4 | mAP@0.5 | 参考代码的 mAP@0.3 | 参考代码的 mAP@0.4 | 参考代码的 mAP@0.5 | GPU 显存占用 (M) | ckpt | log | json | 参考代码的 ckpt | 参考代码的 json |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ssn_r50_450e_thumos14_rgb | 8 | ResNet50 | ImageNet | 29.37 | 22.15 | 15.69 | 27.61 | 21.28 | 14.57 | 6352 | ckpt | log | json | ckpt | 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。
由于 SSN 在训练和测试阶段使用不同的结构化时序金字塔池化方法(structured temporal pyramid pooling methods),请分别参考 ssn_r50_450e_thumos14_rgb_train 和 ssn_r50_450e_thumos14_rgb_test。
MMAction2 使用 TAG 的时序动作候选进行 SSN 模型的精度验证。关于数据准备的更多细节,用户可参考 Data 数据集准备文档 准备 thumos14 的 TAG 时序动作候选。
参考代码的 SSN 模型是和 MMAction2 一样在
ResNet50
主干网络上验证的。注意,这里的 SSN 的初始设置与原代码库的BNInception
骨干网络的设置相同。
如何训练¶
用户可以使用以下指令进行模型训练。
python tools/train.py ${CONFIG_FILE} [optional arguments]
例如:在 thumos14 数据集上训练 SSN 模型。
python tools/train.py configs/localization/ssn/ssn_r50_450e_thumos14_rgb_train.py
更多训练细节,可参考 基础教程 中的 训练配置 部分。
如何测试¶
用户可以使用以下指令进行模型测试。
python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments]
例如:在 ActivityNet 特征上测试 BMN。
## 注:如果需要进行指标验证,需确测试数据的保标注文件包含真实标签
python tools/test.py configs/localization/ssn/ssn_r50_450e_thumos14_rgb_test.py checkpoints/SOME_CHECKPOINT.pth --eval mAP
更多测试细节,可参考 基础教程 中的 测试某个数据集 部分。