Zihanj commited on
Commit
21d687a
·
verified ·
1 Parent(s): 622fb97

Upload curated v1 multihead ONNX bundle

Browse files

Source run: runs/20260610_curated_v1_multihead_w10_cuda
Tag: curated-v1-multihead-w10-cuda-20260610
Includes SDK bundle files and confusion-matrix reports.

.gitattributes CHANGED
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ action_classifier_curated_v1_multihead_w10_cuda.onnx.data filter=lfs diff=lfs merge=lfs -text
37
+ reports/confusion_locomotion.png filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: onnx
3
+ tags:
4
+ - action-recognition
5
+ - mediapipe
6
+ - onnx
7
+ - sdk-bundle
8
+ ---
9
+
10
+ # VideoInference
11
+
12
+ ActionLinkPerception SDK model bundle.
13
+
14
+ ## Version
15
+
16
+ - Tag: `curated-v1-multihead-w10-cuda-20260610`
17
+ - Source run: `runs/20260610_curated_v1_multihead_w10_cuda`
18
+ - Window size: 10 frames
19
+ - Dataset: `dataset/clip_data_back_v1_curated_20260610`
20
+
21
+ ## Files
22
+
23
+ - `manifest.json`: SDK bundle entry point
24
+ - `model.onnx`: ONNX graph
25
+ - `action_classifier_curated_v1_multihead_w10_cuda.onnx.data`: ONNX external tensor data
26
+ - `model.json`: label maps, heads, keypoints and metadata
27
+ - `smoothing.json`: SDK label smoothing configuration
28
+ - `reports/`: training log and confusion matrices
29
+
30
+ ## Usage
31
+
32
+ Download this repo with Hugging Face CLI and point the SDK model bundle directory to the downloaded folder.
33
+
34
+ ```powershell
35
+ hf download Zihanj/VideoInference --local-dir .\models\VideoInference --local-dir-use-symlinks False
36
+ ```
action_classifier_curated_v1_multihead_w10_cuda.onnx.data ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5c978bac43086354be483a797a809ebfa3093af0e62d70818401eb6deacc7751
3
+ size 5192488
manifest.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "tag": "curated-v1-multihead-w10-cuda-20260610",
3
+ "model": "model.onnx",
4
+ "metadata": "model.json",
5
+ "smoothing": "smoothing.json"
6
+ }
model.json ADDED
@@ -0,0 +1,235 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_file": "action_classifier_curated_v1_multihead_w10_cuda.onnx",
3
+ "window": 10,
4
+ "feat_per_frame": 731,
5
+ "input": {
6
+ "name": "skeleton_window",
7
+ "shape": [
8
+ "batch",
9
+ 10,
10
+ 731
11
+ ],
12
+ "dtype": "float32",
13
+ "description": "Sliding window of skeleton features. Each frame is a 731-dim vector: hip-centred (x,y,z,conf)×73 + motion_mag + ref_offset(dx,dy,dz)×73 + ref_std×73. World coordinates (metres, hip-centred). See docs/arch/v1.1/README.md for feature layout."
14
+ },
15
+ "outputs": [
16
+ {
17
+ "name": "locomotion",
18
+ "shape": [
19
+ "batch",
20
+ 18
21
+ ],
22
+ "dtype": "float32",
23
+ "classes": [
24
+ "walk",
25
+ "fastwalk",
26
+ "run",
27
+ "lowrun",
28
+ "lstride",
29
+ "lstride_back",
30
+ "rstride",
31
+ "rstride_back",
32
+ "lfwdstride",
33
+ "lfwdstride_back",
34
+ "rfwdstride",
35
+ "rfwdstride_back",
36
+ "lbkstep",
37
+ "lbkstep_back",
38
+ "rbkstep",
39
+ "rbkstep_back",
40
+ "highknee",
41
+ "noaction"
42
+ ],
43
+ "label_map": {
44
+ "walk": 0,
45
+ "fastwalk": 1,
46
+ "run": 2,
47
+ "lowrun": 3,
48
+ "lstride": 4,
49
+ "lstride_back": 5,
50
+ "rstride": 6,
51
+ "rstride_back": 7,
52
+ "lfwdstride": 8,
53
+ "lfwdstride_back": 9,
54
+ "rfwdstride": 10,
55
+ "rfwdstride_back": 11,
56
+ "lbkstep": 12,
57
+ "lbkstep_back": 13,
58
+ "rbkstep": 14,
59
+ "rbkstep_back": 15,
60
+ "highknee": 16,
61
+ "noaction": 17
62
+ },
63
+ "noaction_index": 17
64
+ },
65
+ {
66
+ "name": "jump_squat",
67
+ "shape": [
68
+ "batch",
69
+ 5
70
+ ],
71
+ "dtype": "float32",
72
+ "classes": [
73
+ "jump",
74
+ "jump_back",
75
+ "squat",
76
+ "squat_back",
77
+ "noaction"
78
+ ],
79
+ "label_map": {
80
+ "jump": 0,
81
+ "jump_back": 1,
82
+ "squat": 2,
83
+ "squat_back": 3,
84
+ "noaction": 4
85
+ },
86
+ "noaction_index": 4
87
+ },
88
+ {
89
+ "name": "arms",
90
+ "shape": [
91
+ "batch",
92
+ 6
93
+ ],
94
+ "dtype": "float32",
95
+ "classes": [
96
+ "larmchop",
97
+ "rarmchop",
98
+ "multichop",
99
+ "larmlowside",
100
+ "rarmlowside",
101
+ "noaction"
102
+ ],
103
+ "label_map": {
104
+ "larmchop": 0,
105
+ "rarmchop": 1,
106
+ "multichop": 2,
107
+ "larmlowside": 3,
108
+ "rarmlowside": 4,
109
+ "noaction": 5
110
+ },
111
+ "noaction_index": 5
112
+ },
113
+ {
114
+ "name": "hands",
115
+ "shape": [
116
+ "batch",
117
+ 7
118
+ ],
119
+ "dtype": "float32",
120
+ "classes": [
121
+ "lhandgesture",
122
+ "rhandgesture",
123
+ "bothhandgesture",
124
+ "lhandchest",
125
+ "rhandchest",
126
+ "pickup",
127
+ "noaction"
128
+ ],
129
+ "label_map": {
130
+ "lhandgesture": 0,
131
+ "rhandgesture": 1,
132
+ "bothhandgesture": 2,
133
+ "lhandchest": 3,
134
+ "rhandchest": 4,
135
+ "pickup": 5,
136
+ "noaction": 6
137
+ },
138
+ "noaction_index": 6
139
+ },
140
+ {
141
+ "name": "seals",
142
+ "shape": [
143
+ "batch",
144
+ 6
145
+ ],
146
+ "dtype": "float32",
147
+ "classes": [
148
+ "lhandseal",
149
+ "rhandseal",
150
+ "headseal",
151
+ "chestseal",
152
+ "bellyseal",
153
+ "noaction"
154
+ ],
155
+ "label_map": {
156
+ "lhandseal": 0,
157
+ "rhandseal": 1,
158
+ "headseal": 2,
159
+ "chestseal": 3,
160
+ "bellyseal": 4,
161
+ "noaction": 5
162
+ },
163
+ "noaction_index": 5
164
+ },
165
+ {
166
+ "name": "head",
167
+ "shape": [
168
+ "batch",
169
+ 5
170
+ ],
171
+ "dtype": "float32",
172
+ "classes": [
173
+ "headdown",
174
+ "headup",
175
+ "lheadturn",
176
+ "rheadturn",
177
+ "noaction"
178
+ ],
179
+ "label_map": {
180
+ "headdown": 0,
181
+ "headup": 1,
182
+ "lheadturn": 2,
183
+ "rheadturn": 3,
184
+ "noaction": 4
185
+ },
186
+ "noaction_index": 4
187
+ },
188
+ {
189
+ "name": "torso",
190
+ "shape": [
191
+ "batch",
192
+ 5
193
+ ],
194
+ "dtype": "float32",
195
+ "classes": [
196
+ "llean",
197
+ "rlean",
198
+ "lshoulderturn",
199
+ "rshoulderturn",
200
+ "noaction"
201
+ ],
202
+ "label_map": {
203
+ "llean": 0,
204
+ "rlean": 1,
205
+ "lshoulderturn": 2,
206
+ "rshoulderturn": 3,
207
+ "noaction": 4
208
+ },
209
+ "noaction_index": 4
210
+ },
211
+ {
212
+ "name": "poses",
213
+ "shape": [
214
+ "batch",
215
+ 5
216
+ ],
217
+ "dtype": "float32",
218
+ "classes": [
219
+ "tpose",
220
+ "tpose_back",
221
+ "ypose",
222
+ "ypose_back",
223
+ "noaction"
224
+ ],
225
+ "label_map": {
226
+ "tpose": 0,
227
+ "tpose_back": 1,
228
+ "ypose": 2,
229
+ "ypose_back": 3,
230
+ "noaction": 4
231
+ },
232
+ "noaction_index": 4
233
+ }
234
+ ]
235
+ }
model.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ec5f6d87bc0466b9741510f37a2925c6c6d158ec4bf417ed50458fddec6c9349
3
+ size 116025
reports/confusion_arms.png ADDED
reports/confusion_hands.png ADDED
reports/confusion_jump_squat.png ADDED
reports/confusion_locomotion.png ADDED

