Hand Tracking Toolkit - 评估与可视化
概述
Hand Tracking Toolkit 是来自 Meta Facebook Research 的综合工具包,用于评估和可视化 3D 手部追踪系统。它为 HOT3D 数据集提供标准化指标、可视化工具和数据加载器,是研究人员在多视角自我中心数据上开发和基准测试手部追踪算法的重要工具。
适用用途:评估手部追踪性能、生成评估报告、可视化 3D 预测结果与真实标注的对比。
何时使用此技能
当你需要以下操作时可使用本工具:
- 使用标准指标评估手部追踪算法
- 可视化 3D 手部姿态预测与真实标注
- 在 HOT3D 数据集上进行基准测试
- 生成评估报告与排行榜
- 比较不同的追踪方法
- 调试手部追踪预测结果
核心能力
- 标准指标
计算广泛使用的手部追踪指标:
- PA-MPJPE:对齐后的逐顶点平均每关节位置误差
- MPJPE:平均每关节位置误差
- AUC:误差阈值曲线下面积
- PCK:正确关键点百分比
- Mesh error:表面到表面距离
- 可视化工具
丰富的可视化选项:
- 3D 骨架图
- 多视角投影
- 误差热力图
- 轨迹可视化
- 并排对比
- 数据加载器
便捷的数据加载:
- HOT3D 数据集序列
- 真实标注(ground truth annotations)
- 预测格式标准化
- 批量处理支持
快速开始
Clone repository
git clone https://github.com/facebookresearch/hand_tracking_toolkit.git cd hand_tracking_toolkit
Install
pip install -r requirements.txt
Run evaluation
python evaluate.py
--predictions path/to/predictions.pkl
--ground_truth path/to/hot3d/sequence
--output_dir ./results
Generate visualizations
python visualize.py
--predictions path/to/predictions.pkl
--ground_truth path/to/hot3d/sequence
--output visualizations.png
使用示例
示例 1:评估预测结果
from toolkit import Evaluator import pickle
Load predictions
with open('predictions.pkl', 'rb') as f: predictions = pickle.load(f)
Load ground truth
evaluator = Evaluator() evaluator.load_ground_truth('path/to/hot3d_sequence')
Compute metrics
metrics = evaluator.evaluate(predictions)
print(f"PA-MPJPE: {metrics['pa_mpjpe']:.2f} mm") print(f"AUC: {metrics['auc']:.3f}") print(f"PCK@0.1: {metrics['pck_01']*100:.1f}%")
示例 2:可视化结果
from toolkit import Visualizer
viz = Visualizer()
Load data
viz.load_predictions('predictions.pkl') viz.load_ground_truth('ground_truth_path')
Create visualization
fig = viz.plot_3d_skeleton( frame_id=100, show_pred=True, show_gt=True, show_errors=True )
fig.savefig('comparison_3d.png')
示例 3:生成报告
from toolkit import ReportGenerator
report = ReportGenerator() report.load_evaluation_results('results.json')
Generate PDF report
report.generate_pdf( output_path='evaluation_report.pdf', include_plots=True, include_per_joint_errors=True )
支持的格式
预测格式:
predictions = { 'sequence_id': 'seq001', 'frames': [ { 'frame_id': 0, 'left_hand': np.array((21, 3)), # 21 joints x 3 coords 'right_hand': np.array((21, 3)), 'confidence': np.array(21), }, # ... more frames ] }
指标参考
指标 | 说明 | 是否越低越好
MPJPE | 平均每关节位置误差(mm) | 是
PA-MPJPE | 对齐后的 MPJPE(procrustes) | 是
AUC | 误差阈值曲线下面积 | 否
PCK | 阈值内的关键点百分比 | 否
集成
可配合使用:
- hot3d:主要数据集
- Custom trackers:将预测结果转换为支持的格式
- Visualization tools:Matplotlib、Plotly、Open3D
最佳实践
- 将预测结果标准化为所需格式
- 使用多个指标进行全面评估
- 可视化误差以理解失败模式
- 报告逐关节误差以进行详细分析
- 在多个序列上交叉验证
环境要求
- Python 3.8+
- NumPy、SciPy
- Matplotlib(用于绘图)
- Open3D(用于 3D 可视化)
- PyTorch(可选,用于加载模型)
参考
- GitHub:https://github.com/facebookresearch/hand_tracking_toolkit
- HOT3D:https://facebookresearch.github.io/hot3d
- Challenge:https://eval.ai/web/challenges/challenge-page/...
许可证
Apache 2.0