SkelAct:基于骨骼的动作识别模型教程
skelact 项目地址: https://gitcode.com/gh_mirrors/sk/skelact
1、项目介绍
SkelAct 是一个开源项目,由 Hikvision 研究院提供,旨在提供最先进的基于骨骼的动作识别模型。该项目包含了多个在 PyTorch 中实现的模型,例如 Two-Stream CNN、HCN、HCN-Baseline、Ta-CNN 和 Dynamic GCN。这些模型在多个动作识别数据集上取得了优异的性能,并被广泛应用于视频监控、人机交互、运动分析等领域。
2、项目快速启动
环境配置
- Linux (CUDA)
conda create -n skelact python=3.9 -y
conda activate skelact
conda install pytorch=1.11.0 torchvision=0.12.0 cudatoolkit=11.3 -c pytorch -y
pip install 'mmcv-full==1.5.0' -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.11.0/index.html
pip install mmaction2
- macOS (CPU only)
conda create -n skelact python=3.9 -y
conda activate skelact
conda install pytorch=1.12.0 torchvision=0.13.0 -c pytorch -y
pip install 'mmcv-full==1.5.0'
git clone --depth 1 --branch v0.24.0 https://github.com/open-mmlab/mmaction2.git
cd mmaction2
sed -i '' '/decord/d' requirements/build.txt # remove decord from requirements
CC=clang CXX=clang++ CFLAGS='-stdlib=libc++' pip install
数据准备
使用 gen_ntu_rgbd_raw.py
脚本预处理 NTU RGB+D 数据集,并将其放置在 data/
目录下,结构如下:
data/
└── ntu
└── nturgb+d_skeletons_60_3d
├── xsub
│ ├── train.pkl
│ └── val.pkl
└── xview
├── train.pkl
└── val.pkl
训练模型
使用以下命令训练模型:
/tools/run.sh $[CONFIG_FILE] $[GPU_IDS] $[SEED]
例如,使用 2 个 GPU 训练 HCN 模型:
/tools/run.sh configs/hcn/hcn_ntu60_xsub_joint.py 0 1 0
测试模型
使用以下命令测试模型:
python tools/test.py $[CONFIG_FILE] $[CHECKPOINT_FILE] [optional arguments]
例如,测试 HCN 模型:
python tools/test.py configs/hcn/hcn_ntu60_xsub_joint.py work_dirs/hcn_ntu60_xsub_joint/best_top1_acc_epoch_475.pth --eval top_k_accuracy --cfg-options "gpu_ids=[0]"
3、应用案例和最佳实践
SkelAct 可以应用于各种基于骨骼的动作识别任务,例如:
- 人机交互:识别用户手势,控制智能家居设备或游戏。
- 运动分析:分析运动员的动作,提高训练效率。
- 视频监控:识别异常行为,提高安全防范能力。
最佳实践:
- 数据预处理:确保数据集格式正确,并进行必要的预处理,例如归一化、裁剪等。
- 模型选择:根据任务需求选择合适的模型,并进行参数调整。
- 数据增强:使用数据增强技术提高模型的泛化能力。
- 模型评估:使用合适的评估指标评估模型性能,并进行优化。
4、典型生态项目
SkelAct 与其他开源项目有着良好的生态关系,例如:
- MMAction2:一个用于动作识别的开源框架,提供了丰富的工具和模块。
- OpenPose:一个用于人体姿态估计的开源项目,可以生成骨骼数据。
- AlphaPose:一个基于 OpenPose 的轻量级人体姿态估计模型。