| [partial train] only training branches: ['arms', 'hands', 'jump_squat', 'locomotion', 'poses'] |
| [base model] loaded 8 branches from model_jump_squat_squat_fast_rise_w10_cuda.pth: ['locomotion', 'jump_squat', 'arms', 'hands', 'seals', 'head', 'torso', 'poses'] |
| Loading data from dataset\clip_data_back_v1_curated_20260610 … |
| [partial load] loading 37 classes, skipping 13: ['bellyseal', 'chestseal', 'headdown', 'headseal', 'headup', 'lhandseal', 'lheadturn', 'llean', 'lshoulderturn', 'rhandseal', 'rheadturn', 'rlean', 'rshoulderturn'] |
| calibration: 37 clips matched to noaction, 1009 clips using own frame-0 fallback |
| classes : ['bellyseal', 'bothhandgesture', 'chestseal', 'fastwalk', 'headdown', 'headseal', 'headup', 'highknee', 'jump', 'jump_back', 'larmchop', 'larmlowside', 'lbkstep', 'lbkstep_back', 'lfwdstride', 'lfwdstride_back', 'lhandchest', 'lhandgesture', 'lhandseal', 'lheadturn', 'llean', 'lowrun', 'lshoulderturn', 'lstride', 'lstride_back', 'multichop', 'noaction', 'pickup', 'rarmchop', 'rarmlowside', 'rbkstep', 'rbkstep_back', 'rfwdstride', 'rfwdstride_back', 'rhandchest', 'rhandgesture', 'rhandseal', 'rheadturn', 'rlean', 'rshoulderturn', 'rstride', 'rstride_back', 'run', 'squat', 'squat_back', 'tpose', 'tpose_back', 'walk', 'ypose', 'ypose_back'] |
| files : 1017 | windows: 49231 |
| train files=932 test files=85 |
| device : cuda |
| run dir : C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda |
|
|
| model : multi-branch ensemble (['locomotion', 'jump_squat', 'arms', 'hands', 'seals', 'head', 'torso', 'poses']) |
| [build_samples] remapped→noaction: 20705 kept=20705 (action_windows=23204, ratio=1) dropped: 0 |
| [build_samples] remapped→noaction: 1988 dropped: 0 |
|
|
| ── Branch [locomotion] keypoints=['left_hip', 'right_hip', 'left_knee', 'right_knee', 'left_ankle', 'right_ankle', 'left_heel', 'right_heel', 'left_foot_index', 'right_foot_index'] classes=['walk', 'fastwalk', 'run', 'lowrun', 'lstride', 'lstride_back', 'rstride', 'rstride_back', 'lfwdstride', 'lfwdstride_back', 'rfwdstride', 'rfwdstride_back', 'lbkstep', 'lbkstep_back', 'rbkstep', 'rbkstep_back', 'highknee', 'noaction'] |
| train=45208 test=4023 |
| [locomotion] training settings: batch=96, lr=0.001, weight_decay=0.0001, label_smoothing=0.05, class_weight_mode=inverse, augment=True |
| [locomotion] class weights: |
| walk 0.68 |
| fastwalk 5.41 |
| run 0.65 |
| lowrun 3.84 |
| lstride 2.11 |
| lstride_back 2.68 |
| rstride 1.93 |
| rstride_back 4.08 |
| lfwdstride 2.21 |
| lfwdstride_back 3.92 |
| rfwdstride 2.20 |
| rfwdstride_back 7.02 |
| lbkstep 2.08 |
| lbkstep_back 5.23 |
| rbkstep 2.33 |
| rbkstep_back 4.26 |
| highknee 0.65 |
| noaction 0.11 |
| [locomotion] select metric: macro_f1 |
| [locomotion] epoch 1/35 loss=1.9875 test_acc=0.3791 macro_f1=0.3785 weighted_f1=0.4203 select=0.3785 |
| [locomotion] epoch 10/35 loss=1.2763 test_acc=0.6030 macro_f1=0.5282 weighted_f1=0.6425 select=0.5282 |
| [locomotion] epoch 20/35 loss=1.1639 test_acc=0.7375 macro_f1=0.6295 weighted_f1=0.7441 select=0.6295 |
| [locomotion] epoch 30/35 loss=1.1183 test_acc=0.7102 macro_f1=0.6275 weighted_f1=0.7351 select=0.6275 |
| [locomotion] Best selected metric (macro_f1): 0.6421 @ epoch 25 acc=0.7298 |
| [locomotion] Per-class test accuracy: |
| walk 153/ 413 37.05% |
| fastwalk 4/ 86 4.65% |
| run 170/ 216 78.70% |
| lowrun 91/ 109 83.49% |
| lstride 32/ 48 66.67% |
| lstride_back 62/ 62 100.00% |
| rstride 62/ 83 74.70% |
| rstride_back 51/ 51 100.00% |
| lfwdstride 46/ 77 59.74% |
| lfwdstride_back 33/ 40 82.50% |
| rfwdstride 88/ 96 91.67% |
| rfwdstride_back 43/ 51 84.31% |
| lbkstep 68/ 77 88.31% |
| lbkstep_back 2/ 2 100.00% |
| rbkstep 56/ 122 45.90% |
| rbkstep_back 37/ 37 100.00% |
| highknee 181/ 242 74.79% |
| noaction 1757/2211 79.47% |
|
|
| [locomotion] Classification metrics: |
| class prec recall f1 supp sw_rate sw# n_clip perfect |
| ------------------------------------------------------------------------------ |
| walk 0.845 0.370 0.515 413 0.058 8.00 3 0 |
| fastwalk 0.085 0.047 0.060 86 0.106 9.00 1 0 |
| run 0.756 0.787 0.771 216 0.047 5.00 2 0 |
| lowrun 0.843 0.835 0.839 109 0.037 4.00 1 0 |
| lstride 0.166 0.667 0.266 48 0.039 0.67 3 1 |
| lstride_back 1.000 1.000 1.000 62 0.000 0.00 3 3 |
| rstride 0.805 0.747 0.775 83 0.068 1.33 3 0 |
| rstride_back 1.000 1.000 1.000 51 0.000 0.00 3 3 |
| lfwdstride 0.177 0.597 0.273 77 0.160 6.00 2 0 |
| lfwdstride_back 1.000 0.825 0.904 40 0.019 0.50 2 1 |
| rfwdstride 0.391 0.917 0.548 96 0.041 2.00 2 1 |
| rfwdstride_back 1.000 0.843 0.915 51 0.050 1.00 2 1 |
| lbkstep 0.591 0.883 0.708 77 0.087 2.00 2 1 |
| lbkstep_back 0.071 1.000 0.133 2 0.000 0.00 1 1 |
| rbkstep 0.862 0.459 0.599 122 0.080 6.00 2 0 |
| rbkstep_back 0.712 1.000 0.831 37 0.000 0.00 2 2 |
| highknee 0.439 0.748 0.554 242 0.029 3.50 2 0 |
| noaction 0.952 0.795 0.866 2211 0.037 1.84 49 24 |
| accuracy 0.730 |
| macro 0.650 0.751 0.642 |
| weighted 0.828 0.730 0.753 |
|
|
| [locomotion] Label smoothness (per clip): |
| clips evaluated : 85 (mean len 47.3 windows) |
| mean switches : 2.18 |
| mean switch rate: 0.041 (0 = no flipping, 1 = flip every frame) |
| perfectly stable clips: 38 / 85 |
| [locomotion] Confusion matrix → C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda\confusion_locomotion.png |
| [build_samples] remapped→noaction: 41171 kept=2738 (action_windows=2738, ratio=1) dropped: 0 |
| [build_samples] remapped→noaction: 3465 dropped: 0 |
|
|
| ── Branch [jump_squat] keypoints=['left_shoulder', 'right_shoulder', 'left_hip', 'right_hip', 'left_knee', 'right_knee', 'left_ankle', 'right_ankle', 'left_heel', 'right_heel', 'left_foot_index', 'right_foot_index'] classes=['jump', 'jump_back', 'squat', 'squat_back', 'noaction'] |
| train=6775 test=4023 |
| [jump_squat] training settings: batch=96, lr=0.001, weight_decay=0.0001, label_smoothing=0.05, class_weight_mode=inverse, augment=True |
| [jump_squat] class weights: |
| jump 1.18 |
| jump_back 3.34 |
| squat 4.84 |
| squat_back 1.50 |
| noaction 0.34 |
| [jump_squat] select metric: macro_f1 |
| [jump_squat] epoch 1/35 loss=1.0462 test_acc=0.8459 macro_f1=0.4195 weighted_f1=0.8664 select=0.4195 |
| [jump_squat] epoch 10/35 loss=0.5983 test_acc=0.7857 macro_f1=0.4877 weighted_f1=0.8498 select=0.4877 |
| [jump_squat] epoch 20/35 loss=0.5445 test_acc=0.8620 macro_f1=0.6241 weighted_f1=0.8965 select=0.6241 |
| [jump_squat] epoch 30/35 loss=0.5208 test_acc=0.9182 macro_f1=0.7559 weighted_f1=0.9312 select=0.7559 |
| [jump_squat] Best selected metric (macro_f1): 0.7943 @ epoch 26 acc=0.9354 |
| [jump_squat] Per-class test accuracy: |
| jump 135/ 166 81.33% |
| jump_back 58/ 61 95.08% |
| squat 11/ 11 100.00% |
| squat_back 97/ 97 100.00% |
| noaction 3462/3688 93.87% |
|
|
| [jump_squat] Classification metrics: |
| class prec recall f1 supp sw_rate sw# n_clip perfect |
| ------------------------------------------------------------------------------ |
| jump 0.429 0.813 0.561 166 0.058 3.00 3 1 |
| jump_back 0.716 0.951 0.817 61 0.013 0.33 3 2 |
| squat 0.550 1.000 0.710 11 0.000 0.00 3 3 |
| squat_back 0.851 1.000 0.919 97 0.000 0.00 4 4 |
| noaction 0.991 0.939 0.964 3688 0.012 0.69 72 53 |
| accuracy 0.935 |
| macro 0.707 0.941 0.794 |
| weighted 0.959 0.935 0.944 |
|
|
| [jump_squat] Label smoothness (per clip): |
| clips evaluated : 85 (mean len 47.3 windows) |
| mean switches : 0.71 |
| mean switch rate: 0.012 (0 = no flipping, 1 = flip every frame) |
| perfectly stable clips: 63 / 85 |
| [jump_squat] Confusion matrix → C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda\confusion_jump_squat.png |
| [build_samples] remapped→noaction: 34332 kept=9577 (action_windows=9577, ratio=1) dropped: 0 |
| [build_samples] remapped→noaction: 2940 dropped: 0 |
|
|
| ── Branch [arms] keypoints=['left_shoulder', 'right_shoulder', 'left_elbow', 'right_elbow', 'left_wrist', 'right_wrist', 'left_pinky', 'right_pinky', 'left_index', 'right_index', 'left_thumb', 'right_thumb'] classes=['larmchop', 'rarmchop', 'multichop', 'larmlowside', 'rarmlowside', 'noaction'] |
| train=20453 test=4023 |
| [arms] training settings: batch=96, lr=0.001, weight_decay=0.0001, label_smoothing=0.05, class_weight_mode=inverse, augment=True |
| [arms] class weights: |
| larmchop 2.46 |
| rarmchop 2.22 |
| multichop 1.00 |
| larmlowside 2.07 |
| rarmlowside 2.15 |
| noaction 0.31 |
| [arms] select metric: macro_f1 |
| [arms] epoch 1/35 loss=1.0829 test_acc=0.4919 macro_f1=0.5031 weighted_f1=0.5718 select=0.5031 |
| [arms] epoch 10/35 loss=0.6931 test_acc=0.8484 macro_f1=0.7428 weighted_f1=0.8715 select=0.7428 |
| [arms] epoch 20/35 loss=0.6171 test_acc=0.8541 macro_f1=0.7129 weighted_f1=0.8725 select=0.7129 |
| [arms] epoch 30/35 loss=0.5746 test_acc=0.8633 macro_f1=0.7430 weighted_f1=0.8790 select=0.7430 |
| [arms] Best selected metric (macro_f1): 0.7892 @ epoch 28 acc=0.9075 |
| [arms] Per-class test accuracy: |
| larmchop 116/ 128 90.62% |
| rarmchop 114/ 157 72.61% |
| multichop 306/ 379 80.74% |
| larmlowside 83/ 83 100.00% |
| rarmlowside 105/ 113 92.92% |
| noaction 2927/3163 92.54% |
|
|
| [arms] Classification metrics: |
| class prec recall f1 supp sw_rate sw# n_clip perfect |
| ------------------------------------------------------------------------------ |
| larmchop 0.655 0.906 0.761 128 0.013 0.67 3 2 |
| rarmchop 0.437 0.726 0.545 157 0.044 2.33 3 0 |
| multichop 0.867 0.807 0.836 379 0.032 3.25 4 0 |
| larmlowside 0.741 1.000 0.851 83 0.000 0.00 2 2 |
| rarmlowside 0.682 0.929 0.787 113 0.029 1.50 2 0 |
| noaction 0.987 0.925 0.955 3163 0.014 0.62 71 50 |
| accuracy 0.908 |
| macro 0.728 0.882 0.789 |
| weighted 0.930 0.908 0.915 |
|
|
| [arms] Label smoothness (per clip): |
| clips evaluated : 85 (mean len 47.3 windows) |
| mean switches : 0.81 |
| mean switch rate: 0.016 (0 = no flipping, 1 = flip every frame) |
| perfectly stable clips: 54 / 85 |
| [arms] Confusion matrix → C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda\confusion_arms.png |
| [build_samples] remapped→noaction: 37741 kept=6168 (action_windows=6168, ratio=1) dropped: 0 |
| [build_samples] remapped→noaction: 3231 dropped: 0 |
|
|
| ── Branch [hands] keypoints=['left_shoulder', 'right_shoulder', 'left_elbow', 'right_elbow', 'left_wrist', 'right_wrist', 'left_pinky', 'right_pinky', 'left_index', 'right_index', 'left_thumb', 'right_thumb'] classes=['lhandgesture', 'rhandgesture', 'bothhandgesture', 'lhandchest', 'rhandchest', 'pickup', 'noaction'] |
| train=13635 test=4023 |
| [hands] training settings: batch=96, lr=0.001, weight_decay=0.0001, label_smoothing=0.05, class_weight_mode=inverse, augment=True |
| [hands] class weights: |
| lhandgesture 13.25 |
| rhandgesture 10.94 |
| bothhandgesture 9.99 |
| lhandchest 1.44 |
| rhandchest 0.96 |
| pickup 0.86 |
| noaction 0.26 |
| [hands] select metric: macro_f1 |
| [hands] epoch 1/35 loss=1.6970 test_acc=0.3659 macro_f1=0.3179 weighted_f1=0.4572 select=0.3179 |
| [hands] epoch 10/35 loss=1.2178 test_acc=0.7517 macro_f1=0.5221 weighted_f1=0.8032 select=0.5221 |
| [hands] epoch 20/35 loss=1.1389 test_acc=0.8305 macro_f1=0.5640 weighted_f1=0.8588 select=0.5640 |
| [hands] epoch 30/35 loss=1.1133 test_acc=0.7671 macro_f1=0.5215 weighted_f1=0.8108 select=0.5215 |
| [hands] Best selected metric (macro_f1): 0.5987 @ epoch 35 acc=0.8479 |
| [hands] Per-class test accuracy: |
| lhandgesture 40/ 40 100.00% |
| rhandgesture 42/ 45 93.33% |
| bothhandgesture 59/ 65 90.77% |
| lhandchest 39/ 98 39.80% |
| rhandchest 143/ 145 98.62% |
| pickup 127/ 176 72.16% |
| noaction 2961/3454 85.73% |
|
|
| [hands] Classification metrics: |
| class prec recall f1 supp sw_rate sw# n_clip perfect |
| ------------------------------------------------------------------------------ |
| lhandgesture 0.215 1.000 0.354 40 0.000 0.00 1 1 |
| rhandgesture 0.300 0.933 0.454 45 0.023 1.00 1 0 |
| bothhandgesture 0.513 0.908 0.656 65 0.016 1.00 1 0 |
| lhandchest 0.487 0.398 0.438 98 0.009 0.50 2 1 |
| rhandchest 0.769 0.986 0.864 145 0.007 0.33 3 2 |
| pickup 0.390 0.722 0.506 176 0.029 2.50 2 0 |
| noaction 0.990 0.857 0.919 3454 0.040 1.43 75 47 |
| accuracy 0.848 |
| macro 0.523 0.829 0.599 |
| weighted 0.921 0.848 0.872 |
|
|
| [hands] Label smoothness (per clip): |
| clips evaluated : 85 (mean len 47.3 windows) |
| mean switches : 1.36 |
| mean switch rate: 0.037 (0 = no flipping, 1 = flip every frame) |
| perfectly stable clips: 51 / 85 |
| [hands] Confusion matrix → C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda\confusion_hands.png |
|
|
| ── Branch [seals] [INHERITED from base model, acc=0.9506] |
|
|
| ── Branch [head] [INHERITED from base model, acc=0.9339] |
|
|
| ── Branch [torso] [INHERITED from base model, acc=0.9731] |
| [build_samples] remapped→noaction: 41687 kept=2222 (action_windows=2222, ratio=1) dropped: 0 |
| [build_samples] remapped→noaction: 3576 dropped: 0 |
|
|
| ── Branch [poses] keypoints=['nose', 'left_shoulder', 'right_shoulder', 'left_elbow', 'right_elbow', 'left_wrist', 'right_wrist', 'left_hip', 'right_hip', 'left_knee', 'right_knee', 'left_ankle', 'right_ankle'] classes=['tpose', 'tpose_back', 'ypose', 'ypose_back', 'noaction'] |
| train=5743 test=4023 |
| [poses] training settings: batch=96, lr=0.001, weight_decay=0.0001, label_smoothing=0.05, class_weight_mode=inverse, augment=True |
| [poses] class weights: |
| tpose 1.52 |
| tpose_back 3.84 |
| ypose 1.11 |
| ypose_back 8.64 |
| noaction 0.33 |
| [poses] select metric: macro_f1 |
| [poses] epoch 1/35 loss=0.9267 test_acc=0.8996 macro_f1=0.5665 weighted_f1=0.9269 select=0.5665 |
| [poses] epoch 10/35 loss=0.5963 test_acc=0.8941 macro_f1=0.7469 weighted_f1=0.9249 select=0.7469 |
| [poses] epoch 20/35 loss=0.5634 test_acc=0.9413 macro_f1=0.7813 weighted_f1=0.9506 select=0.7813 |
| [poses] epoch 30/35 loss=0.5584 test_acc=0.9669 macro_f1=0.8223 weighted_f1=0.9674 select=0.8223 |
| [poses] Best selected metric (macro_f1): 0.8565 @ epoch 15 acc=0.9804 |
| [poses] Per-class test accuracy: |
| tpose 38/ 102 37.25% |
| tpose_back 17/ 17 100.00% |
| ypose 83/ 89 93.26% |
| ypose_back 16/ 16 100.00% |
| noaction 3790/3799 99.76% |
|
|
| [poses] Classification metrics: |
| class prec recall f1 supp sw_rate sw# n_clip perfect |
| ------------------------------------------------------------------------------ |
| tpose 1.000 0.373 0.543 102 0.009 0.67 3 2 |
| tpose_back 1.000 1.000 1.000 17 0.000 0.00 2 2 |
| ypose 0.664 0.933 0.776 89 0.024 1.00 2 0 |
| ypose_back 0.941 1.000 0.970 16 0.000 0.00 2 2 |
| noaction 0.991 0.998 0.994 3799 0.001 0.09 76 74 |
| accuracy 0.980 |
| macro 0.919 0.861 0.856 |
| weighted 0.983 0.980 0.978 |
|
|
| [poses] Label smoothness (per clip): |
| clips evaluated : 85 (mean len 47.3 windows) |
| mean switches : 0.13 |
| mean switch rate: 0.002 (0 = no flipping, 1 = flip every frame) |
| perfectly stable clips: 80 / 85 |
| [poses] Confusion matrix → C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda\confusion_poses.png |
|
|
| Multi-branch model saved → C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda\model_curated_v1_multihead_w10_cuda.pth |
| locomotion acc=0.7298 classes=['walk', 'fastwalk', 'run', 'lowrun', 'lstride', 'lstride_back', 'rstride', 'rstride_back', 'lfwdstride', 'lfwdstride_back', 'rfwdstride', 'rfwdstride_back', 'lbkstep', 'lbkstep_back', 'rbkstep', 'rbkstep_back', 'highknee', 'noaction'] |
| jump_squat acc=0.9354 classes=['jump', 'jump_back', 'squat', 'squat_back', 'noaction'] |
| arms acc=0.9075 classes=['larmchop', 'rarmchop', 'multichop', 'larmlowside', 'rarmlowside', 'noaction'] |
| hands acc=0.8479 classes=['lhandgesture', 'rhandgesture', 'bothhandgesture', 'lhandchest', 'rhandchest', 'pickup', 'noaction'] |
| seals acc=0.9506 classes=['lhandseal', 'rhandseal', 'headseal', 'chestseal', 'bellyseal', 'noaction'] |
| head acc=0.9339 classes=['headdown', 'headup', 'lheadturn', 'rheadturn', 'noaction'] |
| torso acc=0.9731 classes=['llean', 'rlean', 'lshoulderturn', 'rshoulderturn', 'noaction'] |
| poses acc=0.9804 classes=['tpose', 'tpose_back', 'ypose', 'ypose_back', 'noaction'] |
| Branch config saved → C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda\model_curated_v1_multihead_w10_cuda.json |
|
|