RabbitDaisuke commited on
Commit
8a593c6
·
verified ·
1 Parent(s): 3410a06

Compare equivalent FP32 head GEMM layouts 7eca78d68fa8fdd23b53e286d859d8d6e2f752dc

Browse files
experiments/README.md ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ # Equivalent FP32 head experiments
2
+ Keep RTMW3D-L trained weights, image resolution and all 133 3D joints while comparing explicit im2col plus MatMul against the original convolution kernels. The split8 candidate increases the batch of independent partial products and sums their FP32 results. Neither candidate is assumed faster before GPU measurement.
3
+ Upstream model and implementation: https://github.com/open-mmlab/mmpose
4
+ Only the two measured final head convolutions are rewritten. Original FP32 weights are reordered without quantization; all other model parameters are preserved. Both candidates pass small public-fixture CPU conversion checks, including independent hips, knees, ankles and foot gates. This is not target-video accuracy or native WebGPU validation.
5
+ Use the browser benchmark to measure synchronized inference, output drift and per-kernel GPU time on the target device.
experiments/catalog.json ADDED
@@ -0,0 +1,602 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema": "rtmw3d-head-experiments/v1",
3
+ "sourceCommit": "7eca78d68fa8fdd23b53e286d859d8d6e2f752dc",
4
+ "keypointCount": 133,
5
+ "variants": [
6
+ {
7
+ "id": "rtmw3d-l-fp32-head-gemm-split8",
8
+ "model": "rtmw3d-l",
9
+ "policy": "fp32-head-gemm-split8",
10
+ "file": "experiments/rtmw3d-l-fp32-head-gemm-split8.onnx",
11
+ "sizeBytes": 230139419,
12
+ "sha256": "a2767b1c20120f8351852f1c87617794c6852ace4de76bf12c7c483fa8ab76ed",
13
+ "precision": "fp32",
14
+ "experimental": true,
15
+ "qualityPassed": true,
16
+ "browserGPUValidated": false,
17
+ "sourceRevision": "88ee5cb728cb2ed3efaf43011c9dd4908a6504b7",
18
+ "sourceModelSha256": "4e37e5e9043817c5ff387b61c44bb48af94ad42e4978c4e43780761c65582abc",
19
+ "upstream": "https://github.com/open-mmlab/mmpose",
20
+ "weightsUnchangedFP32": true,
21
+ "input": {
22
+ "name": "input",
23
+ "type": "float32",
24
+ "shape": [
25
+ 1,
26
+ 3,
27
+ 384,
28
+ 288
29
+ ]
30
+ },
31
+ "outputs": [
32
+ {
33
+ "name": "keypoints",
34
+ "type": "float32",
35
+ "shape": [
36
+ 1,
37
+ 133,
38
+ 3
39
+ ],
40
+ "units": [
41
+ "crop-pixels",
42
+ "crop-pixels",
43
+ "root-relative-metres"
44
+ ]
45
+ },
46
+ {
47
+ "name": "scores",
48
+ "type": "float32",
49
+ "shape": [
50
+ 1,
51
+ 133
52
+ ]
53
+ }
54
+ ],
55
+ "outputBytesPerFrame": 2128,
56
+ "changedConvolutions": [
57
+ {
58
+ "node": "/head/final_layer/conv/Conv",
59
+ "inputShape": [
60
+ 1,
61
+ 1024,
62
+ 12,
63
+ 9
64
+ ],
65
+ "weightShape": [
66
+ 133,
67
+ 1024,
68
+ 7,
69
+ 7
70
+ ],
71
+ "outputShape": [
72
+ 1,
73
+ 133,
74
+ 12,
75
+ 9
76
+ ],
77
+ "kernel": [
78
+ 7,
79
+ 7
80
+ ],
81
+ "pads": [
82
+ 3,
83
+ 3,
84
+ 3,
85
+ 3
86
+ ],
87
+ "strides": [
88
+ 1,
89
+ 1
90
+ ],
91
+ "dilations": [
92
+ 1,
93
+ 1
94
+ ],
95
+ "splits": 8,
96
+ "convolutionFLOPs": 1441456128,
97
+ "columnBytes": 21676032
98
+ },
99
+ {
100
+ "node": "/head/final_layer2/conv/Conv",
101
+ "inputShape": [
102
+ 1,
103
+ 768,
104
+ 24,
105
+ 18
106
+ ],
107
+ "weightShape": [
108
+ 133,
109
+ 768,
110
+ 7,
111
+ 7
112
+ ],
113
+ "outputShape": [
114
+ 1,
115
+ 133,
116
+ 24,
117
+ 18
118
+ ],
119
+ "kernel": [
120
+ 7,
121
+ 7
122
+ ],
123
+ "pads": [
124
+ 3,
125
+ 3,
126
+ 3,
127
+ 3
128
+ ],
129
+ "strides": [
130
+ 1,
131
+ 1
132
+ ],
133
+ "dilations": [
134
+ 1,
135
+ 1
136
+ ],
137
+ "splits": 8,
138
+ "convolutionFLOPs": 4324368384,
139
+ "columnBytes": 65028096
140
+ }
141
+ ],
142
+ "comparisons": [
143
+ {
144
+ "publicFixtureImageId": 40083,
145
+ "parts": {
146
+ "all": {
147
+ "joints": 111,
148
+ "xyP95_px": 0.0,
149
+ "zP95_m": 0.0,
150
+ "xyMax_px": 0.0,
151
+ "zMax_m": 0.0,
152
+ "confidenceLossCount": 0
153
+ },
154
+ "body": {
155
+ "joints": 16,
156
+ "xyP95_px": 0.0,
157
+ "zP95_m": 0.0,
158
+ "xyMax_px": 0.0,
159
+ "zMax_m": 0.0,
160
+ "confidenceLossCount": 0
161
+ },
162
+ "body-feet": {
163
+ "joints": 22,
164
+ "xyP95_px": 0.0,
165
+ "zP95_m": 0.0,
166
+ "xyMax_px": 0.0,
167
+ "zMax_m": 0.0,
168
+ "confidenceLossCount": 0
169
+ },
170
+ "hips": {
171
+ "joints": 2,
172
+ "xyP95_px": 0.0,
173
+ "zP95_m": 0.0,
174
+ "xyMax_px": 0.0,
175
+ "zMax_m": 0.0,
176
+ "confidenceLossCount": 0
177
+ },
178
+ "knees": {
179
+ "joints": 2,
180
+ "xyP95_px": 0.0,
181
+ "zP95_m": 0.0,
182
+ "xyMax_px": 0.0,
183
+ "zMax_m": 0.0,
184
+ "confidenceLossCount": 0
185
+ },
186
+ "ankles": {
187
+ "joints": 2,
188
+ "xyP95_px": 0.0,
189
+ "zP95_m": 0.0,
190
+ "xyMax_px": 0.0,
191
+ "zMax_m": 0.0,
192
+ "confidenceLossCount": 0
193
+ },
194
+ "feet": {
195
+ "joints": 6,
196
+ "xyP95_px": 0.0,
197
+ "zP95_m": 0.0,
198
+ "xyMax_px": 0.0,
199
+ "zMax_m": 0.0,
200
+ "confidenceLossCount": 0
201
+ },
202
+ "face": {
203
+ "joints": 68,
204
+ "xyP95_px": 0.0,
205
+ "zP95_m": 0.0,
206
+ "xyMax_px": 0.0,
207
+ "zMax_m": 0.0,
208
+ "confidenceLossCount": 0
209
+ },
210
+ "hands": {
211
+ "joints": 21,
212
+ "xyP95_px": 0.0,
213
+ "zP95_m": 0.0,
214
+ "xyMax_px": 0.0,
215
+ "zMax_m": 0.0,
216
+ "confidenceLossCount": 0
217
+ }
218
+ },
219
+ "scoreMaxAbsoluteError": 5.960464477539062e-07
220
+ },
221
+ {
222
+ "publicFixtureImageId": 197388,
223
+ "parts": {
224
+ "all": {
225
+ "joints": 133,
226
+ "xyP95_px": 0.0,
227
+ "zP95_m": 0.0,
228
+ "xyMax_px": 0.0,
229
+ "zMax_m": 0.0,
230
+ "confidenceLossCount": 0
231
+ },
232
+ "body": {
233
+ "joints": 17,
234
+ "xyP95_px": 0.0,
235
+ "zP95_m": 0.0,
236
+ "xyMax_px": 0.0,
237
+ "zMax_m": 0.0,
238
+ "confidenceLossCount": 0
239
+ },
240
+ "body-feet": {
241
+ "joints": 23,
242
+ "xyP95_px": 0.0,
243
+ "zP95_m": 0.0,
244
+ "xyMax_px": 0.0,
245
+ "zMax_m": 0.0,
246
+ "confidenceLossCount": 0
247
+ },
248
+ "hips": {
249
+ "joints": 2,
250
+ "xyP95_px": 0.0,
251
+ "zP95_m": 0.0,
252
+ "xyMax_px": 0.0,
253
+ "zMax_m": 0.0,
254
+ "confidenceLossCount": 0
255
+ },
256
+ "knees": {
257
+ "joints": 2,
258
+ "xyP95_px": 0.0,
259
+ "zP95_m": 0.0,
260
+ "xyMax_px": 0.0,
261
+ "zMax_m": 0.0,
262
+ "confidenceLossCount": 0
263
+ },
264
+ "ankles": {
265
+ "joints": 2,
266
+ "xyP95_px": 0.0,
267
+ "zP95_m": 0.0,
268
+ "xyMax_px": 0.0,
269
+ "zMax_m": 0.0,
270
+ "confidenceLossCount": 0
271
+ },
272
+ "feet": {
273
+ "joints": 6,
274
+ "xyP95_px": 0.0,
275
+ "zP95_m": 0.0,
276
+ "xyMax_px": 0.0,
277
+ "zMax_m": 0.0,
278
+ "confidenceLossCount": 0
279
+ },
280
+ "face": {
281
+ "joints": 68,
282
+ "xyP95_px": 0.0,
283
+ "zP95_m": 0.0,
284
+ "xyMax_px": 0.0,
285
+ "zMax_m": 0.0,
286
+ "confidenceLossCount": 0
287
+ },
288
+ "hands": {
289
+ "joints": 42,
290
+ "xyP95_px": 0.0,
291
+ "zP95_m": 0.0,
292
+ "xyMax_px": 0.0,
293
+ "zMax_m": 0.0,
294
+ "confidenceLossCount": 0
295
+ }
296
+ },
297
+ "scoreMaxAbsoluteError": 4.172325134277344e-07
298
+ }
299
+ ],
300
+ "referenceLatencyMs": [],
301
+ "note": "Same trained weights and 133-point 3D contract; explicit im2col and optional batched split-K reduction. CPU conversion tests are not WebGPU performance or target-video accuracy measurements."
302
+ },
303
+ {
304
+ "id": "rtmw3d-l-fp32-head-gemm",
305
+ "model": "rtmw3d-l",
306
+ "policy": "fp32-head-gemm",
307
+ "file": "experiments/rtmw3d-l-fp32-head-gemm.onnx",
308
+ "sizeBytes": 230137728,
309
+ "sha256": "b1a60dccb44759a9af3de6d54691c6dc0c9318909722f7baaf2cf781697ccefe",
310
+ "precision": "fp32",
311
+ "experimental": true,
312
+ "qualityPassed": true,
313
+ "browserGPUValidated": false,
314
+ "sourceRevision": "88ee5cb728cb2ed3efaf43011c9dd4908a6504b7",
315
+ "sourceModelSha256": "4e37e5e9043817c5ff387b61c44bb48af94ad42e4978c4e43780761c65582abc",
316
+ "upstream": "https://github.com/open-mmlab/mmpose",
317
+ "weightsUnchangedFP32": true,
318
+ "input": {
319
+ "name": "input",
320
+ "type": "float32",
321
+ "shape": [
322
+ 1,
323
+ 3,
324
+ 384,
325
+ 288
326
+ ]
327
+ },
328
+ "outputs": [
329
+ {
330
+ "name": "keypoints",
331
+ "type": "float32",
332
+ "shape": [
333
+ 1,
334
+ 133,
335
+ 3
336
+ ],
337
+ "units": [
338
+ "crop-pixels",
339
+ "crop-pixels",
340
+ "root-relative-metres"
341
+ ]
342
+ },
343
+ {
344
+ "name": "scores",
345
+ "type": "float32",
346
+ "shape": [
347
+ 1,
348
+ 133
349
+ ]
350
+ }
351
+ ],
352
+ "outputBytesPerFrame": 2128,
353
+ "changedConvolutions": [
354
+ {
355
+ "node": "/head/final_layer/conv/Conv",
356
+ "inputShape": [
357
+ 1,
358
+ 1024,
359
+ 12,
360
+ 9
361
+ ],
362
+ "weightShape": [
363
+ 133,
364
+ 1024,
365
+ 7,
366
+ 7
367
+ ],
368
+ "outputShape": [
369
+ 1,
370
+ 133,
371
+ 12,
372
+ 9
373
+ ],
374
+ "kernel": [
375
+ 7,
376
+ 7
377
+ ],
378
+ "pads": [
379
+ 3,
380
+ 3,
381
+ 3,
382
+ 3
383
+ ],
384
+ "strides": [
385
+ 1,
386
+ 1
387
+ ],
388
+ "dilations": [
389
+ 1,
390
+ 1
391
+ ],
392
+ "splits": 1,
393
+ "convolutionFLOPs": 1441456128,
394
+ "columnBytes": 21676032
395
+ },
396
+ {
397
+ "node": "/head/final_layer2/conv/Conv",
398
+ "inputShape": [
399
+ 1,
400
+ 768,
401
+ 24,
402
+ 18
403
+ ],
404
+ "weightShape": [
405
+ 133,
406
+ 768,
407
+ 7,
408
+ 7
409
+ ],
410
+ "outputShape": [
411
+ 1,
412
+ 133,
413
+ 24,
414
+ 18
415
+ ],
416
+ "kernel": [
417
+ 7,
418
+ 7
419
+ ],
420
+ "pads": [
421
+ 3,
422
+ 3,
423
+ 3,
424
+ 3
425
+ ],
426
+ "strides": [
427
+ 1,
428
+ 1
429
+ ],
430
+ "dilations": [
431
+ 1,
432
+ 1
433
+ ],
434
+ "splits": 1,
435
+ "convolutionFLOPs": 4324368384,
436
+ "columnBytes": 65028096
437
+ }
438
+ ],
439
+ "comparisons": [
440
+ {
441
+ "publicFixtureImageId": 40083,
442
+ "parts": {
443
+ "all": {
444
+ "joints": 111,
445
+ "xyP95_px": 0.0,
446
+ "zP95_m": 0.0,
447
+ "xyMax_px": 0.0,
448
+ "zMax_m": 0.0,
449
+ "confidenceLossCount": 0
450
+ },
451
+ "body": {
452
+ "joints": 16,
453
+ "xyP95_px": 0.0,
454
+ "zP95_m": 0.0,
455
+ "xyMax_px": 0.0,
456
+ "zMax_m": 0.0,
457
+ "confidenceLossCount": 0
458
+ },
459
+ "body-feet": {
460
+ "joints": 22,
461
+ "xyP95_px": 0.0,
462
+ "zP95_m": 0.0,
463
+ "xyMax_px": 0.0,
464
+ "zMax_m": 0.0,
465
+ "confidenceLossCount": 0
466
+ },
467
+ "hips": {
468
+ "joints": 2,
469
+ "xyP95_px": 0.0,
470
+ "zP95_m": 0.0,
471
+ "xyMax_px": 0.0,
472
+ "zMax_m": 0.0,
473
+ "confidenceLossCount": 0
474
+ },
475
+ "knees": {
476
+ "joints": 2,
477
+ "xyP95_px": 0.0,
478
+ "zP95_m": 0.0,
479
+ "xyMax_px": 0.0,
480
+ "zMax_m": 0.0,
481
+ "confidenceLossCount": 0
482
+ },
483
+ "ankles": {
484
+ "joints": 2,
485
+ "xyP95_px": 0.0,
486
+ "zP95_m": 0.0,
487
+ "xyMax_px": 0.0,
488
+ "zMax_m": 0.0,
489
+ "confidenceLossCount": 0
490
+ },
491
+ "feet": {
492
+ "joints": 6,
493
+ "xyP95_px": 0.0,
494
+ "zP95_m": 0.0,
495
+ "xyMax_px": 0.0,
496
+ "zMax_m": 0.0,
497
+ "confidenceLossCount": 0
498
+ },
499
+ "face": {
500
+ "joints": 68,
501
+ "xyP95_px": 0.0,
502
+ "zP95_m": 0.0,
503
+ "xyMax_px": 0.0,
504
+ "zMax_m": 0.0,
505
+ "confidenceLossCount": 0
506
+ },
507
+ "hands": {
508
+ "joints": 21,
509
+ "xyP95_px": 0.0,
510
+ "zP95_m": 0.0,
511
+ "xyMax_px": 0.0,
512
+ "zMax_m": 0.0,
513
+ "confidenceLossCount": 0
514
+ }
515
+ },
516
+ "scoreMaxAbsoluteError": 4.76837158203125e-07
517
+ },
518
+ {
519
+ "publicFixtureImageId": 197388,
520
+ "parts": {
521
+ "all": {
522
+ "joints": 133,
523
+ "xyP95_px": 0.0,
524
+ "zP95_m": 0.0,
525
+ "xyMax_px": 0.0,
526
+ "zMax_m": 0.0,
527
+ "confidenceLossCount": 0
528
+ },
529
+ "body": {
530
+ "joints": 17,
531
+ "xyP95_px": 0.0,
532
+ "zP95_m": 0.0,
533
+ "xyMax_px": 0.0,
534
+ "zMax_m": 0.0,
535
+ "confidenceLossCount": 0
536
+ },
537
+ "body-feet": {
538
+ "joints": 23,
539
+ "xyP95_px": 0.0,
540
+ "zP95_m": 0.0,
541
+ "xyMax_px": 0.0,
542
+ "zMax_m": 0.0,
543
+ "confidenceLossCount": 0
544
+ },
545
+ "hips": {
546
+ "joints": 2,
547
+ "xyP95_px": 0.0,
548
+ "zP95_m": 0.0,
549
+ "xyMax_px": 0.0,
550
+ "zMax_m": 0.0,
551
+ "confidenceLossCount": 0
552
+ },
553
+ "knees": {
554
+ "joints": 2,
555
+ "xyP95_px": 0.0,
556
+ "zP95_m": 0.0,
557
+ "xyMax_px": 0.0,
558
+ "zMax_m": 0.0,
559
+ "confidenceLossCount": 0
560
+ },
561
+ "ankles": {
562
+ "joints": 2,
563
+ "xyP95_px": 0.0,
564
+ "zP95_m": 0.0,
565
+ "xyMax_px": 0.0,
566
+ "zMax_m": 0.0,
567
+ "confidenceLossCount": 0
568
+ },
569
+ "feet": {
570
+ "joints": 6,
571
+ "xyP95_px": 0.0,
572
+ "zP95_m": 0.0,
573
+ "xyMax_px": 0.0,
574
+ "zMax_m": 0.0,
575
+ "confidenceLossCount": 0
576
+ },
577
+ "face": {
578
+ "joints": 68,
579
+ "xyP95_px": 0.0,
580
+ "zP95_m": 0.0,
581
+ "xyMax_px": 0.0,
582
+ "zMax_m": 0.0,
583
+ "confidenceLossCount": 0
584
+ },
585
+ "hands": {
586
+ "joints": 42,
587
+ "xyP95_px": 0.0,
588
+ "zP95_m": 0.0,
589
+ "xyMax_px": 0.0,
590
+ "zMax_m": 0.0,
591
+ "confidenceLossCount": 0
592
+ }
593
+ },
594
+ "scoreMaxAbsoluteError": 4.76837158203125e-07
595
+ }
596
+ ],
597
+ "referenceLatencyMs": [],
598
+ "note": "Same trained weights and 133-point 3D contract; explicit im2col and optional batched split-K reduction. CPU conversion tests are not WebGPU performance or target-video accuracy measurements."
599
+ }
600
+ ],
601
+ "browserGPUValidated": false
602
+ }
experiments/rtmw3d-l-fp32-head-gemm-split8.json ADDED
@@ -0,0 +1,297 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "rtmw3d-l-fp32-head-gemm-split8",
3
+ "model": "rtmw3d-l",
4
+ "policy": "fp32-head-gemm-split8",
5
+ "file": "experiments/rtmw3d-l-fp32-head-gemm-split8.onnx",
6
+ "sizeBytes": 230139419,
7
+ "sha256": "a2767b1c20120f8351852f1c87617794c6852ace4de76bf12c7c483fa8ab76ed",
8
+ "precision": "fp32",
9
+ "experimental": true,
10
+ "qualityPassed": true,
11
+ "browserGPUValidated": false,
12
+ "sourceRevision": "88ee5cb728cb2ed3efaf43011c9dd4908a6504b7",
13
+ "sourceModelSha256": "4e37e5e9043817c5ff387b61c44bb48af94ad42e4978c4e43780761c65582abc",
14
+ "upstream": "https://github.com/open-mmlab/mmpose",
15
+ "weightsUnchangedFP32": true,
16
+ "input": {
17
+ "name": "input",
18
+ "type": "float32",
19
+ "shape": [
20
+ 1,
21
+ 3,
22
+ 384,
23
+ 288
24
+ ]
25
+ },
26
+ "outputs": [
27
+ {
28
+ "name": "keypoints",
29
+ "type": "float32",
30
+ "shape": [
31
+ 1,
32
+ 133,
33
+ 3
34
+ ],
35
+ "units": [
36
+ "crop-pixels",
37
+ "crop-pixels",
38
+ "root-relative-metres"
39
+ ]
40
+ },
41
+ {
42
+ "name": "scores",
43
+ "type": "float32",
44
+ "shape": [
45
+ 1,
46
+ 133
47
+ ]
48
+ }
49
+ ],
50
+ "outputBytesPerFrame": 2128,
51
+ "changedConvolutions": [
52
+ {
53
+ "node": "/head/final_layer/conv/Conv",
54
+ "inputShape": [
55
+ 1,
56
+ 1024,
57
+ 12,
58
+ 9
59
+ ],
60
+ "weightShape": [
61
+ 133,
62
+ 1024,
63
+ 7,
64
+ 7
65
+ ],
66
+ "outputShape": [
67
+ 1,
68
+ 133,
69
+ 12,
70
+ 9
71
+ ],
72
+ "kernel": [
73
+ 7,
74
+ 7
75
+ ],
76
+ "pads": [
77
+ 3,
78
+ 3,
79
+ 3,
80
+ 3
81
+ ],
82
+ "strides": [
83
+ 1,
84
+ 1
85
+ ],
86
+ "dilations": [
87
+ 1,
88
+ 1
89
+ ],
90
+ "splits": 8,
91
+ "convolutionFLOPs": 1441456128,
92
+ "columnBytes": 21676032
93
+ },
94
+ {
95
+ "node": "/head/final_layer2/conv/Conv",
96
+ "inputShape": [
97
+ 1,
98
+ 768,
99
+ 24,
100
+ 18
101
+ ],
102
+ "weightShape": [
103
+ 133,
104
+ 768,
105
+ 7,
106
+ 7
107
+ ],
108
+ "outputShape": [
109
+ 1,
110
+ 133,
111
+ 24,
112
+ 18
113
+ ],
114
+ "kernel": [
115
+ 7,
116
+ 7
117
+ ],
118
+ "pads": [
119
+ 3,
120
+ 3,
121
+ 3,
122
+ 3
123
+ ],
124
+ "strides": [
125
+ 1,
126
+ 1
127
+ ],
128
+ "dilations": [
129
+ 1,
130
+ 1
131
+ ],
132
+ "splits": 8,
133
+ "convolutionFLOPs": 4324368384,
134
+ "columnBytes": 65028096
135
+ }
136
+ ],
137
+ "comparisons": [
138
+ {
139
+ "publicFixtureImageId": 40083,
140
+ "parts": {
141
+ "all": {
142
+ "joints": 111,
143
+ "xyP95_px": 0.0,
144
+ "zP95_m": 0.0,
145
+ "xyMax_px": 0.0,
146
+ "zMax_m": 0.0,
147
+ "confidenceLossCount": 0
148
+ },
149
+ "body": {
150
+ "joints": 16,
151
+ "xyP95_px": 0.0,
152
+ "zP95_m": 0.0,
153
+ "xyMax_px": 0.0,
154
+ "zMax_m": 0.0,
155
+ "confidenceLossCount": 0
156
+ },
157
+ "body-feet": {
158
+ "joints": 22,
159
+ "xyP95_px": 0.0,
160
+ "zP95_m": 0.0,
161
+ "xyMax_px": 0.0,
162
+ "zMax_m": 0.0,
163
+ "confidenceLossCount": 0
164
+ },
165
+ "hips": {
166
+ "joints": 2,
167
+ "xyP95_px": 0.0,
168
+ "zP95_m": 0.0,
169
+ "xyMax_px": 0.0,
170
+ "zMax_m": 0.0,
171
+ "confidenceLossCount": 0
172
+ },
173
+ "knees": {
174
+ "joints": 2,
175
+ "xyP95_px": 0.0,
176
+ "zP95_m": 0.0,
177
+ "xyMax_px": 0.0,
178
+ "zMax_m": 0.0,
179
+ "confidenceLossCount": 0
180
+ },
181
+ "ankles": {
182
+ "joints": 2,
183
+ "xyP95_px": 0.0,
184
+ "zP95_m": 0.0,
185
+ "xyMax_px": 0.0,
186
+ "zMax_m": 0.0,
187
+ "confidenceLossCount": 0
188
+ },
189
+ "feet": {
190
+ "joints": 6,
191
+ "xyP95_px": 0.0,
192
+ "zP95_m": 0.0,
193
+ "xyMax_px": 0.0,
194
+ "zMax_m": 0.0,
195
+ "confidenceLossCount": 0
196
+ },
197
+ "face": {
198
+ "joints": 68,
199
+ "xyP95_px": 0.0,
200
+ "zP95_m": 0.0,
201
+ "xyMax_px": 0.0,
202
+ "zMax_m": 0.0,
203
+ "confidenceLossCount": 0
204
+ },
205
+ "hands": {
206
+ "joints": 21,
207
+ "xyP95_px": 0.0,
208
+ "zP95_m": 0.0,
209
+ "xyMax_px": 0.0,
210
+ "zMax_m": 0.0,
211
+ "confidenceLossCount": 0
212
+ }
213
+ },
214
+ "scoreMaxAbsoluteError": 5.960464477539062e-07
215
+ },
216
+ {
217
+ "publicFixtureImageId": 197388,
218
+ "parts": {
219
+ "all": {
220
+ "joints": 133,
221
+ "xyP95_px": 0.0,
222
+ "zP95_m": 0.0,
223
+ "xyMax_px": 0.0,
224
+ "zMax_m": 0.0,
225
+ "confidenceLossCount": 0
226
+ },
227
+ "body": {
228
+ "joints": 17,
229
+ "xyP95_px": 0.0,
230
+ "zP95_m": 0.0,
231
+ "xyMax_px": 0.0,
232
+ "zMax_m": 0.0,
233
+ "confidenceLossCount": 0
234
+ },
235
+ "body-feet": {
236
+ "joints": 23,
237
+ "xyP95_px": 0.0,
238
+ "zP95_m": 0.0,
239
+ "xyMax_px": 0.0,
240
+ "zMax_m": 0.0,
241
+ "confidenceLossCount": 0
242
+ },
243
+ "hips": {
244
+ "joints": 2,
245
+ "xyP95_px": 0.0,
246
+ "zP95_m": 0.0,
247
+ "xyMax_px": 0.0,
248
+ "zMax_m": 0.0,
249
+ "confidenceLossCount": 0
250
+ },
251
+ "knees": {
252
+ "joints": 2,
253
+ "xyP95_px": 0.0,
254
+ "zP95_m": 0.0,
255
+ "xyMax_px": 0.0,
256
+ "zMax_m": 0.0,
257
+ "confidenceLossCount": 0
258
+ },
259
+ "ankles": {
260
+ "joints": 2,
261
+ "xyP95_px": 0.0,
262
+ "zP95_m": 0.0,
263
+ "xyMax_px": 0.0,
264
+ "zMax_m": 0.0,
265
+ "confidenceLossCount": 0
266
+ },
267
+ "feet": {
268
+ "joints": 6,
269
+ "xyP95_px": 0.0,
270
+ "zP95_m": 0.0,
271
+ "xyMax_px": 0.0,
272
+ "zMax_m": 0.0,
273
+ "confidenceLossCount": 0
274
+ },
275
+ "face": {
276
+ "joints": 68,
277
+ "xyP95_px": 0.0,
278
+ "zP95_m": 0.0,
279
+ "xyMax_px": 0.0,
280
+ "zMax_m": 0.0,
281
+ "confidenceLossCount": 0
282
+ },
283
+ "hands": {
284
+ "joints": 42,
285
+ "xyP95_px": 0.0,
286
+ "zP95_m": 0.0,
287
+ "xyMax_px": 0.0,
288
+ "zMax_m": 0.0,
289
+ "confidenceLossCount": 0
290
+ }
291
+ },
292
+ "scoreMaxAbsoluteError": 4.172325134277344e-07
293
+ }
294
+ ],
295
+ "referenceLatencyMs": [],
296
+ "note": "Same trained weights and 133-point 3D contract; explicit im2col and optional batched split-K reduction. CPU conversion tests are not WebGPU performance or target-video accuracy measurements."
297
+ }
experiments/rtmw3d-l-fp32-head-gemm-split8.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a2767b1c20120f8351852f1c87617794c6852ace4de76bf12c7c483fa8ab76ed
3
+ size 230139419
experiments/rtmw3d-l-fp32-head-gemm.json ADDED
@@ -0,0 +1,297 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "rtmw3d-l-fp32-head-gemm",
3
+ "model": "rtmw3d-l",
4
+ "policy": "fp32-head-gemm",
5
+ "file": "experiments/rtmw3d-l-fp32-head-gemm.onnx",
6
+ "sizeBytes": 230137728,
7
+ "sha256": "b1a60dccb44759a9af3de6d54691c6dc0c9318909722f7baaf2cf781697ccefe",
8
+ "precision": "fp32",
9
+ "experimental": true,
10
+ "qualityPassed": true,
11
+ "browserGPUValidated": false,
12
+ "sourceRevision": "88ee5cb728cb2ed3efaf43011c9dd4908a6504b7",
13
+ "sourceModelSha256": "4e37e5e9043817c5ff387b61c44bb48af94ad42e4978c4e43780761c65582abc",
14
+ "upstream": "https://github.com/open-mmlab/mmpose",
15
+ "weightsUnchangedFP32": true,
16
+ "input": {
17
+ "name": "input",
18
+ "type": "float32",
19
+ "shape": [
20
+ 1,
21
+ 3,
22
+ 384,
23
+ 288
24
+ ]
25
+ },
26
+ "outputs": [
27
+ {
28
+ "name": "keypoints",
29
+ "type": "float32",
30
+ "shape": [
31
+ 1,
32
+ 133,
33
+ 3
34
+ ],
35
+ "units": [
36
+ "crop-pixels",
37
+ "crop-pixels",
38
+ "root-relative-metres"
39
+ ]
40
+ },
41
+ {
42
+ "name": "scores",
43
+ "type": "float32",
44
+ "shape": [
45
+ 1,
46
+ 133
47
+ ]
48
+ }
49
+ ],
50
+ "outputBytesPerFrame": 2128,
51
+ "changedConvolutions": [
52
+ {
53
+ "node": "/head/final_layer/conv/Conv",
54
+ "inputShape": [
55
+ 1,
56
+ 1024,
57
+ 12,
58
+ 9
59
+ ],
60
+ "weightShape": [
61
+ 133,
62
+ 1024,
63
+ 7,
64
+ 7
65
+ ],
66
+ "outputShape": [
67
+ 1,
68
+ 133,
69
+ 12,
70
+ 9
71
+ ],
72
+ "kernel": [
73
+ 7,
74
+ 7
75
+ ],
76
+ "pads": [
77
+ 3,
78
+ 3,
79
+ 3,
80
+ 3
81
+ ],
82
+ "strides": [
83
+ 1,
84
+ 1
85
+ ],
86
+ "dilations": [
87
+ 1,
88
+ 1
89
+ ],
90
+ "splits": 1,
91
+ "convolutionFLOPs": 1441456128,
92
+ "columnBytes": 21676032
93
+ },
94
+ {
95
+ "node": "/head/final_layer2/conv/Conv",
96
+ "inputShape": [
97
+ 1,
98
+ 768,
99
+ 24,
100
+ 18
101
+ ],
102
+ "weightShape": [
103
+ 133,
104
+ 768,
105
+ 7,
106
+ 7
107
+ ],
108
+ "outputShape": [
109
+ 1,
110
+ 133,
111
+ 24,
112
+ 18
113
+ ],
114
+ "kernel": [
115
+ 7,
116
+ 7
117
+ ],
118
+ "pads": [
119
+ 3,
120
+ 3,
121
+ 3,
122
+ 3
123
+ ],
124
+ "strides": [
125
+ 1,
126
+ 1
127
+ ],
128
+ "dilations": [
129
+ 1,
130
+ 1
131
+ ],
132
+ "splits": 1,
133
+ "convolutionFLOPs": 4324368384,
134
+ "columnBytes": 65028096
135
+ }
136
+ ],
137
+ "comparisons": [
138
+ {
139
+ "publicFixtureImageId": 40083,
140
+ "parts": {
141
+ "all": {
142
+ "joints": 111,
143
+ "xyP95_px": 0.0,
144
+ "zP95_m": 0.0,
145
+ "xyMax_px": 0.0,
146
+ "zMax_m": 0.0,
147
+ "confidenceLossCount": 0
148
+ },
149
+ "body": {
150
+ "joints": 16,
151
+ "xyP95_px": 0.0,
152
+ "zP95_m": 0.0,
153
+ "xyMax_px": 0.0,
154
+ "zMax_m": 0.0,
155
+ "confidenceLossCount": 0
156
+ },
157
+ "body-feet": {
158
+ "joints": 22,
159
+ "xyP95_px": 0.0,
160
+ "zP95_m": 0.0,
161
+ "xyMax_px": 0.0,
162
+ "zMax_m": 0.0,
163
+ "confidenceLossCount": 0
164
+ },
165
+ "hips": {
166
+ "joints": 2,
167
+ "xyP95_px": 0.0,
168
+ "zP95_m": 0.0,
169
+ "xyMax_px": 0.0,
170
+ "zMax_m": 0.0,
171
+ "confidenceLossCount": 0
172
+ },
173
+ "knees": {
174
+ "joints": 2,
175
+ "xyP95_px": 0.0,
176
+ "zP95_m": 0.0,
177
+ "xyMax_px": 0.0,
178
+ "zMax_m": 0.0,
179
+ "confidenceLossCount": 0
180
+ },
181
+ "ankles": {
182
+ "joints": 2,
183
+ "xyP95_px": 0.0,
184
+ "zP95_m": 0.0,
185
+ "xyMax_px": 0.0,
186
+ "zMax_m": 0.0,
187
+ "confidenceLossCount": 0
188
+ },
189
+ "feet": {
190
+ "joints": 6,
191
+ "xyP95_px": 0.0,
192
+ "zP95_m": 0.0,
193
+ "xyMax_px": 0.0,
194
+ "zMax_m": 0.0,
195
+ "confidenceLossCount": 0
196
+ },
197
+ "face": {
198
+ "joints": 68,
199
+ "xyP95_px": 0.0,
200
+ "zP95_m": 0.0,
201
+ "xyMax_px": 0.0,
202
+ "zMax_m": 0.0,
203
+ "confidenceLossCount": 0
204
+ },
205
+ "hands": {
206
+ "joints": 21,
207
+ "xyP95_px": 0.0,
208
+ "zP95_m": 0.0,
209
+ "xyMax_px": 0.0,
210
+ "zMax_m": 0.0,
211
+ "confidenceLossCount": 0
212
+ }
213
+ },
214
+ "scoreMaxAbsoluteError": 4.76837158203125e-07
215
+ },
216
+ {
217
+ "publicFixtureImageId": 197388,
218
+ "parts": {
219
+ "all": {
220
+ "joints": 133,
221
+ "xyP95_px": 0.0,
222
+ "zP95_m": 0.0,
223
+ "xyMax_px": 0.0,
224
+ "zMax_m": 0.0,
225
+ "confidenceLossCount": 0
226
+ },
227
+ "body": {
228
+ "joints": 17,
229
+ "xyP95_px": 0.0,
230
+ "zP95_m": 0.0,
231
+ "xyMax_px": 0.0,
232
+ "zMax_m": 0.0,
233
+ "confidenceLossCount": 0
234
+ },
235
+ "body-feet": {
236
+ "joints": 23,
237
+ "xyP95_px": 0.0,
238
+ "zP95_m": 0.0,
239
+ "xyMax_px": 0.0,
240
+ "zMax_m": 0.0,
241
+ "confidenceLossCount": 0
242
+ },
243
+ "hips": {
244
+ "joints": 2,
245
+ "xyP95_px": 0.0,
246
+ "zP95_m": 0.0,
247
+ "xyMax_px": 0.0,
248
+ "zMax_m": 0.0,
249
+ "confidenceLossCount": 0
250
+ },
251
+ "knees": {
252
+ "joints": 2,
253
+ "xyP95_px": 0.0,
254
+ "zP95_m": 0.0,
255
+ "xyMax_px": 0.0,
256
+ "zMax_m": 0.0,
257
+ "confidenceLossCount": 0
258
+ },
259
+ "ankles": {
260
+ "joints": 2,
261
+ "xyP95_px": 0.0,
262
+ "zP95_m": 0.0,
263
+ "xyMax_px": 0.0,
264
+ "zMax_m": 0.0,
265
+ "confidenceLossCount": 0
266
+ },
267
+ "feet": {
268
+ "joints": 6,
269
+ "xyP95_px": 0.0,
270
+ "zP95_m": 0.0,
271
+ "xyMax_px": 0.0,
272
+ "zMax_m": 0.0,
273
+ "confidenceLossCount": 0
274
+ },
275
+ "face": {
276
+ "joints": 68,
277
+ "xyP95_px": 0.0,
278
+ "zP95_m": 0.0,
279
+ "xyMax_px": 0.0,
280
+ "zMax_m": 0.0,
281
+ "confidenceLossCount": 0
282
+ },
283
+ "hands": {
284
+ "joints": 42,
285
+ "xyP95_px": 0.0,
286
+ "zP95_m": 0.0,
287
+ "xyMax_px": 0.0,
288
+ "zMax_m": 0.0,
289
+ "confidenceLossCount": 0
290
+ }
291
+ },
292
+ "scoreMaxAbsoluteError": 4.76837158203125e-07
293
+ }
294
+ ],
295
+ "referenceLatencyMs": [],
296
+ "note": "Same trained weights and 133-point 3D contract; explicit im2col and optional batched split-K reduction. CPU conversion tests are not WebGPU performance or target-video accuracy measurements."
297
+ }
experiments/rtmw3d-l-fp32-head-gemm.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b1a60dccb44759a9af3de6d54691c6dc0c9318909722f7baaf2cf781697ccefe
3
+ size 230137728