本系统旨在解决大规模 AMASS 动作捕捉数据集(.npz 格式)的分类难题。系统结合了基于物理特征的启发式规则分拣(前期)与基于深度学习的迭代自训练(Self-Training)(后期),实现了从海量杂乱数据到有序分类目录的自动化转化。
整个系统的运作分为两个阶段:
这是系统的前置工作。在模型还未训练时,通过物理公式提取动作特征。
- 特征提取:分析水平速度 ()、关节活跃度 ()、高度变化 () 等 10 项物理指标。
- 双重决策:
- 关键词匹配:优先识别文件名中的
run,jump,sit等关键词。 - 决策树分类:对无关键词文件,通过物理阈值(如 判定为地面动作)进行初步归类。
- 作用:为阶段 2 提供高质量的“种子数据”(Labeled Data)。
基于阶段 1 的成果,利用神经网络进行自监督学习(代码见前文交流)。
- 动态阈值:从高置信度(0.98)开始,逐步收敛至 0.85。
- 决策机制:引入 Margin (边缘检测) 与 Sample Weighting (置信度加权),确保自动标注的准确性。
- 虚拟系统:在 CSV 中记录状态,不物理移动原始文件,确保数据安全。
- 左图 (Loss):展示了加权损失函数的收敛情况。曲线稳步下降,说明模型能有效吸收自动标注带来的新知识。
- 右图 (Growth & Entropy):
- 蓝线:展示了数据集的膨胀过程,从约 2000 个种子样本增长到 14000+ 个。
- 绿线 (熵):监控类别的多样性,确保模型没有发生“模式塌陷”(即把所有数据都分给某一类)。
- 零风险分拣:采用“虚拟索引”逻辑,仅在导出阶段进行物理复制,保护原始数据集。
- RAM 高速缓存:一次性将
.npz特征载入内存,训练速度提升 20-50 倍。 - 多层递归搜索:支持任意深度的文件夹结构,自动识别路径中的类别关键词。
- 智能模糊匹配:忽略大小写,支持
Run,Running,tracking_run等多种命名兼容。
pip install numpy torch pandas tqdm matplotlib
将原始散乱的 .npz 文件进行物理初筛:
python classify_complete.py
- 该脚本会根据物理规则在
TARGET_DIR生成最初的分类文件夹。
运行主清洗程序(cleaner_ultimate.py):
- 模型会读取初筛结果作为种子,自动分拣剩余的
unlabeled数据。 - 训练完成后,输入
y即可导出最终整齐的分类结果。
导出后的文件夹可直接用于后续算法训练或发给团队成员:
CLEANED_OUTPUT/
├── tracking_run/
│ ├── auto_0.99_subject1_run.npz
│ └── original_run_01.npz
├── tracking_jump/
│ └── ...
└── tracking_dance/
└── ...
- 前置工作的重要性:
classify_complete.py决定的“种子数据”质量直接影响 AI 的演化方向。如果发现某类分错了,请先调整该脚本中的物理阈值。 - 导出检查:建议在导出后,对置信度较低(文件名中
auto_0.8x)的文件进行人工抽检。
它可以将原本需要数周的人工标注工作,缩短为**“一键分拣 + 数小时机器运行”**。无论是同学协作还是科研实验,它都能为你提供最整洁的数据基础。
