# skating_finefs **Repository Path**: kang9kang/skating_finefs ## Basic Information - **Project Name**: skating_finefs - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-15 - **Last Updated**: 2026-03-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 花样滑冰动作分析 本项目使用深度学习模型(ST-GCN, InfoGCN, ViT)对花样滑冰运动员的骨架数据进行分析,旨在实现以下目标: 1. **动作分类**:识别不同的跳跃类型(例如,4T, 3A)。 2. **周数识别**:识别跳跃的旋转周数。 3. **技术打分**:根据动作的执行情况预测技术得分。 ## 环境与安装 本项目使用 `uv` 作为包管理器,以实现快速、可靠的环境设置。 ### 1. 安装 uv 如果您尚未安装 `uv`,请在终端中运行以下命令: ```bash # 对于 macOS 和 Linux curl -LsSf https://astral.sh/uv/install.sh | sh # 对于 Windows powershell -c "irm https://astral.sh/uv/install.ps1 | iex" ``` ### 2. 同步环境 安装 `uv` 后,进入项目根目录,并运行以下命令来创建虚拟环境并安装所有依赖项: ```bash uv sync ``` 此命令会读取 `pyproject.toml` 文件,并安装所有必需的包。 ## 数据准备 在开始训练之前,您需要运行数据处理脚本来生成清洗和格式化后的标注文件。这些文件将被保存在 `data/annotation_prued/` 目录下,是模型训练的直接输入。 运行以下命令来生成数据: ```bash uv run src/utils/generate.py ``` 此脚本会读取 `data/annotation/` 中的原始标注,并生成训练所需的 `.json` 文件。 ## 如何训练 **确保您已经完成了上面的“数据准备”步骤。** 您可以通过指定不同的配置文件来训练不同的模型和任务。所有训练脚本都在 `src/` 目录下。 `uv run` 命令会自动在项目的虚拟环境中执行脚本,因此您**无需**手动激活虚拟环境。 ### 训练示例 #### 1. ST-GCN 模型 * **训练跳跃类型分类模型**: ```bash uv run src/train_stgcn.py --config configs/stgcn.toml ``` * **训练跳跃周数分类模型**: ```bash uv run src/train_stgcn.py --config configs/stgcn_reps.toml ``` * **训练技术分数回归模型**: ```bash uv run src/train_stgcn_score.py --config configs/stgcn_score.toml ``` #### 2. InfoGCN 模型 * **训练跳跃类型分类模型**: ```bash uv run src/train_infogcn.py --config configs/infogcn.toml ``` * **训练跳跃周数分类模型**: ```bash uv run src/train_infogcn.py --config configs/infogcn_reps.toml ``` * **训练技术分数回归模型**: ```bash uv run src/train_infogcn_score.py --config configs/infogcn_score.toml ``` #### 3. ViT (Vision Transformer) 模型 * **训练跳跃类型分类模型**: ```bash uv run src/train_vit.py --config configs/vit.toml ``` * **训练跳跃周数分类模型**: ```bash uv run src/train_vit.py --config configs/vit_reps.toml ``` * **训练技术分数回归模型**: ```bash uv run src/train_vit_score.py --config configs/vit_score.toml ``` 训练过程中,最佳模型和对应的配置文件将保存在 `checkpoints_*` 目录下。 ## 实验结果 (Results) 以下是在验证集上取得的最佳性能摘要。请注意,这些是示例值,您需要用自己训练得到的实际结果替换它们。 | 模型 (Model) | 任务 (Task) | 评估指标 (Metric) | 最佳表现 (Best Performance) | | :--- | :--- | :--- | :--- | | **ST-GCN** | 跳跃类型分类 | 准确率 (Accuracy) | `36.9%` | | **InfoGCN** | 跳跃类型分类 | 准确率 (Accuracy) | `40.3%` | | **ViT** | 跳跃类型分类 | 准确率 (Accuracy) | `79.6%` | | **ST-GCN** | 跳跃周数分类 | 准确率 (Accuracy) | `60.3%` | | **InfoGCN** | 跳跃周数分类 | 准确率 (Accuracy) | `60.9%` | | **ViT** | 跳跃周数分类 | 准确率 (Accuracy) | `78.1%` | | **ST-GCN** | 技术分数回归 | 相关系数 (Corr) | `0.16` | | **InfoGCN** | 技术分数回归 | 相关系数 (Corr) | `0.20` | | **ViT** | 技术分数回归 | 相关系数 (Corr) | `0.44` | ## 项目结构 ``` . ├── configs/ # 存放所有训练的配置文件 (.toml) ├── data/ # 存放原始数据 │ ├── skeleton/ # 骨架数据 (.npz) │ ├── annotation/ # 原始标注数据 (.json) │ └── annotation_prued/ # 清洗后的标注数据 (.json) ├── checkpoints_*/ # 存放训练好的模型权重和配置 ├── src/ # 存放所有 Python 源代码 │ ├── dataset.py # 数据集加载和预处理 │ ├── stgcn.py # ST-GCN 模型定义 │ ├── infogcn.py # InfoGCN 模型定义 │ ├── vit.py # ViT 模型定义 │ ├── train_stgcn.py # ST-GCN 分类训练脚本 │ ├── train_infogcn.py # InfoGCN 分类训练脚本 │ ├── train_vit.py # ViT 分类训练脚本 │ ├── train_stgcn_score.py # ST-GCN 回归训练脚本 │ ├── train_infogcn_score.py # InfoGCN 回归训练脚本 │ ├── train_vit_score.py # ViT 回归训练脚本 │ └── utils/ # 辅助工具模块 │ ├── element.py # 元素定义 │ └── generate.py # 数据生成/处理脚本 ├── pyproject.toml # 项目配置文件和依赖项 └── README.md # 项目说明 ```