Skip to content

v0.2.0

Choose a tag to compare

@tharindu326 tharindu326 released this 13 Jun 10:24
· 50 commits to main since this release

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 / S3 models 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 .pth weights 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.Configs enum 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*.pth naming convention; per-model .yaml files have been retired.
  • All architecture/inference code is unchanged for existing models — the new TC48 checkpoints use the same network as the S2 / S3 HybridGCNTransformer models and load with the existing code.

Full documentation: see the README. License: GPL-3.0.