Git LFS Details

  • SHA256: 744d795113fcd8e26c9da3aa7cd114eaf1714b10f28b57cb97cf161363c760c7
  • Pointer size: 131 Bytes
  • Size of remote file: 148 kB
reports/confusion_poses.png ADDED
reports/train.log ADDED
@@ -0,0 +1,292 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [partial train] only training branches: ['arms', 'hands', 'jump_squat', 'locomotion', 'poses']
2
+ [base model] loaded 8 branches from model_jump_squat_squat_fast_rise_w10_cuda.pth: ['locomotion', 'jump_squat', 'arms', 'hands', 'seals', 'head', 'torso', 'poses']
3
+ Loading data from dataset\clip_data_back_v1_curated_20260610 …
4
+ [partial load] loading 37 classes, skipping 13: ['bellyseal', 'chestseal', 'headdown', 'headseal', 'headup', 'lhandseal', 'lheadturn', 'llean', 'lshoulderturn', 'rhandseal', 'rheadturn', 'rlean', 'rshoulderturn']
5
+ calibration: 37 clips matched to noaction, 1009 clips using own frame-0 fallback
6
+ 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']
7
+ files : 1017 | windows: 49231
8
+ train files=932 test files=85
9
+ device : cuda
10
+ run dir : C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda
11
+
12
+ model : multi-branch ensemble (['locomotion', 'jump_squat', 'arms', 'hands', 'seals', 'head', 'torso', 'poses'])
13
+ [build_samples] remapped→noaction: 20705 kept=20705 (action_windows=23204, ratio=1) dropped: 0
14
+ [build_samples] remapped→noaction: 1988 dropped: 0
15
+
16
+ ── 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']
17
+ train=45208 test=4023
18
+ [locomotion] training settings: batch=96, lr=0.001, weight_decay=0.0001, label_smoothing=0.05, class_weight_mode=inverse, augment=True
19
+ [locomotion] class weights:
20
+ walk 0.68
21
+ fastwalk 5.41
22
+ run 0.65
23
+ lowrun 3.84
24
+ lstride 2.11
25
+ lstride_back 2.68
26
+ rstride 1.93
27
+ rstride_back 4.08
28
+ lfwdstride 2.21
29
+ lfwdstride_back 3.92
30
+ rfwdstride 2.20
31
+ rfwdstride_back 7.02
32
+ lbkstep 2.08
33
+ lbkstep_back 5.23
34
+ rbkstep 2.33
35
+ rbkstep_back 4.26
36
+ highknee 0.65
37
+ noaction 0.11
38
+ [locomotion] select metric: macro_f1
39
+ [locomotion] epoch 1/35 loss=1.9875 test_acc=0.3791 macro_f1=0.3785 weighted_f1=0.4203 select=0.3785
40
+ [locomotion] epoch 10/35 loss=1.2763 test_acc=0.6030 macro_f1=0.5282 weighted_f1=0.6425 select=0.5282
41
+ [locomotion] epoch 20/35 loss=1.1639 test_acc=0.7375 macro_f1=0.6295 weighted_f1=0.7441 select=0.6295
42
+ [locomotion] epoch 30/35 loss=1.1183 test_acc=0.7102 macro_f1=0.6275 weighted_f1=0.7351 select=0.6275
43
+ [locomotion] Best selected metric (macro_f1): 0.6421 @ epoch 25 acc=0.7298
44
+ [locomotion] Per-class test accuracy:
45
+ walk 153/ 413 37.05%
46
+ fastwalk 4/ 86 4.65%
47
+ run 170/ 216 78.70%
48
+ lowrun 91/ 109 83.49%
49
+ lstride 32/ 48 66.67%
50
+ lstride_back 62/ 62 100.00%
51
+ rstride 62/ 83 74.70%
52
+ rstride_back 51/ 51 100.00%
53
+ lfwdstride 46/ 77 59.74%
54
+ lfwdstride_back 33/ 40 82.50%
55
+ rfwdstride 88/ 96 91.67%
56
+ rfwdstride_back 43/ 51 84.31%
57
+ lbkstep 68/ 77 88.31%
58
+ lbkstep_back 2/ 2 100.00%
59
+ rbkstep 56/ 122 45.90%
60
+ rbkstep_back 37/ 37 100.00%
61
+ highknee 181/ 242 74.79%
62
+ noaction 1757/2211 79.47%
63
+
64
+ [locomotion] Classification metrics:
65
+ class prec recall f1 supp sw_rate sw# n_clip perfect
66
+ ------------------------------------------------------------------------------
67
+ walk 0.845 0.370 0.515 413 0.058 8.00 3 0
68
+ fastwalk 0.085 0.047 0.060 86 0.106 9.00 1 0
69
+ run 0.756 0.787 0.771 216 0.047 5.00 2 0
70
+ lowrun 0.843 0.835 0.839 109 0.037 4.00 1 0
71
+ lstride 0.166 0.667 0.266 48 0.039 0.67 3 1
72
+ lstride_back 1.000 1.000 1.000 62 0.000 0.00 3 3
73
+ rstride 0.805 0.747 0.775 83 0.068 1.33 3 0
74
+ rstride_back 1.000 1.000 1.000 51 0.000 0.00 3 3
75
+ lfwdstride 0.177 0.597 0.273 77 0.160 6.00 2 0
76
+ lfwdstride_back 1.000 0.825 0.904 40 0.019 0.50 2 1
77
+ rfwdstride 0.391 0.917 0.548 96 0.041 2.00 2 1
78
+ rfwdstride_back 1.000 0.843 0.915 51 0.050 1.00 2 1
79
+ lbkstep 0.591 0.883 0.708 77 0.087 2.00 2 1
80
+ lbkstep_back 0.071 1.000 0.133 2 0.000 0.00 1 1
81
+ rbkstep 0.862 0.459 0.599 122 0.080 6.00 2 0
82
+ rbkstep_back 0.712 1.000 0.831 37 0.000 0.00 2 2
83
+ highknee 0.439 0.748 0.554 242 0.029 3.50 2 0
84
+ noaction 0.952 0.795 0.866 2211 0.037 1.84 49 24
85
+ accuracy 0.730
86
+ macro 0.650 0.751 0.642
87
+ weighted 0.828 0.730 0.753
88
+
89
+ [locomotion] Label smoothness (per clip):
90
+ clips evaluated : 85 (mean len 47.3 windows)
91
+ mean switches : 2.18
92
+ mean switch rate: 0.041 (0 = no flipping, 1 = flip every frame)
93
+ perfectly stable clips: 38 / 85
94
+ [locomotion] Confusion matrix → C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda\confusion_locomotion.png
95
+ [build_samples] remapped→noaction: 41171 kept=2738 (action_windows=2738, ratio=1) dropped: 0
96
+ [build_samples] remapped→noaction: 3465 dropped: 0
97
+
98
+ ── 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']
99
+ train=6775 test=4023
100
+ [jump_squat] training settings: batch=96, lr=0.001, weight_decay=0.0001, label_smoothing=0.05, class_weight_mode=inverse, augment=True
101
+ [jump_squat] class weights:
102
+ jump 1.18
103
+ jump_back 3.34
104
+ squat 4.84
105
+ squat_back 1.50
106
+ noaction 0.34
107
+ [jump_squat] select metric: macro_f1
108
+ [jump_squat] epoch 1/35 loss=1.0462 test_acc=0.8459 macro_f1=0.4195 weighted_f1=0.8664 select=0.4195
109
+ [jump_squat] epoch 10/35 loss=0.5983 test_acc=0.7857 macro_f1=0.4877 weighted_f1=0.8498 select=0.4877
110
+ [jump_squat] epoch 20/35 loss=0.5445 test_acc=0.8620 macro_f1=0.6241 weighted_f1=0.8965 select=0.6241
111
+ [jump_squat] epoch 30/35 loss=0.5208 test_acc=0.9182 macro_f1=0.7559 weighted_f1=0.9312 select=0.7559
112
+ [jump_squat] Best selected metric (macro_f1): 0.7943 @ epoch 26 acc=0.9354
113
+ [jump_squat] Per-class test accuracy:
114
+ jump 135/ 166 81.33%
115
+ jump_back 58/ 61 95.08%
116
+ squat 11/ 11 100.00%
117
+ squat_back 97/ 97 100.00%
118
+ noaction 3462/3688 93.87%
119
+
120
+ [jump_squat] Classification metrics:
121
+ class prec recall f1 supp sw_rate sw# n_clip perfect
122
+ ------------------------------------------------------------------------------
123
+ jump 0.429 0.813 0.561 166 0.058 3.00 3 1
124
+ jump_back 0.716 0.951 0.817 61 0.013 0.33 3 2
125
+ squat 0.550 1.000 0.710 11 0.000 0.00 3 3
126
+ squat_back 0.851 1.000 0.919 97 0.000 0.00 4 4
127
+ noaction 0.991 0.939 0.964 3688 0.012 0.69 72 53
128
+ accuracy 0.935
129
+ macro 0.707 0.941 0.794
130
+ weighted 0.959 0.935 0.944
131
+
132
+ [jump_squat] Label smoothness (per clip):
133
+ clips evaluated : 85 (mean len 47.3 windows)
134
+ mean switches : 0.71
135
+ mean switch rate: 0.012 (0 = no flipping, 1 = flip every frame)
136
+ perfectly stable clips: 63 / 85
137
+ [jump_squat] Confusion matrix → C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda\confusion_jump_squat.png
138
+ [build_samples] remapped→noaction: 34332 kept=9577 (action_windows=9577, ratio=1) dropped: 0
139
+ [build_samples] remapped→noaction: 2940 dropped: 0
140
+
141
+ ── 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']
142
+ train=20453 test=4023
143
+ [arms] training settings: batch=96, lr=0.001, weight_decay=0.0001, label_smoothing=0.05, class_weight_mode=inverse, augment=True
144
+ [arms] class weights:
145
+ larmchop 2.46
146
+ rarmchop 2.22
147
+ multichop 1.00
148
+ larmlowside 2.07
149
+ rarmlowside 2.15
150
+ noaction 0.31
151
+ [arms] select metric: macro_f1
152
+ [arms] epoch 1/35 loss=1.0829 test_acc=0.4919 macro_f1=0.5031 weighted_f1=0.5718 select=0.5031
153
+ [arms] epoch 10/35 loss=0.6931 test_acc=0.8484 macro_f1=0.7428 weighted_f1=0.8715 select=0.7428
154
+ [arms] epoch 20/35 loss=0.6171 test_acc=0.8541 macro_f1=0.7129 weighted_f1=0.8725 select=0.7129
155
+ [arms] epoch 30/35 loss=0.5746 test_acc=0.8633 macro_f1=0.7430 weighted_f1=0.8790 select=0.7430
156
+ [arms] Best selected metric (macro_f1): 0.7892 @ epoch 28 acc=0.9075
157
+ [arms] Per-class test accuracy:
158
+ larmchop 116/ 128 90.62%
159
+ rarmchop 114/ 157 72.61%
160
+ multichop 306/ 379 80.74%
161
+ larmlowside 83/ 83 100.00%
162
+ rarmlowside 105/ 113 92.92%
163
+ noaction 2927/3163 92.54%
164
+
165
+ [arms] Classification metrics:
166
+ class prec recall f1 supp sw_rate sw# n_clip perfect
167
+ ------------------------------------------------------------------------------
168
+ larmchop 0.655 0.906 0.761 128 0.013 0.67 3 2
169
+ rarmchop 0.437 0.726 0.545 157 0.044 2.33 3 0
170
+ multichop 0.867 0.807 0.836 379 0.032 3.25 4 0
171
+ larmlowside 0.741 1.000 0.851 83 0.000 0.00 2 2
172
+ rarmlowside 0.682 0.929 0.787 113 0.029 1.50 2 0
173
+ noaction 0.987 0.925 0.955 3163 0.014 0.62 71 50
174
+ accuracy 0.908
175
+ macro 0.728 0.882 0.789
176
+ weighted 0.930 0.908 0.915
177
+
178
+ [arms] Label smoothness (per clip):
179
+ clips evaluated : 85 (mean len 47.3 windows)
180
+ mean switches : 0.81
181
+ mean switch rate: 0.016 (0 = no flipping, 1 = flip every frame)
182
+ perfectly stable clips: 54 / 85
183
+ [arms] Confusion matrix → C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda\confusion_arms.png
184
+ [build_samples] remapped→noaction: 37741 kept=6168 (action_windows=6168, ratio=1) dropped: 0
185
+ [build_samples] remapped→noaction: 3231 dropped: 0
186
+
187
+ ── 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']
188
+ train=13635 test=4023
189
+ [hands] training settings: batch=96, lr=0.001, weight_decay=0.0001, label_smoothing=0.05, class_weight_mode=inverse, augment=True
190
+ [hands] class weights:
191
+ lhandgesture 13.25
192
+ rhandgesture 10.94
193
+ bothhandgesture 9.99
194
+ lhandchest 1.44
195
+ rhandchest 0.96
196
+ pickup 0.86
197
+ noaction 0.26
198
+ [hands] select metric: macro_f1
199
+ [hands] epoch 1/35 loss=1.6970 test_acc=0.3659 macro_f1=0.3179 weighted_f1=0.4572 select=0.3179
200
+ [hands] epoch 10/35 loss=1.2178 test_acc=0.7517 macro_f1=0.5221 weighted_f1=0.8032 select=0.5221
201
+ [hands] epoch 20/35 loss=1.1389 test_acc=0.8305 macro_f1=0.5640 weighted_f1=0.8588 select=0.5640
202
+ [hands] epoch 30/35 loss=1.1133 test_acc=0.7671 macro_f1=0.5215 weighted_f1=0.8108 select=0.5215
203
+ [hands] Best selected metric (macro_f1): 0.5987 @ epoch 35 acc=0.8479
204
+ [hands] Per-class test accuracy:
205
+ lhandgesture 40/ 40 100.00%
206
+ rhandgesture 42/ 45 93.33%
207
+ bothhandgesture 59/ 65 90.77%
208
+ lhandchest 39/ 98 39.80%
209
+ rhandchest 143/ 145 98.62%
210
+ pickup 127/ 176 72.16%
211
+ noaction 2961/3454 85.73%
212
+
213
+ [hands] Classification metrics:
214
+ class prec recall f1 supp sw_rate sw# n_clip perfect
215
+ ------------------------------------------------------------------------------
216
+ lhandgesture 0.215 1.000 0.354 40 0.000 0.00 1 1
217
+ rhandgesture 0.300 0.933 0.454 45 0.023 1.00 1 0
218
+ bothhandgesture 0.513 0.908 0.656 65 0.016 1.00 1 0
219
+ lhandchest 0.487 0.398 0.438 98 0.009 0.50 2 1
220
+ rhandchest 0.769 0.986 0.864 145 0.007 0.33 3 2
221
+ pickup 0.390 0.722 0.506 176 0.029 2.50 2 0
222
+ noaction 0.990 0.857 0.919 3454 0.040 1.43 75 47
223
+ accuracy 0.848
224
+ macro 0.523 0.829 0.599
225
+ weighted 0.921 0.848 0.872
226
+
227
+ [hands] Label smoothness (per clip):
228
+ clips evaluated : 85 (mean len 47.3 windows)
229
+ mean switches : 1.36
230
+ mean switch rate: 0.037 (0 = no flipping, 1 = flip every frame)
231
+ perfectly stable clips: 51 / 85
232
+ [hands] Confusion matrix → C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda\confusion_hands.png
233
+
234
+ ── Branch [seals] [INHERITED from base model, acc=0.9506]
235
+
236
+ ── Branch [head] [INHERITED from base model, acc=0.9339]
237
+
238
+ ── Branch [torso] [INHERITED from base model, acc=0.9731]
239
+ [build_samples] remapped→noaction: 41687 kept=2222 (action_windows=2222, ratio=1) dropped: 0
240
+ [build_samples] remapped→noaction: 3576 dropped: 0
241
+
242
+ ── 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']
243
+ train=5743 test=4023
244
+ [poses] training settings: batch=96, lr=0.001, weight_decay=0.0001, label_smoothing=0.05, class_weight_mode=inverse, augment=True
245
+ [poses] class weights:
246
+ tpose 1.52
247
+ tpose_back 3.84
248
+ ypose 1.11
249
+ ypose_back 8.64
250
+ noaction 0.33
251
+ [poses] select metric: macro_f1
252
+ [poses] epoch 1/35 loss=0.9267 test_acc=0.8996 macro_f1=0.5665 weighted_f1=0.9269 select=0.5665
253
+ [poses] epoch 10/35 loss=0.5963 test_acc=0.8941 macro_f1=0.7469 weighted_f1=0.9249 select=0.7469
254
+ [poses] epoch 20/35 loss=0.5634 test_acc=0.9413 macro_f1=0.7813 weighted_f1=0.9506 select=0.7813
255
+ [poses] epoch 30/35 loss=0.5584 test_acc=0.9669 macro_f1=0.8223 weighted_f1=0.9674 select=0.8223
256
+ [poses] Best selected metric (macro_f1): 0.8565 @ epoch 15 acc=0.9804
257
+ [poses] Per-class test accuracy:
258
+ tpose 38/ 102 37.25%
259
+ tpose_back 17/ 17 100.00%
260
+ ypose 83/ 89 93.26%
261
+ ypose_back 16/ 16 100.00%
262
+ noaction 3790/3799 99.76%
263
+
264
+ [poses] Classification metrics:
265
+ class prec recall f1 supp sw_rate sw# n_clip perfect
266
+ ------------------------------------------------------------------------------
267
+ tpose 1.000 0.373 0.543 102 0.009 0.67 3 2
268
+ tpose_back 1.000 1.000 1.000 17 0.000 0.00 2 2
269
+ ypose 0.664 0.933 0.776 89 0.024 1.00 2 0
270
+ ypose_back 0.941 1.000 0.970 16 0.000 0.00 2 2
271
+ noaction 0.991 0.998 0.994 3799 0.001 0.09 76 74
272
+ accuracy 0.980
273
+ macro 0.919 0.861 0.856
274
+ weighted 0.983 0.980 0.978
275
+
276
+ [poses] Label smoothness (per clip):
277
+ clips evaluated : 85 (mean len 47.3 windows)
278
+ mean switches : 0.13
279
+ mean switch rate: 0.002 (0 = no flipping, 1 = flip every frame)
280
+ perfectly stable clips: 80 / 85
281
+ [poses] Confusion matrix → C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda\confusion_poses.png
282
+
283
+ Multi-branch model saved → C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda\model_curated_v1_multihead_w10_cuda.pth
284
+ 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']
285
+ jump_squat acc=0.9354 classes=['jump', 'jump_back', 'squat', 'squat_back', 'noaction']
286
+ arms acc=0.9075 classes=['larmchop', 'rarmchop', 'multichop', 'larmlowside', 'rarmlowside', 'noaction']
287
+ hands acc=0.8479 classes=['lhandgesture', 'rhandgesture', 'bothhandgesture', 'lhandchest', 'rhandchest', 'pickup', 'noaction']
288
+ seals acc=0.9506 classes=['lhandseal', 'rhandseal', 'headseal', 'chestseal', 'bellyseal', 'noaction']
289
+ head acc=0.9339 classes=['headdown', 'headup', 'lheadturn', 'rheadturn', 'noaction']
290
+ torso acc=0.9731 classes=['llean', 'rlean', 'lshoulderturn', 'rshoulderturn', 'noaction']
291
+ poses acc=0.9804 classes=['tpose', 'tpose_back', 'ypose', 'ypose_back', 'noaction']
292
+ Branch config saved → C:\Workspace\ActionLinkPerception\runs\20260610_curated_v1_multihead_w10_cuda\model_curated_v1_multihead_w10_cuda.json
smoothing.json ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "algorithm": "moving_average",
3
+ "window_frames": 5,
4
+ "back_transition_enabled": true,
5
+ "back_transition_trigger_threshold": 0.55,
6
+ "back_transition_boost": 0.2,
7
+ "back_transition_active_frames": 12,
8
+ "back_transition_stable_frames": 3,
9
+ "back_transition_pairs": [
10
+ {
11
+ "branch_name": "locomotion",
12
+ "action": "lstride",
13
+ "back": "lstride_back",
14
+ "branch_index": 0,
15
+ "action_index": 4,
16
+ "back_index": 5
17
+ },
18
+ {
19
+ "branch_name": "locomotion",
20
+ "action": "rstride",
21
+ "back": "rstride_back",
22
+ "branch_index": 0,
23
+ "action_index": 6,
24
+ "back_index": 7
25
+ },
26
+ {
27
+ "branch_name": "locomotion",
28
+ "action": "lfwdstride",
29
+ "back": "lfwdstride_back",
30
+ "branch_index": 0,
31
+ "action_index": 8,
32
+ "back_index": 9
33
+ },
34
+ {
35
+ "branch_name": "locomotion",
36
+ "action": "rfwdstride",
37
+ "back": "rfwdstride_back",
38
+ "branch_index": 0,
39
+ "action_index": 10,
40
+ "back_index": 11
41
+ },
42
+ {
43
+ "branch_name": "locomotion",
44
+ "action": "lbkstep",
45
+ "back": "lbkstep_back",
46
+ "branch_index": 0,
47
+ "action_index": 12,
48
+ "back_index": 13
49
+ },
50
+ {
51
+ "branch_name": "locomotion",
52
+ "action": "rbkstep",
53
+ "back": "rbkstep_back",
54
+ "branch_index": 0,
55
+ "action_index": 14,
56
+ "back_index": 15
57
+ },
58
+ {
59
+ "branch_name": "jump_squat",
60
+ "action": "jump",
61
+ "back": "jump_back",
62
+ "branch_index": 1,
63
+ "action_index": 0,
64
+ "back_index": 1
65
+ },
66
+ {
67
+ "branch_name": "jump_squat",
68
+ "action": "squat",
69
+ "back": "squat_back",
70
+ "branch_index": 1,
71
+ "action_index": 2,
72
+ "back_index": 3
73
+ },
74
+ {
75
+ "branch_name": "poses",
76
+ "action": "tpose",
77
+ "back": "tpose_back",
78
+ "branch_index": 7,
79
+ "action_index": 0,
80
+ "back_index": 1
81
+ },
82
+ {
83
+ "branch_name": "poses",
84
+ "action": "ypose",
85
+ "back": "ypose_back",
86
+ "branch_index": 7,
87
+ "action_index": 2,
88
+ "back_index": 3
89
+ }
90
+ ]
91
+ }