From 947571cd150add3858233efa9807c229afe7bdfa Mon Sep 17 00:00:00 2001 From: chaos1203 <1837626960@qq.com> Date: Fri, 27 Oct 2023 16:57:30 +0800 Subject: [PATCH] add stgcnpp_readme_zh_cn.md and fix the formatting of the readme.md in the main branch --- configs/skeleton/posec3d/README.md | 2 +- configs/skeleton/posec3d/README_zh-CN.md | 137 +++++++++++++++++++++++ configs/skeleton/stgcnpp/README.md | 2 +- configs/skeleton/stgcnpp/README_zh-CN.md | 85 ++++++++++++++ 4 files changed, 224 insertions(+), 2 deletions(-) create mode 100644 configs/skeleton/posec3d/README_zh-CN.md create mode 100644 configs/skeleton/stgcnpp/README_zh-CN.md diff --git a/configs/skeleton/posec3d/README.md b/configs/skeleton/posec3d/README.md index 2546706e57..d838468d38 100644 --- a/configs/skeleton/posec3d/README.md +++ b/configs/skeleton/posec3d/README.md @@ -79,7 +79,7 @@ Human skeleton, as a compact representation of human action, has received increa | :---------------------: | :------------: | :--: | :----------: | :------: | :--------------: | :---: | :----: | :-------------------------------------: | :-----------------------------------: | :----------------------------------: | | uniform 48 | keypoint | 8 | SlowOnly-R50 | 69.6 | 10 clips | 14.6G | 3.0M | [config](/configs/skeleton/posec3d/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_hmdb51-split1-keypoint.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_hmdb51-split1-keypoint/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_hmdb51-split1-keypoint_20220815-17eaa484.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_hmdb51-split1-keypoint/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_hmdb51-split1-keypoint.log) | -# Kinetics400 +### Kinetics400 | frame sampling strategy | pseudo heatmap | gpus | backbone | top1 acc | testing protocol | FLOPs | params | config | ckpt | log | | :---------------------: | :------------: | :--: | :----------: | :------: | :--------------: | :---: | :----: | :-------------------------------------: | :-----------------------------------: | :----------------------------------: | diff --git a/configs/skeleton/posec3d/README_zh-CN.md b/configs/skeleton/posec3d/README_zh-CN.md new file mode 100644 index 0000000000..f63871c8ec --- /dev/null +++ b/configs/skeleton/posec3d/README_zh-CN.md @@ -0,0 +1,137 @@ +# PoseC3D + +[重新审视基于骨架的动作识别](https://arxiv.org/abs/2104.13586) + + + +## 摘要 + + + +人体骨架作为人类行为的一种紧凑表征,近年来受到越来越多的关注。许多基于骨架的动作识别方法采用图卷积网络(GCN)来提取人体骨架上的特征。尽管之前的研究取得了积极的成果,但基于 GCN 的方法在鲁棒性、互操作性和可扩展性方面仍受到限制。在这项工作中,我们提出了基于骨架的动作识别新方法 PoseC3D ,它依赖于 3D 热图堆叠而不是图形序列作为人体骨架的基本表示。与基于 GCN 的方法相比,PoseC3D 在学习时空特征方面更有效,对姿态估计噪声的鲁棒性更高,并且在跨数据集设置中具有更好的泛化能力。此外,PoseC3D 可以处理多人场景,无需额外的计算成本,并且其特征可以在早期融合阶段与其他模态轻松集成,这为进一步提升性能提供了巨大的设计空间。在四个具有挑战性的数据集上,PoseC3D 无论是单独用于骨架还是与 RGB 模式结合使用,都始终保持着卓越的性能。 + + + +
+ +
+ + + + + + + + + +
+
+ 姿态估计结果 +
+ +
+
+ +
+
+ 关键点热图三维体可视化 +
+ +
+
+ +
+
+ 肢体热图三维体可视化 +
+ +
+
+ +
+ +## 结果和模型库 + +### FineGYM + +| 帧提取策略 | 热图类型 | GPU数量 | 主干网络 | Mean Top-1 | 测试协议 | FLOPs | 参数量 | 配置文件 | ckpt | log | +| :--------: | :------: | :-----: | :----------: | :--------: | :------: | :---: | :----: | :-------------------------------------------: | :-------------------------------------------: | :------------------------------------------: | +| uniform 48 | keypoint | 8 | SlowOnly-R50 | 93.5 | 10 clips | 20.6G | 2.0M | [config](/configs/skeleton/posec3d/slowonly_r50_8xb16-u48-240e_gym-keypoint.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_r50_8xb16-u48-240e_gym-keypoint/slowonly_r50_8xb16-u48-240e_gym-keypoint_20220815-da338c58.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_r50_8xb16-u48-240e_gym-keypoint/slowonly_r50_8xb16-u48-240e_gym-keypoint.log) | +| uniform 48 | limb | 8 | SlowOnly-R50 | 93.6 | 10 clips | 20.6G | 2.0M | [config](/configs/skeleton/posec3d/slowonly_r50_8xb16-u48-240e_gym-limb.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_r50_8xb16-u48-240e_gym-limb/slowonly_r50_8xb16-u48-240e_gym-limb_20220815-2e6e3c5c.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_r50_8xb16-u48-240e_gym-limb/slowonly_r50_8xb16-u48-240e_gym-limb.log) | + +### NTU60_XSub + +| 帧提取策略 | 热图类型 | GPU数量 | 主干网络 | Mean Top-1 | 测试协议 | FLOPs | 参数量 | 配置文件 | ckpt | log | +| :--------: | :------: | :-----: | :----------: | :--------: | :------: | :---: | :----: | :-------------------------------------------: | :-------------------------------------------: | :------------------------------------------: | +| uniform 48 | keypoint | 8 | SlowOnly-R50 | 93.6 | 10 clips | 20.6G | 2.0M | [config](/configs/skeleton/posec3d/slowonly_r50_8xb16-u48-240e_ntu60-xsub-keypoint.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_r50_8xb16-u48-240e_ntu60-xsub-keypoint/slowonly_r50_8xb16-u48-240e_ntu60-xsub-keypoint_20220815-38db104b.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_r50_8xb16-u48-240e_ntu60-xsub-keypoint/slowonly_r50_8xb16-u48-240e_ntu60-xsub-keypoint.log) | +| uniform 48 | limb | 8 | SlowOnly-R50 | 93.5 | 10 clips | 20.6G | 2.0M | [config](/configs/skeleton/posec3d/slowonly_r50_8xb16-u48-240e_ntu60-xsub-keypoint.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_r50_8xb16-u48-240e_ntu60-xsub-limb/slowonly_r50_8xb16-u48-240e_ntu60-xsub-limb_20220815-af2f119a.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_r50_8xb16-u48-240e_ntu60-xsub-limb/slowonly_r50_8xb16-u48-240e_ntu60-xsub-limb.log) | +| | Fusion | | | 94.0 | | | | | | | + +### UCF101 + +| 帧提取策略 | 热图类型 | GPU数量 | 主干网络 | Mean Top-1 | 测试协议 | FLOPs | 参数量 | 配置文件 | ckpt | log | +| :--------: | :------: | :-----: | :----------: | :--------: | :------: | :---: | :----: | :-------------------------------------------: | :-------------------------------------------: | :------------------------------------------: | +| uniform 48 | keypoint | 8 | SlowOnly-R50 | 86.8 | 10 clips | 14.6G | 3.1M | [config](/configs/skeleton/posec3d/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_ucf101-split1-keypoint.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_ucf101-split1-keypoint/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_ucf101-split1-keypoint_20220815-9972260d.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_ucf101-split1-keypoint/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_ucf101-split1-keypoint.log) | + +### HMDB51 + +| 帧提取策略 | 热图类型 | GPU数量 | 主干网络 | Mean Top-1 | 测试协议 | FLOPs | 参数量 | 配置文件 | ckpt | log | +| :--------: | :------: | :-----: | :----------: | :--------: | :------: | :---: | :----: | :-------------------------------------------: | :-------------------------------------------: | :------------------------------------------: | +| uniform 48 | keypoint | 8 | SlowOnly-R50 | 69.6 | 10 clips | 14.6G | 3.0M | [config](/configs/skeleton/posec3d/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_hmdb51-split1-keypoint.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_hmdb51-split1-keypoint/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_hmdb51-split1-keypoint_20220815-17eaa484.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_hmdb51-split1-keypoint/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_hmdb51-split1-keypoint.log) | + +### Kinetics400 + +| 帧提取策略 | 热图类型 | GPU数量 | 主干网络 | Mean Top-1 | 测试协议 | FLOPs | 参数量 | 配置文件 | ckpt | log | +| :--------: | :------: | :-----: | :----------: | :--------: | :------: | :---: | :----: | :-------------------------------------------: | :-------------------------------------------: | :------------------------------------------: | +| uniform 48 | keypoint | 8 | SlowOnly-R50 | 47.4 | 10 clips | 19.1G | 3.2M | [config](/configs/skeleton/posec3d/slowonly_r50_8xb32-u48-240e_k400-keypoint.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_r50_8xb32-u48-240e_k400-keypoint/slowonly_r50_8xb32-u48-240e_k400-keypoint_20230731-7f498b55.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/posec3d/slowonly_r50_8xb32-u48-240e_k400-keypoint/slowonly_r50_8xb32-u48-240e_k400-keypoint.log) | + +用户可以参照 [准备骨架数据集](/tools/data/skeleton/README_zh-CN.md) 来获取以上配置文件使用的骨架标注。 + +## 如何训练 + +用户可以使用以下指令进行模型训练。 + +```shell +python tools/train.py ${CONFIG_FILE} [optional arguments] +``` + +Example: 以确定性的训练,进行 PoseC3D 模型在 FineGYM 数据集上的训练。 + +```shell +python tools/train.py configs/skeleton/posec3d/slowonly_r50_8xb16-u48-240e_gym-keypoint.py \ + --seed=0 --deterministic +``` + +有关自定义数据集上的训练,可以参考 [Custom Dataset Training](/configs/skeleton/posec3d/custom_dataset_training.md)。 + +更多训练细节,可参考 [训练与测试](/docs/zh_cn/user_guides/train_test.md#%E8%AE%AD%E7%BB%83) 中的 **训练** 部分。 + +## 如何测试 + +用户可以使用以下指令进行模型测试。 + +```shell +python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments] +``` + +Example: 在 FineGYM 数据集上测试 PoseC3D 模型。 + +```shell +python tools/test.py configs/skeleton/posec3d/slowonly_r50_8xb16-u48-240e_gym-keypoint.py \ + checkpoints/SOME_CHECKPOINT.pth +``` + +更多训练细节,可参考 [训练与测试](/docs/zh_cn/user_guides/train_test.md#%E6%B5%8B%E8%AF%95) 中的 **测试** 部分。 + +## 引用 + +```BibTeX +@misc{duan2021revisiting, + title={Revisiting Skeleton-based Action Recognition}, + author={Haodong Duan and Yue Zhao and Kai Chen and Dian Shao and Dahua Lin and Bo Dai}, + year={2021}, + eprint={2104.13586}, + archivePrefix={arXiv}, + primaryClass={cs.CV} +} +``` diff --git a/configs/skeleton/stgcnpp/README.md b/configs/skeleton/stgcnpp/README.md index 368e9527e6..702c4e58c9 100644 --- a/configs/skeleton/stgcnpp/README.md +++ b/configs/skeleton/stgcnpp/README.md @@ -45,7 +45,7 @@ You can use the following command to train a model. python tools/train.py ${CONFIG_FILE} [optional arguments] ``` -Example: train STGCN++ model on NTU60-2D dataset in a deterministic option with periodic validation. +Example: train STGCN++ model on NTU60-2D dataset in a deterministic option. ```shell python tools/train.py configs/skeleton/stgcnpp/stgcnpp_8xb16-joint-u100-80e_ntu60-xsub-keypoint-2d.py \ diff --git a/configs/skeleton/stgcnpp/README_zh-CN.md b/configs/skeleton/stgcnpp/README_zh-CN.md new file mode 100644 index 0000000000..c64c16d229 --- /dev/null +++ b/configs/skeleton/stgcnpp/README_zh-CN.md @@ -0,0 +1,85 @@ +# STGCN++ + +[PYSKL: 实现骨架动作识别的良好实践](https://arxiv.org/abs/2205.09443) + + + +## 摘要 + + + +我们介绍PYSKL:一个基于 PyTorch 的骨架动作识别开源工具箱。该工具箱支持多种骨架动作识别算法,包括基于 GCN 和 CNN 的方法。与现有仅包含一两种算法的开源骨架动作识别项目相比,PYSKL 在统一框架下实现了六种不同的算法,并结合了最新和原创的优秀实践,便于比较功效和效率。我们还提供了一个基于 GCN 的原始骨架动作识别模型 ST-GCN++,该模型无需任何复杂的注意力方案即可实现有竞争力的识别性能,可作为一个强有力的基准。同时,PYSKL 支持九种基于骨架的动作识别基准的训练和测试,并在其中八种基准上实现了最先进的识别性能。为了方便未来的骨架动作识别研究,我们还提供了大量的训练模型和详细的基准测试结果,以提供一些见解。PYSKL发布在这个https网址上,并得到了积极的维护。我们将在添加新功能或基准后更新本报告。当前版本对应 PYSKL v0.2。 + +## 结果和模型库 + +### NTU60_XSub_2D + +| 帧提取策略 | 模式 | GPU数量 | 主干网络 | Top-1 准确率 | 测试协议 | FLOPs | 参数量 | 配置文件 | ckpt | log | +| :---------: | :----------: | :-----: | :------: | :----------: | :------: | :---: | :----: | :------------------------------------------: | :------------------------------------------: | :-----------------------------------------: | +| uniform 100 | joint | 8 | STGCN++ | 89.29 | 10 clips | 1.95G | 1.39M | [config](/configs/skeleton/stgcnpp/stgcnpp_8xb16-joint-u100-80e_ntu60-xsub-keypoint-2d.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-joint-u100-80e_ntu60-xsub-keypoint-2d/stgcnpp_8xb16-joint-u100-80e_ntu60-xsub-keypoint-2d_20221228-86e1e77a.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-joint-u100-80e_ntu60-xsub-keypoint-2d/stgcnpp_8xb16-joint-u100-80e_ntu60-xsub-keypoint-2d.log) | +| uniform 100 | bone | 8 | STGCN++ | 92.30 | 10 clips | 1.95G | 1.39M | [config](/configs/skeleton/stgcnpp/stgcnpp_8xb16-bone-u100-80e_ntu60-xsub-keypoint-2d.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-bone-u100-80e_ntu60-xsub-keypoint-2d/stgcnpp_8xb16-bone-u100-80e_ntu60-xsub-keypoint-2d_20221228-cd11a691.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-bone-u100-80e_ntu60-xsub-keypoint-2d/stgcnpp_8xb16-bone-u100-80e_ntu60-xsub-keypoint-2d.log) | +| uniform 100 | joint-motion | 8 | STGCN++ | 87.30 | 10 clips | 1.95G | 1.39M | [config](/configs/skeleton/stgcnpp/stgcnpp_8xb16-joint-motion-u100-80e_ntu60-xsub-keypoint-2d.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-joint-motion-u100-80e_ntu60-xsub-keypoint-2d/stgcnpp_8xb16-joint-motion-u100-80e_ntu60-xsub-keypoint-2d_20221228-19a34aba.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-joint-motion-u100-80e_ntu60-xsub-keypoint-2d/stgcnpp_8xb16-joint-motion-u100-80e_ntu60-xsub-keypoint-2d.log) | +| uniform 100 | bone-motion | 8 | STGCN++ | 88.76 | 10 clips | 1.95G | 1.39M | [config](/configs/skeleton/stgcnpp/stgcnpp_8xb16-bone-motion-u100-80e_ntu60-xsub-keypoint-2d.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-bone-motion-u100-80e_ntu60-xsub-keypoint-2d/stgcnpp_8xb16-bone-motion-u100-80e_ntu60-xsub-keypoint-2d_20221228-c02a0749.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-bone-motion-u100-80e_ntu60-xsub-keypoint-2d/stgcnpp_8xb16-bone-motion-u100-80e_ntu60-xsub-keypoint-2d.log) | +| | two-stream | | | 92.61 | | | | | | | +| | four-stream | | | 92.77 | | | | | | | + +### NTU60_XSub_3D + +| 帧提取策略 | 模式 | GPU数量 | 主干网络 | Top-1 准确率 | 测试协议 | FLOPs | 参数量 | 配置文件 | ckpt | log | +| :---------: | :----------: | :-----: | :------: | :----------: | :------: | :---: | :----: | :------------------------------------------: | :------------------------------------------: | :-----------------------------------------: | +| uniform 100 | joint | 8 | STGCN++ | 89.14 | 10 clips | 2.96G | 1.4M | [config](/configs/skeleton/stgcnpp/stgcnpp_8xb16-joint-u100-80e_ntu60-xsub-keypoint-3d.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-joint-u100-80e_ntu60-xsub-keypoint-3d/stgcnpp_8xb16-joint-u100-80e_ntu60-xsub-keypoint-3d_20221230-4e455ce3.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-joint-u100-80e_ntu60-xsub-keypoint-3d/stgcnpp_8xb16-joint-u100-80e_ntu60-xsub-keypoint-3d.log) | +| uniform 100 | bone | 8 | STGCN++ | 90.21 | 10 clips | 2.96G | 1.4M | [config](/configs/skeleton/stgcnpp/stgcnpp_8xb16-bone-u100-80e_ntu60-xsub-keypoint-3d.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-bone-u100-80e_ntu60-xsub-keypoint-3d/stgcnpp_8xb16-bone-u100-80e_ntu60-xsub-keypoint-3d_20221230-7f356072.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-bone-u100-80e_ntu60-xsub-keypoint-3d/stgcnpp_8xb16-bone-u100-80e_ntu60-xsub-keypoint-3d.log) | +| uniform 100 | joint-motion | 8 | STGCN++ | 86.67 | 10 clips | 2.96G | 1.4M | [config](/configs/skeleton/stgcnpp/stgcnpp_8xb16-joint-motion-u100-80e_ntu60-xsub-keypoint-3d.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-joint-motion-u100-80e_ntu60-xsub-keypoint-3d/stgcnpp_8xb16-joint-motion-u100-80e_ntu60-xsub-keypoint-3d_20221230-650de5cc.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-joint-motion-u100-80e_ntu60-xsub-keypoint-3d/stgcnpp_8xb16-joint-motion-u100-80e_ntu60-xsub-keypoint-3d.log) | +| uniform 100 | bone-motion | 8 | STGCN++ | 87.45 | 10 clips | 2.96G | 1.4M | [config](/configs/skeleton/stgcnpp/stgcnpp_8xb16-bone-motion-u100-80e_ntu60-xsub-keypoint-3d.py) | [ckpt](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-bone-motion-u100-80e_ntu60-xsub-keypoint-3d/stgcnpp_8xb16-bone-motion-u100-80e_ntu60-xsub-keypoint-3d_20221230-b00440d2.pth) | [log](https://download.openmmlab.com/mmaction/v1.0/skeleton/stgcnpp/stgcnpp_8xb16-bone-motion-u100-80e_ntu60-xsub-keypoint-3d/stgcnpp_8xb16-bone-motion-u100-80e_ntu60-xsub-keypoint-3d.log) | +| | two-stream | | | 91.39 | | | | | | | +| | four-stream | | | 91.87 | | | | | | | + +1. 这里的 **GPU** 数量 指的是得到模型权重文件对应的 GPU 个数。用户在 使用不同数量的 GPU 或每块 GPU 处理不同视频个数时,最好的方法是在调用 `tools/train.py` 时设置 `--auto-scale-lr` ,该参数将根据实际批次大小自动调整学习率和原始批次。 + +2. 对于双流融合,我们使用 **joint : bone = 1 : 1**。对于四流融合,我们使用**joint : joint-motion : bone : bone-motion = 2 : 1 : 2 : 1**。有关多流融合的更多详情信息,请参考[教程](/docs/zh_cn/useful_tools.md#%E5%A4%9A%E6%B5%81%E8%9E%8D%E5%90%88)。 + +## 训练 + +用户可以使用以下指令进行模型训练。 + +```shell +python tools/train.py ${CONFIG_FILE} [optional arguments] +``` + +Example: 以确定性的训练,进行 STGCN++ 模型在 NTU60-2D 数据集上的训练。 + +```shell +python tools/train.py configs/skeleton/stgcnpp/stgcnpp_8xb16-joint-u100-80e_ntu60-xsub-keypoint-2d.py \ + --seed 0 --deterministic +``` + +更多训练细节,可参考 [训练与测试](/docs/zh_cn/user_guides/train_test.md#%E8%AE%AD%E7%BB%83) 中的 **训练** 部分。 + +## 测试 + +用户可以使用以下指令进行模型训练。 + +```shell +python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments] +``` + +Example: 以确定性的训练,加以定期的验证过程进行 STGCN++ 模型在 NTU60-2D 数据集上的训练。 + +```shell +python tools/test.py configs/skeleton/stgcnpp/stgcnpp_8xb16-joint-u100-80e_ntu60-xsub-keypoint-2d.py \ + checkpoints/SOME_CHECKPOINT.pth --dump result.pkl +``` + +更多训练细节,可参考 [训练与测试](/docs/zh_cn/user_guides/train_test.md#%E6%B5%8B%E8%AF%95) 中的 **测试** 部分。 + +## 引用 + +```BibTeX +@misc{duan2022PYSKL, + url = {https://arxiv.org/abs/2205.09443}, + author = {Duan, Haodong and Wang, Jiaqi and Chen, Kai and Lin, Dahua}, + title = {PYSKL: Towards Good Practices for Skeleton Action Recognition}, + publisher = {arXiv}, + year = {2022} +} +```