/data2/cameron/miniconda3/envs/uva/lib/python3.10/site-packages/sympy/external/gmpy.py:139: UserWarning: gmpy2 version is too old to use (2.0.0 or newer required) gmpy = import_module('gmpy2', min_module_version=_GMPY2_MIN_VERSION, HandKeypointDataset: 264 samples from 2 videos HandKeypointDataset: 4 samples from 1 videos Loading DINOv2 model... ✓ DINOv2 backbone is trainable ✓ DINO embedding dim: 384 ✓ Learnable start keypoint embedding (dim=384) ✓ Feature convs: 3× Conv2d(3×3) at pred_size=64 ✓ Volume head → (B, 4, 1, 64, 64) ✓ Gripper head → (B, 4, 2, 64, 64) [1×1 conv, CE 2-class] ✓ Rotation head → (B, 4, 3, 32, 64, 64) [1×1 conv, CE] Model params: 32,832,780 Epoch 1/30: train_loss=7.0330 train_px=87.9px | test_loss=6.8094 test_px=97.9px -> Saved best (test_loss=6.8094, test_px=97.9px) Epoch 2/30: train_loss=6.4174 train_px=79.6px | test_loss=6.5800 test_px=77.8px -> Saved best (test_loss=6.5800, test_px=77.8px) Epoch 3/30: train_loss=6.1753 train_px=81.1px | test_loss=6.7206 test_px=67.8px Epoch 4/30: train_loss=5.9356 train_px=77.7px | test_loss=6.9393 test_px=83.4px Epoch 5/30: train_loss=5.6569 train_px=75.8px | test_loss=6.6678 test_px=67.1px Epoch 6/30: train_loss=5.3449 train_px=73.7px | test_loss=7.3466 test_px=74.6px Epoch 7/30: train_loss=5.0385 train_px=70.5px | test_loss=7.1129 test_px=77.7px Epoch 8/30: train_loss=4.5488 train_px=67.2px | test_loss=7.8760 test_px=71.3px Epoch 9/30: train_loss=4.0835 train_px=64.4px | test_loss=8.2255 test_px=73.9px Epoch 10/30: train_loss=3.4778 train_px=52.2px | test_loss=8.4699 test_px=71.2px Epoch 11/30: train_loss=2.9653 train_px=41.8px | test_loss=9.6704 test_px=62.4px Epoch 12/30: train_loss=2.5010 train_px=33.8px | test_loss=10.3463 test_px=74.1px Epoch 13/30: train_loss=2.1622 train_px=26.3px | test_loss=10.4005 test_px=86.1px Epoch 14/30: train_loss=1.9489 train_px=24.3px | test_loss=9.6323 test_px=79.0px Epoch 15/30: train_loss=1.6416 train_px=18.7px | test_loss=11.4924 test_px=81.7px Epoch 16/30: train_loss=1.5044 train_px=17.4px | test_loss=11.6221 test_px=76.0px Epoch 17/30: train_loss=1.3539 train_px=15.1px | test_loss=12.1538 test_px=73.5px Epoch 18/30: train_loss=1.2532 train_px=13.3px | test_loss=11.7101 test_px=78.9px Epoch 19/30: train_loss=1.1986 train_px=12.3px | test_loss=12.4899 test_px=87.3px Epoch 20/30: train_loss=1.0896 train_px=12.4px | test_loss=12.1738 test_px=88.3px Epoch 21/30: train_loss=1.0796 train_px=10.8px | test_loss=13.0092 test_px=68.9px Epoch 22/30: train_loss=0.9794 train_px=9.7px | test_loss=14.2233 test_px=68.9px Epoch 23/30: train_loss=0.9277 train_px=9.5px | test_loss=12.9447 test_px=88.0px Epoch 24/30: train_loss=0.8632 train_px=9.6px | test_loss=14.8049 test_px=95.4px Epoch 25/30: train_loss=0.8172 train_px=9.2px | test_loss=15.7712 test_px=71.4px Epoch 26/30: train_loss=0.8310 train_px=9.3px | test_loss=16.2915 test_px=76.5px Epoch 27/30: train_loss=0.6915 train_px=8.2px | test_loss=15.7431 test_px=68.6px Epoch 28/30: train_loss=0.7555 train_px=9.8px | test_loss=14.7038 test_px=82.9px Epoch 29/30: train_loss=0.6618 train_px=8.5px | test_loss=13.5761 test_px=70.2px Epoch 30/30: train_loss=0.6411 train_px=7.5px | test_loss=13.5373 test_px=74.1px Done! Best test loss: 6.5800 Checkpoints: /data/cameron/scratch_files/hand_vids/checkpoints Visualizations: /data/cameron/scratch_files/hand_vids/visualizations