Repository navigation
v0.2.0
Physiotrack v0.2.0
This release adds new pose-canonicalization models and substantially simplifies how 3DPCNet checkpoints are configured and loaded, alongside a full README overhaul.
✨ Added
- Two new pose-canonicalization checkpoints, trained directly on TotalCapture with 48 augmented camera viewpoints (the earlier
S2/S3models were trained on MMFi and evaluated cross-dataset on TotalCapture):Models.Pose3D.Canonicalizer.Models._3DPCNetTC48_byCam— camera-disjoint split (test cams 41–48)Models.Pose3D.Canonicalizer.Models._3DPCNetTC48_byAction— action-disjoint split (test action rom3)- These cut rotation error by roughly an order of magnitude (≈4.2° → 0.45°) and PA-MPJPE by ~10 mm versus the cross-dataset MMFi models. See the canonicalization comparison table in the README.
- README: a detailed Mermaid architecture diagram of the whole library, a canonicalization model-comparison table, a table of contents, a project-layout map, and collapsible per-subsystem usage sections.
♻️ Changed
- Single bundled inference config for all 3DPCNet models. Every canonicalizer checkpoint shares one network architecture, so inference now reads a single config shipped inside the package (
physiotrack/modules/_3DCPNet/configs/inference_config.yaml). No per-model YAML is downloaded or required. - Model downloads are leaner. The canonicalizer now downloads only the
.pthweights from Hugging Face; configuration is no longer fetched over the network. First-run setup is simpler and has one less failure mode.
⚠️ Removed / Breaking
Models.Pose3D.Canonicalizer.Configsenum removed. It only pointed at the per-model YAMLs that are no longer used. If you referenced it directly, drop the reference — the canonicalizer resolves its config automatically. Model selection (Models.Pose3D.Canonicalizer.Models.*) and views (...Canonicalizer.View.*) are unchanged.
🔁 Upgrading
No code changes are required for typical usage:
from physiotrack import canonicalize_pose, Models
canonical = canonicalize_pose(
poses_3d,
model=Models.Pose3D.Canonicalizer.Models._3DPCNetTC48_byCam, # new, recommended
view="front",
)If you were passing a downloaded per-model config path manually, you can stop — omit config_path and the bundled config is used. The GEOMETRIC (training-free) path is unaffected.
📝 Notes
- The four canonicalizer checkpoints on Hugging Face follow the
best_model_3DPCNet*.pthnaming convention; per-model.yamlfiles have been retired. - All architecture/inference code is unchanged for existing models — the new TC48 checkpoints use the same network as the
S2/S3HybridGCNTransformer models and load with the existing code.
Full documentation: see the README. License: GPL-3.0.