YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

Pose Encoder

Trains a shared adapter on top of a frozen PoseFormerV2 encoder for two tasks:

  1. Metric rating β€” Good / Okay / Needs work per exercise metric
  2. Exercise classification β€” which exercise is being performed

The trained adapter weights feed into the multimodal MotiVate pipeline.

Pipeline

MediaPipe 2D
β†’ H36M remap + pad/crop + normalize
β†’ PoseFormerV2 (frozen, 27Γ—544)
β†’ Shared Adapter (trainable, 27Γ—256)
β†’ mean pool
β†’ Rating Head + Exercise Head

Loss = rating_loss + exercise_loss_weight Γ— exercise_loss

Data Sources

Source Path Used for
training.csv / validation.csv train/unimodal/ Train/val split only β€” provides (dataset, clip_id) pairs. No labels are read from these CSVs.
pose_data.npz processed/<dataset>/<clip_id>/mediapipe_result/ Model input β€” MediaPipe 2D pose landmarks per frame.
raw_gt.csv processed/<dataset>/<clip_id>/pose/ Rating labels β€” raw pose measurements. Fed to compute_metrics() at load time to produce Good / Okay / Needs work per metric.
metadata.json processed/<dataset>/ Exercise labels β€” maps each clip_id to its exercise name (fallback: infer from clip_id prefix).

Labels are not pre-computed in the CSVs. They are derived on the fly:

  • Rating targets: raw_gt.csv β†’ compute_metrics(df, exercise) β†’ evaluate_rating() β†’ one of Good(0) / Okay(1) / Needs work(2) per metric. Metrics that can't be evaluated get IGNORE_INDEX = -100 and are excluded from the loss.
  • Exercise targets: looked up from metadata.json and mapped to a class index via EXERCISE_TO_ID.

Setup

cd MotiVate/train
bash setup_poseformer.sh          # clone + download checkpoint
bash setup_poseformer.sh --force  # re-clone

Training

uv run python train/pose_encoder/train_shared_adapter.py --config train/pose_encoder/config.json

Outputs

Saved to checkpoints/shared_adapter/:

  • best_shared_adapter.pt β€” adapter weights for the multimodal pipeline
  • best_model.pt / last_model.pt β€” full checkpoints

val_score = 0.5 Γ— (rating_acc + exercise_acc) β€” used for scheduling, early stopping, and best checkpoint selection.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support