Minimal Action Model
This is the first modeling baseline for the public Xperience-10M sample released by Ropedia.
The script is:
scripts/train_min_action_model.py
It trains a small Numpy-only softmax classifier:
annotation.hdf5
-> hand/body/IMU/camera/contact windows
-> action or subtask labels from captions
-> stratified train/test split
-> multinomial logistic regression
-> metrics and predictions
Run:
cd /path/to/Ropedia
source .venv/bin/activate
python scripts/train_min_action_model.py
Default output:
outputs/min_action_model/
Important artifacts:
metrics.json: accuracy, balanced accuracy, macro-F1, weighted-F1, majority baseline.per_class_metrics.csv: precision/recall/F1 per action class.confusion_matrix.csv: true label vs predicted label matrix.predictions.csv: one row per test window.feature_dataset.npz: processed numeric features and labels.model.npz: fitted scaler and softmax weights.
This is a learning baseline, not a publishable benchmark. The public sample is only one episode, so stratified windows from one episode are correlated. For serious evaluation, use many episodes and split by held-out episodes or held-out task instances.
Current Sample Results
Action-label model:
outputs/min_action_model/
accuracy: 0.9828
balanced_accuracy: 0.9644
macro_f1: 0.9688
weighted_f1: 0.9824
majority_baseline: 0.1375
classes: 18
test_windows: 291
Subtask-label model:
outputs/min_subtask_model/
accuracy: 0.9759
balanced_accuracy: 0.9784
macro_f1: 0.9528
weighted_f1: 0.9779
majority_baseline: 0.1448
classes: 14
test_windows: 290
Why the numbers are high:
- This is one public sample episode.
- Windows are stratified randomly, so train/test windows can be close in time.
- The result proves the pipeline works; it does not prove cross-episode generalization.
Next serious evaluation:
many episodes -> split by episode -> train on some episodes -> test on unseen episodes