File size: 60,784 Bytes
a097504
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
15240f0
a097504
 
 
 
 
15240f0
a097504
15240f0
 
 
 
 
 
 
 
 
 
 
a097504
 
 
 
15240f0
 
 
 
 
 
 
 
a097504
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
 
 
 
 
15240f0
a097504
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
# Model Runs

This document records completed FastFace model runs and deployment measurements.

## Current Completed Runs

| Run | Backbone | Input | Training Data | Best Epoch | Gender Balanced Acc | Gender Acc | Age MAE | FP32 ONNX | Static INT8 ONNX |
| --- | --- | ---: | --- | ---: | ---: | ---: | ---: | ---: | ---: |
| `efficientnet_v2_s_128_imdb_source_balanced_gender_priority_real_fairface_utkface` | EfficientNetV2-S | 128 | FairFace + UTKFace + IMDB-clean, source-limited train/val, gender-priority loss | 38 | 0.98605 | 0.98605 | 4.84 | 79.5 MB | 22.5 MB |
| `mobilenetv3_large128_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | MobileNetV3-Large | 128 | FairFace + UTKFace + IMDB-clean, source-limited train/val, gender-priority loss, IMDB V2-S gender teacher | 24 | 0.97929 | 0.97955 | 5.71 | 13.4 MB | 3.8 MB |
| `mobilenetv3_small112_imdb_facecrop_real_fairface_utkface` | MobileNetV3-Small | 112 | FairFace + UTKFace + IMDB-clean, natural source mix | 24 | 0.96994 | 0.97006 | 5.95 | 4.9 MB | 1.5 MB |
| `mobilenetv3_small112_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | MobileNetV3-Small | 112 | FairFace + UTKFace + IMDB-clean, source-limited train/val, gender-priority loss, IMDB V2-S gender teacher | 35 | 0.96800 | 0.96855 | 6.25 | 4.9 MB | 1.5 MB |
| `mobilenetv3_small112_imdb_pretrain_finetune_fairface_utkface` | MobileNetV3-Small | 112 | IMDB-expanded Small112 initialization, fine-tuned on FairFace + UTKFace | 8 | 0.96784 | 0.96756 | 6.21 | 4.9 MB | 1.5 MB |
| `mobilenetv3_small112_imdb_source_balanced_facecrop_real_fairface_utkface` | MobileNetV3-Small | 112 | FairFace + UTKFace + IMDB-clean, source-limited checkpoint selection | 25 | 0.96553 | 0.96633 | 6.28 | 4.9 MB | 1.5 MB |
| `efficientnet_v2_s_128_gender_priority_real_fairface_utkface` | EfficientNetV2-S | 128 | FairFace + UTKFace, gender-priority loss | 34 | 0.94703 | 0.94678 | 5.28 | 79.5 MB | 22.5 MB |
| `efficientnet_v2_s_128_real_fairface_utkface` | EfficientNetV2-S | 128 | FairFace + UTKFace | 22 | 0.94594 | 0.94574 | 4.87 | 79.5 MB | 22.5 MB |
| `efficientnet_b0_128_gender_priority_real_fairface_utkface` | EfficientNet-B0 | 128 | FairFace + UTKFace, gender-priority loss | 37 | 0.93910 | 0.93916 | 5.42 | 18.0 MB | 5.4 MB |
| `efficientnet_b0_128_real_fairface_utkface` | EfficientNet-B0 | 128 | FairFace + UTKFace | 34 | 0.93850 | 0.93834 | 5.26 | 18 MB | 5.4 MB |
| `resnet18_128_real_fairface_utkface` | ResNet18 | 128 | FairFace + UTKFace | 39 | 0.93467 | 0.93490 | 5.18 | 43.8 MB | 11.1 MB |
| `convnext_tiny_128_real_fairface_utkface` | ConvNeXt-Tiny | 128 | FairFace + UTKFace | 32 | 0.93443 | 0.93408 | 5.13 | 107.9 MB | 27.8 MB |
| `mobilenetv3_large128_distill_gender_priority_efficientnet_v2_s_fairface_utkface` | MobileNetV3-Large | 128 | FairFace + UTKFace + EfficientNetV2-S gender teacher, gender-priority loss | 28 | 0.93376 | 0.93408 | 5.61 | 13.4 MB | 3.8 MB |
| `mobilenetv3_large128_distill_gender_efficientnet_v2_s_fairface_utkface` | MobileNetV3-Large | 128 | FairFace + UTKFace + EfficientNetV2-S gender teacher | 34 | 0.93230 | 0.93266 | 5.72 | 13.4 MB | 3.8 MB |
| `mobilenetv3_large128_distill_efficientnet_v2_s_fairface_utkface` | MobileNetV3-Large | 128 | FairFace + UTKFace + EfficientNetV2-S teacher | 24 | 0.93092 | 0.93131 | 5.39 | 13.4 MB | 3.8 MB |
| `mobilenetv3_large128_distill_light_efficientnet_v2_s_fairface_utkface` | MobileNetV3-Large | 128 | FairFace + UTKFace + light EfficientNetV2-S teacher | 33 | 0.92994 | 0.92996 | 5.41 | 13.4 MB | 3.8 MB |
| `mobilenetv3_real_fairface_utkface` | MobileNetV3-Large | 128 | FairFace + UTKFace | 34 | 0.92965 | 0.92984 | 5.53 | 14 MB | 3.9 MB |
| `mobilenetv3_large112_distill_gender_efficientnet_v2_s_fairface_utkface` | MobileNetV3-Large | 112 | FairFace + UTKFace + EfficientNetV2-S gender teacher | 30 | 0.92895 | 0.92892 | 5.72 | 13.4 MB | 3.8 MB |
| `mobilenetv3_large112_real_fairface_utkface` | MobileNetV3-Large | 112 | FairFace + UTKFace | 31 | 0.92828 | 0.92835 | 5.68 | 14 MB | 3.9 MB |
| `mobilenetv3_large112_distill_efficientnet_v2_s_fairface_utkface` | MobileNetV3-Large | 112 | FairFace + UTKFace + EfficientNetV2-S teacher | 23 | 0.92687 | 0.92660 | 5.46 | 13.4 MB | 3.8 MB |
| `mobilenetv3_small112_distill_efficientnet_b0_fairface_utkface` | MobileNetV3-Small | 112 | FairFace + UTKFace + EfficientNet-B0 teacher | 25 | 0.91051 | 0.91061 | 5.90 | 4.9 MB | 1.5 MB |
| `mobilenetv3_small128_real_fairface_utkface` | MobileNetV3-Small | 128 | FairFace + UTKFace | 27 | 0.91028 | 0.91068 | 5.95 | 4.9 MB | 1.5 MB |
| `mobilenetv3_small112_real_fairface_utkface` | MobileNetV3-Small | 112 | FairFace + UTKFace | 39 | 0.90989 | 0.91049 | 6.03 | 4.9 MB | 1.6 MB |
| `mobilenetv3_small112_distill_large112_fairface_utkface` | MobileNetV3-Small | 112 | FairFace + UTKFace + Large112 teacher | 31 | 0.90745 | 0.90765 | 5.97 | 4.9 MB | 1.6 MB |
| `mobilenetv3_small112_distill_efficientnet_v2_s_fairface_utkface` | MobileNetV3-Small | 112 | FairFace + UTKFace + EfficientNetV2-S teacher | 27 | 0.90711 | 0.90694 | 5.89 | 4.9 MB | 1.5 MB |
| `mobilenetv3_small112_distill_gender_efficientnet_v2_s_fairface_utkface` | MobileNetV3-Small | 112 | FairFace + UTKFace + EfficientNetV2-S gender teacher | 32 | 0.90677 | 0.90679 | 6.04 | 4.9 MB | 1.5 MB |
| `mobilenetv3_small112_distill_light_large112_fairface_utkface` | MobileNetV3-Small | 112 | FairFace + UTKFace + light Large112 teacher | 28 | 0.90622 | 0.90646 | 6.02 | 4.9 MB | 1.6 MB |
| `mobilenetv3_small112_lagenda_real_fairface_utkface` | MobileNetV3-Small | 112 | FairFace + UTKFace + Lagenda-HF, no bbox crop | 31 | 0.87875 | 0.87821 | 6.92 | 4.9 MB | 1.6 MB |
| `mobilenetv3_small112_lagenda_facecrop_real_fairface_utkface` | MobileNetV3-Small | 112 | FairFace + UTKFace + Lagenda-HF, bbox crop margin 0.2 | 34 | 0.90670 | 0.90691 | 6.12 | 4.9 MB | 1.6 MB |
| `swin_t_128_real_fairface_utkface` | Swin-T | 128 | FairFace + UTKFace | 36 | 0.92206 | 0.92204 | 5.53 | 109.3 MB | 29.9 MB |

EfficientNetV2-S gender-priority remains the current public FairFace + UTKFace teacher candidate. The IMDB-expanded EfficientNetV2-S source-balanced run has the highest mixed aggregate score and is a useful IMDB-inclusive teacher/challenger, but it is not the CPU deployment default and does not replace the public-data teacher for FairFace robustness because its FairFace source slice is slightly lower. The IMDB-expanded MobileNetV3-Large distillation run is the strongest completed MobileNetV3 accuracy/CPU tradeoff candidate. The IMDB-expanded MobileNetV3-Small runs keep stronger CPU throughput, but none is promoted as the deployment default because the source-sliced FairFace metric remains modest. MobileNetV3-Small 112 FP32 remains the current high-throughput CPU family.

## Current Active Runs

| Run | Backbone | Input | Training Data | Status |
| --- | --- | ---: | --- | --- |
| None | - | - | - | No active training run is currently recorded after the MobileNetV3-Large IMDB source-balanced gender-distillation run finalized on 2026-07-30. |

The EfficientNetV2-S source-balanced IMDB run is the strongest completed mixed-manifest teacher/challenger. It reaches full-manifest mixed evaluation gender balanced accuracy `0.98605`, driven by `imdb-clean` at `0.99138`, while FairFace lands at `0.94386`. That FairFace slice is slightly lower than the earlier public-data EfficientNetV2-S gender-priority run's FairFace slice `0.94586`, so this checkpoint is useful for IMDB-inclusive pseudo-labeling and age/gender coverage, not as a clean replacement for the public FairFace robustness teacher.

The MobileNetV3-Large source-balanced IMDB gender-distillation run is the strongest completed MobileNetV3 accuracy/CPU tradeoff candidate so far. It reaches mixed evaluation gender balanced accuracy `0.97929`, with FairFace `0.92877`, IMDB-clean `0.98548`, and UTKFace `0.95017`. It is much stronger than the Small112 distillation candidate on accuracy, but tuned FP32 batch-128 throughput is `4,477.7` img/s, roughly 41% of the Small112 distillation run's `10,837.8` img/s and 31% of the original Small112 throughput candidate's `14,483.4` img/s. Use it when gender accuracy matters more than maximum CPU throughput.

The MobileNetV3-Small source-balanced IMDB gender-distillation run is the strongest completed Small-family IMDB-inclusive gender candidate so far. It uses the completed source-balanced IMDB EfficientNetV2-S checkpoint as a low-weight gender-only teacher, reaches mixed evaluation gender balanced accuracy `0.96800`, and improves source-sliced FairFace to `0.90562`, above the earlier Small112 FairFace + UTKFace slice `0.90319` and the source-balanced non-distilled IMDB slice `0.89950`. It is still not the pure throughput winner: tuned FP32 batch-128 throughput is `10,837.8` img/s versus `14,483.4` img/s for the original Small112 FP32 throughput candidate.

The natural IMDB-expanded MobileNetV3-Small run is a useful completed data-expansion result, but not the current deployment default. It reaches mixed evaluation gender balanced accuracy `0.96994`, mostly driven by `imdb-clean` validation at `0.97854`; FairFace lands at only `0.90004`, below the FairFace + UTKFace small baseline. The source-balanced rerun caps IMDB-clean during training and checkpoint-selection validation, but final full-manifest evaluation still shows FairFace at only `0.89950` while IMDB-clean is `0.97347`. Source caps alone therefore do not fix the public FairFace regression. The IMDB-pretrained then FairFace + UTKFace fine-tuned run improves FairFace only to `0.90024`, still below the original non-IMDB Small112 FairFace slice at `0.90319`, so it is also not promoted.

The tested EfficientNetV2-S gender-priority challenger is the best completed public-data teacher candidate so far. It raises evaluation gender balanced accuracy from regular V2-S `0.94594` to `0.94703`, while age MAE worsens from `4.87` to `5.28`. It is not a CPU deployment default: default FP32 batch-128 throughput is only `885.1` img/s, and default static INT8 batch-128 throughput is `841.0` img/s.

The tested EfficientNet-B0 gender-priority challenger is the best completed B0 run for gender. It raises evaluation gender balanced accuracy from `0.93850` to `0.93910`, but age MAE worsens from `5.26` to `5.42`, and tuned FP32 batch-128 throughput stays around `2,513.0` img/s. It is a useful middle accuracy candidate, not the CPU throughput default and not a replacement for EfficientNetV2-S gender-priority as teacher.

The tested MobileNetV3-Small distillation and 128-input runs are not default candidates. The EfficientNet-B0 teacher run slightly improves MobileNetV3-Small gender balanced accuracy from `0.90979` evaluation aggregate to `0.91051`, and improves age MAE from `6.03` to `5.90`, but tuned FP32 batch-128 throughput drops from `14,483.4` to `11,386.4` img/s. The stronger EfficientNetV2-S teacher reduces the student to `0.90711`, likely because its logits over-constrain the small model on this limited data mix. Disabling age distillation for the EfficientNetV2-S Small112 student does not help; the gender-only run lands at `0.90677`. The MobileNetV3-Small 128 run reaches `0.91028`, but tuned FP32 batch-128 throughput is only `10,320.6` img/s. MobileNetV3-Large EfficientNetV2-S teacher runs can improve gender accuracy over some non-distilled baselines; the Large128 gender-priority variant is the strongest completed MobileNetV3-Large gender run, while the Large112 variants do not become defaults. The Large112 standard V2-S distillation run improves age MAE to `5.46` but drops gender balanced accuracy to `0.92687`.

The tested Lagenda-HF expansion is also not a default candidate yet. Directly resizing Lagenda raw images failed because the images are full scenes rather than aligned face crops. Applying manifest `bbox_face` cropping fixes Lagenda validation dramatically, but the combined gender balanced accuracy still lands at `0.90670`, below the FairFace + UTKFace small baseline.

The tested Swin-T 128 transformer challenger is also not a default candidate. It reaches only `0.92206` gender balanced accuracy, below ConvNeXt-Tiny, ResNet18, EfficientNet-B0, EfficientNetV2-S, and the best MobileNetV3-Large variants. Its default FP32 CPU batch-128 throughput is only `105.9` img/s, and static INT8 drops to `29.6` img/s. The full thread sweep was intentionally stopped after `model_fp32_threads1` had run for more than 8 minutes without completing; the default CPU benchmark is already enough to rule it out for CPU deployment.

Age MAE is measured on the mixed public validation split. Treat it as directional only because FairFace contributes age-range labels, while UTKFace contributes exact ages.

## Source-Sliced Validation

| Run | Source | Count | Gender Balanced Acc | Gender Acc | Age MAE | Age CS@5 |
| --- | --- | ---: | ---: | ---: | ---: | ---: |
| `efficientnet_v2_s_128_imdb_source_balanced_gender_priority_real_fairface_utkface` | FairFace | 10,954 | 0.94386 | 0.94376 | 5.32 | 0.57395 |
| `efficientnet_v2_s_128_imdb_source_balanced_gender_priority_real_fairface_utkface` | IMDB-clean | 102,059 | 0.99138 | 0.99135 | 4.79 | 0.63523 |
| `efficientnet_v2_s_128_imdb_source_balanced_gender_priority_real_fairface_utkface` | UTKFace | 2,425 | 0.95424 | 0.95423 | 4.57 | 0.66969 |
| `mobilenetv3_large128_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | FairFace | 10,954 | 0.92877 | 0.92879 | 5.94 | 0.54619 |
| `mobilenetv3_large128_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | IMDB-clean | 102,059 | 0.98548 | 0.98568 | 5.70 | 0.55329 |
| `mobilenetv3_large128_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | UTKFace | 2,425 | 0.95017 | 0.95052 | 4.96 | 0.63423 |
| `mobilenetv3_small112_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | FairFace | 10,954 | 0.90562 | 0.90588 | 6.48 | 0.50858 |
| `mobilenetv3_small112_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | IMDB-clean | 102,059 | 0.97542 | 0.97594 | 6.24 | 0.50751 |
| `mobilenetv3_small112_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | UTKFace | 2,425 | 0.94101 | 0.94103 | 5.37 | 0.61443 |
| `mobilenetv3_small112_imdb_facecrop_real_fairface_utkface` | FairFace | 10,954 | 0.90004 | 0.90031 | 6.22 | 0.52894 |
| `mobilenetv3_small112_imdb_facecrop_real_fairface_utkface` | IMDB-clean | 102,059 | 0.97854 | 0.97852 | 5.94 | 0.54274 |
| `mobilenetv3_small112_imdb_facecrop_real_fairface_utkface` | UTKFace | 2,425 | 0.92936 | 0.92907 | 5.16 | 0.62887 |
| `mobilenetv3_small112_imdb_pretrain_finetune_fairface_utkface` | FairFace | 10,954 | 0.90024 | 0.90004 | 6.15 | 0.53396 |
| `mobilenetv3_small112_imdb_pretrain_finetune_fairface_utkface` | IMDB-clean | 102,059 | 0.97605 | 0.97565 | 6.24 | 0.52547 |
| `mobilenetv3_small112_imdb_pretrain_finetune_fairface_utkface` | UTKFace | 2,425 | 0.93190 | 0.93196 | 5.11 | 0.64000 |
| `mobilenetv3_small112_imdb_source_balanced_facecrop_real_fairface_utkface` | FairFace | 10,954 | 0.89950 | 0.90004 | 6.25 | 0.52145 |
| `mobilenetv3_small112_imdb_source_balanced_facecrop_real_fairface_utkface` | IMDB-clean | 102,059 | 0.97347 | 0.97414 | 6.31 | 0.51614 |
| `mobilenetv3_small112_imdb_source_balanced_facecrop_real_fairface_utkface` | UTKFace | 2,425 | 0.93607 | 0.93691 | 5.21 | 0.63381 |
| `efficientnet_v2_s_128_gender_priority_real_fairface_utkface` | FairFace | 10,954 | 0.94586 | 0.94559 | 5.42 | 0.57066 |
| `efficientnet_v2_s_128_gender_priority_real_fairface_utkface` | UTKFace | 2,425 | 0.95229 | 0.95216 | 4.63 | 0.66474 |
| `efficientnet_v2_s_128_real_fairface_utkface` | FairFace | 10,954 | 0.94427 | 0.94404 | 4.97 | 0.57413 |
| `efficientnet_v2_s_128_real_fairface_utkface` | UTKFace | 2,425 | 0.95351 | 0.95340 | 4.42 | 0.68330 |
| `efficientnet_b0_128_gender_priority_real_fairface_utkface` | FairFace | 10,954 | 0.93648 | 0.93655 | 5.55 | 0.56637 |
| `efficientnet_b0_128_gender_priority_real_fairface_utkface` | UTKFace | 2,425 | 0.95093 | 0.95093 | 4.82 | 0.64701 |
| `efficientnet_b0_128_real_fairface_utkface` | FairFace | 10,954 | 0.93578 | 0.93555 | 5.39 | 0.55779 |
| `efficientnet_b0_128_real_fairface_utkface` | UTKFace | 2,425 | 0.95079 | 0.95093 | 4.69 | 0.66186 |
| `resnet18_128_real_fairface_utkface` | FairFace | 10,954 | 0.93229 | 0.93254 | 5.32 | 0.55770 |
| `resnet18_128_real_fairface_utkface` | UTKFace | 2,425 | 0.94544 | 0.94557 | 4.58 | 0.66639 |
| `convnext_tiny_128_real_fairface_utkface` | FairFace | 10,954 | 0.93166 | 0.93135 | 5.25 | 0.56436 |
| `convnext_tiny_128_real_fairface_utkface` | UTKFace | 2,425 | 0.94692 | 0.94639 | 4.56 | 0.66722 |
| `swin_t_128_real_fairface_utkface` | FairFace | 10,954 | 0.91832 | 0.91829 | 5.72 | 0.55624 |
| `swin_t_128_real_fairface_utkface` | UTKFace | 2,425 | 0.93891 | 0.93897 | 4.64 | 0.66309 |
| `mobilenetv3_large128_distill_gender_priority_efficientnet_v2_s_fairface_utkface` | FairFace | 10,954 | 0.93070 | 0.93108 | 5.79 | 0.55039 |
| `mobilenetv3_large128_distill_gender_priority_efficientnet_v2_s_fairface_utkface` | UTKFace | 2,425 | 0.94753 | 0.94763 | 4.82 | 0.65237 |
| `mobilenetv3_large128_distill_gender_efficientnet_v2_s_fairface_utkface` | FairFace | 10,954 | 0.92959 | 0.92998 | 5.90 | 0.52474 |
| `mobilenetv3_large128_distill_gender_efficientnet_v2_s_fairface_utkface` | UTKFace | 2,425 | 0.94452 | 0.94474 | 4.91 | 0.64948 |
| `mobilenetv3_large128_distill_efficientnet_v2_s_fairface_utkface` | FairFace | 10,954 | 0.92753 | 0.92797 | 5.53 | 0.53898 |
| `mobilenetv3_large128_distill_efficientnet_v2_s_fairface_utkface` | UTKFace | 2,425 | 0.94622 | 0.94639 | 4.79 | 0.65031 |
| `mobilenetv3_large128_distill_light_efficientnet_v2_s_fairface_utkface` | FairFace | 10,954 | 0.92638 | 0.92642 | 5.57 | 0.53779 |
| `mobilenetv3_large128_distill_light_efficientnet_v2_s_fairface_utkface` | UTKFace | 2,425 | 0.94602 | 0.94598 | 4.69 | 0.65773 |
| `mobilenetv3_real_fairface_utkface` | FairFace | 10,954 | 0.92724 | 0.92742 | 5.72 | 0.53396 |
| `mobilenetv3_real_fairface_utkface` | UTKFace | 2,425 | 0.94077 | 0.94103 | 4.71 | 0.66722 |
| `mobilenetv3_large112_distill_gender_efficientnet_v2_s_fairface_utkface` | FairFace | 10,954 | 0.92619 | 0.92615 | 5.91 | 0.52629 |
| `mobilenetv3_large112_distill_gender_efficientnet_v2_s_fairface_utkface` | UTKFace | 2,425 | 0.94144 | 0.94144 | 4.86 | 0.63835 |
| `mobilenetv3_large112_real_fairface_utkface` | FairFace | 10,954 | 0.92465 | 0.92478 | 5.88 | 0.52501 |
| `mobilenetv3_large112_real_fairface_utkface` | UTKFace | 2,425 | 0.94450 | 0.94433 | 4.75 | 0.64742 |
| `mobilenetv3_large112_distill_efficientnet_v2_s_fairface_utkface` | FairFace | 10,954 | 0.92410 | 0.92386 | 5.63 | 0.54619 |
| `mobilenetv3_large112_distill_efficientnet_v2_s_fairface_utkface` | UTKFace | 2,425 | 0.93938 | 0.93897 | 4.70 | 0.66969 |
| `mobilenetv3_small112_distill_efficientnet_b0_fairface_utkface` | FairFace | 10,954 | 0.90365 | 0.90387 | 6.08 | 0.53852 |
| `mobilenetv3_small112_distill_efficientnet_b0_fairface_utkface` | UTKFace | 2,425 | 0.94147 | 0.94103 | 5.07 | 0.63876 |
| `mobilenetv3_small128_real_fairface_utkface` | FairFace | 10,954 | 0.90442 | 0.90497 | 6.12 | 0.52921 |
| `mobilenetv3_small128_real_fairface_utkface` | UTKFace | 2,425 | 0.93671 | 0.93649 | 5.20 | 0.62474 |
| `mobilenetv3_small112_real_fairface_utkface` | FairFace | 10,954 | 0.90319 | 0.90387 | 6.23 | 0.52657 |
| `mobilenetv3_small112_real_fairface_utkface` | UTKFace | 2,425 | 0.93960 | 0.93979 | 5.12 | 0.63134 |
| `mobilenetv3_small112_distill_efficientnet_v2_s_fairface_utkface` | FairFace | 10,954 | 0.90058 | 0.90049 | 6.08 | 0.53661 |
| `mobilenetv3_small112_distill_efficientnet_v2_s_fairface_utkface` | UTKFace | 2,425 | 0.93656 | 0.93608 | 5.04 | 0.63052 |
| `mobilenetv3_small112_distill_gender_efficientnet_v2_s_fairface_utkface` | FairFace | 10,954 | 0.90002 | 0.90013 | 6.23 | 0.52885 |
| `mobilenetv3_small112_distill_gender_efficientnet_v2_s_fairface_utkface` | UTKFace | 2,425 | 0.93729 | 0.93691 | 5.19 | 0.62474 |
| `mobilenetv3_small112_distill_large112_fairface_utkface` | FairFace | 10,954 | 0.90257 | 0.90278 | 6.14 | 0.53232 |
| `mobilenetv3_small112_distill_large112_fairface_utkface` | UTKFace | 2,425 | 0.92928 | 0.92948 | 5.19 | 0.63876 |
| `mobilenetv3_small112_distill_light_large112_fairface_utkface` | FairFace | 10,954 | 0.90042 | 0.90068 | 6.21 | 0.52912 |
| `mobilenetv3_small112_distill_light_large112_fairface_utkface` | UTKFace | 2,425 | 0.93308 | 0.93320 | 5.13 | 0.62309 |
| `mobilenetv3_small112_lagenda_real_fairface_utkface` | FairFace | 10,954 | 0.89729 | 0.89702 | 6.32 | 0.52109 |
| `mobilenetv3_small112_lagenda_real_fairface_utkface` | Lagenda | 1,282 | 0.62406 | 0.62324 | 15.28 | 0.25429 |
| `mobilenetv3_small112_lagenda_real_fairface_utkface` | UTKFace | 2,425 | 0.92867 | 0.92825 | 5.20 | 0.62845 |
| `mobilenetv3_small112_lagenda_facecrop_real_fairface_utkface` | FairFace | 10,954 | 0.90197 | 0.90232 | 6.19 | 0.53496 |
| `mobilenetv3_small112_lagenda_facecrop_real_fairface_utkface` | Lagenda | 1,282 | 0.88850 | 0.88846 | 7.54 | 0.49454 |
| `mobilenetv3_small112_lagenda_facecrop_real_fairface_utkface` | UTKFace | 2,425 | 0.93735 | 0.93732 | 5.08 | 0.64000 |

## CPU Benchmark

ONNX Runtime `CPUExecutionProvider` on `<remote-gpu-host>`.

Default-thread results:

| Run | Model | Batch 1 | Batch 8 | Batch 32 | Batch 128 |
| --- | --- | ---: | ---: | ---: | ---: |
| `efficientnet_v2_s_128_imdb_source_balanced_gender_priority_real_fairface_utkface` | FP32 | 44.4 img/s | 282.3 img/s | 638.8 img/s | 1,044.1 img/s |
| `efficientnet_v2_s_128_imdb_source_balanced_gender_priority_real_fairface_utkface` | Static INT8 | 102.6 img/s | 387.5 img/s | 634.7 img/s | 990.5 img/s |
| `mobilenetv3_large128_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | FP32 | 164.0 img/s | 938.1 img/s | 2,705.2 img/s | 4,401.1 img/s |
| `mobilenetv3_large128_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | Static INT8 | 385.1 img/s | 693.3 img/s | 963.1 img/s | 1,081.7 img/s |
| `mobilenetv3_small112_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | FP32 | 215.4 img/s | 1,042.9 img/s | 4,332.8 img/s | 9,540.9 img/s |
| `mobilenetv3_small112_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | Static INT8 | 768.7 img/s | 1,298.1 img/s | 1,882.6 img/s | 2,352.7 img/s |
| `mobilenetv3_small112_imdb_facecrop_real_fairface_utkface` | FP32 | 215.3 img/s | 1,057.9 img/s | 4,357.1 img/s | 9,523.0 img/s |
| `mobilenetv3_small112_imdb_facecrop_real_fairface_utkface` | Static INT8 | 797.7 img/s | 1,302.4 img/s | 1,912.4 img/s | 2,252.2 img/s |
| `mobilenetv3_small112_imdb_pretrain_finetune_fairface_utkface` | FP32 | 212.5 img/s | 1,060.8 img/s | 4,417.5 img/s | 9,440.9 img/s |
| `mobilenetv3_small112_imdb_pretrain_finetune_fairface_utkface` | Static INT8 | 767.1 img/s | 1,301.6 img/s | 1,892.4 img/s | 2,228.4 img/s |
| `mobilenetv3_small112_imdb_source_balanced_facecrop_real_fairface_utkface` | FP32 | 215.6 img/s | 1,060.9 img/s | 4,417.4 img/s | 9,505.4 img/s |
| `mobilenetv3_small112_imdb_source_balanced_facecrop_real_fairface_utkface` | Static INT8 | 772.8 img/s | 1,295.9 img/s | 1,881.2 img/s | 2,249.1 img/s |
| `efficientnet_v2_s_128_gender_priority_real_fairface_utkface` | FP32 | 45.4 img/s | 240.3 img/s | 536.1 img/s | 885.1 img/s |
| `efficientnet_v2_s_128_gender_priority_real_fairface_utkface` | Static INT8 | 101.2 img/s | 381.7 img/s | 637.9 img/s | 841.0 img/s |
| `efficientnet_v2_s_128_real_fairface_utkface` | FP32 | 42.5 img/s | 269.7 img/s | 556.6 img/s | 1,062.4 img/s |
| `efficientnet_v2_s_128_real_fairface_utkface` | Static INT8 | 103.3 img/s | 386.4 img/s | 637.1 img/s | 962.8 img/s |
| `efficientnet_b0_128_gender_priority_real_fairface_utkface` | FP32 | 115.9 img/s | 650.5 img/s | 1,494.2 img/s | 2,402.9 img/s |
| `efficientnet_b0_128_gender_priority_real_fairface_utkface` | Static INT8 | 205.0 img/s | 557.3 img/s | 890.7 img/s | 1,140.0 img/s |
| `efficientnet_b0_128_real_fairface_utkface` | FP32 | 115.8 img/s | 667.3 img/s | 1,487.4 img/s | 2,424.5 img/s |
| `efficientnet_b0_128_real_fairface_utkface` | Static INT8 | 205.9 img/s | 556.0 img/s | 896.2 img/s | 1,049.5 img/s |
| `resnet18_128_real_fairface_utkface` | FP32 | 557.8 img/s | 1,957.0 img/s | 3,037.8 img/s | 4,082.1 img/s |
| `resnet18_128_real_fairface_utkface` | Static INT8 | 607.0 img/s | 1,882.2 img/s | 2,406.6 img/s | 2,679.1 img/s |
| `convnext_tiny_128_real_fairface_utkface` | FP32 | 78.6 img/s | 210.8 img/s | 264.1 img/s | 307.9 img/s |
| `convnext_tiny_128_real_fairface_utkface` | Static INT8 | 74.4 img/s | 151.2 img/s | 175.2 img/s | 219.7 img/s |
| `swin_t_128_real_fairface_utkface` | FP32 | 37.5 img/s | 81.2 img/s | 106.8 img/s | 105.9 img/s |
| `swin_t_128_real_fairface_utkface` | Static INT8 | 21.8 img/s | 29.2 img/s | 30.1 img/s | 29.6 img/s |
| `mobilenetv3_large128_distill_gender_priority_efficientnet_v2_s_fairface_utkface` | FP32 | 162.3 img/s | 927.9 img/s | 2,681.4 img/s | 4,416.7 img/s |
| `mobilenetv3_large128_distill_gender_priority_efficientnet_v2_s_fairface_utkface` | Static INT8 | 448.4 img/s | 935.6 img/s | 1,092.4 img/s | 1,341.2 img/s |
| `mobilenetv3_large128_distill_gender_efficientnet_v2_s_fairface_utkface` | FP32 | 164.5 img/s | 937.1 img/s | 2,952.4 img/s | 4,275.3 img/s |
| `mobilenetv3_large128_distill_gender_efficientnet_v2_s_fairface_utkface` | Static INT8 | 431.0 img/s | 806.3 img/s | 1,200.4 img/s | 1,362.1 img/s |
| `mobilenetv3_large128_distill_efficientnet_v2_s_fairface_utkface` | FP32 | 163.8 img/s | 911.4 img/s | 2,631.8 img/s | 4,214.4 img/s |
| `mobilenetv3_large128_distill_efficientnet_v2_s_fairface_utkface` | Static INT8 | 381.8 img/s | 691.3 img/s | 969.6 img/s | 1,102.6 img/s |
| `mobilenetv3_large128_distill_light_efficientnet_v2_s_fairface_utkface` | FP32 | 165.1 img/s | 934.4 img/s | 2,695.8 img/s | 4,286.1 img/s |
| `mobilenetv3_large128_distill_light_efficientnet_v2_s_fairface_utkface` | Static INT8 | 383.0 img/s | 691.6 img/s | 963.9 img/s | 1,164.2 img/s |
| `mobilenetv3_real_fairface_utkface` | FP32 | 196.4 img/s | 1,131.2 img/s | 2,986.3 img/s | 4,633.1 img/s |
| `mobilenetv3_real_fairface_utkface` | Static INT8 | 438.5 img/s | 952.5 img/s | 1,315.3 img/s | 1,350.2 img/s |
| `mobilenetv3_large112_distill_gender_efficientnet_v2_s_fairface_utkface` | FP32 | 207.7 img/s | 1,222.6 img/s | 3,313.0 img/s | 5,251.1 img/s |
| `mobilenetv3_large112_distill_gender_efficientnet_v2_s_fairface_utkface` | Static INT8 | 437.2 img/s | 783.8 img/s | 1,461.9 img/s | 1,287.4 img/s |
| `mobilenetv3_large112_real_fairface_utkface` | FP32 | 217.6 img/s | 1,179.6 img/s | 3,106.5 img/s | 5,139.9 img/s |
| `mobilenetv3_large112_real_fairface_utkface` | Static INT8 | 509.9 img/s | 966.7 img/s | 1,351.5 img/s | 1,629.2 img/s |
| `mobilenetv3_large112_distill_efficientnet_v2_s_fairface_utkface` | FP32 | 168.8 img/s | 946.4 img/s | 3,285.2 img/s | 4,980.5 img/s |
| `mobilenetv3_large112_distill_efficientnet_v2_s_fairface_utkface` | Static INT8 | 433.8 img/s | 777.1 img/s | 1,111.8 img/s | 1,292.4 img/s |
| `mobilenetv3_small112_distill_efficientnet_b0_fairface_utkface` | FP32 | 212.3 img/s | 1,039.3 img/s | 4,342.1 img/s | 9,479.8 img/s |
| `mobilenetv3_small112_distill_efficientnet_b0_fairface_utkface` | Static INT8 | 764.6 img/s | 1,294.7 img/s | 2,017.5 img/s | 2,440.6 img/s |
| `mobilenetv3_small128_real_fairface_utkface` | FP32 | 207.7 img/s | 1,082.5 img/s | 4,676.0 img/s | 8,432.3 img/s |
| `mobilenetv3_small128_real_fairface_utkface` | Static INT8 | 673.1 img/s | 1,168.2 img/s | 1,636.6 img/s | 1,944.7 img/s |
| `mobilenetv3_small112_real_fairface_utkface` | FP32 | 255.5 img/s | 1,369.4 img/s | 5,539.2 img/s | 10,286.6 img/s |
| `mobilenetv3_small112_real_fairface_utkface` | Static INT8 | 897.1 img/s | 1,677.0 img/s | 2,778.8 img/s | 3,097.7 img/s |
| `mobilenetv3_small112_distill_efficientnet_v2_s_fairface_utkface` | FP32 | 214.6 img/s | 1,057.4 img/s | 4,363.6 img/s | 9,521.9 img/s |
| `mobilenetv3_small112_distill_efficientnet_v2_s_fairface_utkface` | Static INT8 | 912.9 img/s | 1,570.8 img/s | 2,402.8 img/s | 2,983.9 img/s |
| `mobilenetv3_small112_distill_gender_efficientnet_v2_s_fairface_utkface` | FP32 | 214.7 img/s | 1,058.1 img/s | 4,363.8 img/s | 9,425.5 img/s |
| `mobilenetv3_small112_distill_gender_efficientnet_v2_s_fairface_utkface` | Static INT8 | 766.6 img/s | 1,302.3 img/s | 1,878.3 img/s | 2,244.0 img/s |
| `mobilenetv3_small112_distill_large112_fairface_utkface` | FP32 | 267.7 img/s | 1,338.8 img/s | 5,144.0 img/s | 10,003.3 img/s |
| `mobilenetv3_small112_distill_large112_fairface_utkface` | Static INT8 | 1,200.1 img/s | 1,955.7 img/s | 2,261.2 img/s | 2,273.2 img/s |
| `mobilenetv3_small112_distill_light_large112_fairface_utkface` | FP32 | 268.6 img/s | 1,471.4 img/s | 5,407.8 img/s | 10,254.8 img/s |
| `mobilenetv3_small112_distill_light_large112_fairface_utkface` | Static INT8 | 920.3 img/s | 1,595.9 img/s | 2,472.9 img/s | 3,177.1 img/s |
| `mobilenetv3_small112_lagenda_real_fairface_utkface` | FP32 | 268.6 img/s | 1,470.3 img/s | 5,480.0 img/s | 9,530.8 img/s |
| `mobilenetv3_small112_lagenda_real_fairface_utkface` | Static INT8 | 915.7 img/s | 1,593.8 img/s | 2,490.9 img/s | 2,499.2 img/s |
| `mobilenetv3_small112_lagenda_facecrop_real_fairface_utkface` | FP32 | 217.2 img/s | 1,063.2 img/s | 4,436.6 img/s | 9,496.8 img/s |
| `mobilenetv3_small112_lagenda_facecrop_real_fairface_utkface` | Static INT8 | 893.4 img/s | 1,554.8 img/s | 2,422.3 img/s | 3,052.0 img/s |

Best results from intra-op thread sweep with `inter_op_num_threads=1` and sequential execution:

| Run | Model | Batch 1 | Batch 8 | Batch 32 | Batch 128 |
| --- | --- | ---: | ---: | ---: | ---: |
| `mobilenetv3_large128_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | FP32 | 527.0 img/s @ 8 threads | 1,859.5 img/s @ 16 threads | 3,452.2 img/s @ 28 threads | 4,477.7 img/s @ 28 threads |
| `mobilenetv3_large128_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | Static INT8 | 742.5 img/s @ 8 threads | 1,345.4 img/s @ 28 threads | 1,527.4 img/s @ 28 threads | 1,517.0 img/s @ 16 threads |
| `mobilenetv3_small112_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | FP32 | 1,353.7 img/s @ 2 threads | 2,873.5 img/s @ 8 threads | 8,063.9 img/s @ 8 threads | 10,837.8 img/s @ 28 threads |
| `mobilenetv3_small112_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface` | Static INT8 | 1,436.0 img/s @ 8 threads | 2,777.1 img/s @ 8 threads | 3,446.4 img/s @ 28 threads | 3,598.3 img/s @ 28 threads |
| `mobilenetv3_small112_imdb_facecrop_real_fairface_utkface` | FP32 | 1,413.5 img/s @ 4 threads | 3,360.9 img/s @ 4 threads | 7,904.4 img/s @ 28 threads | 12,748.3 img/s @ 28 threads |
| `mobilenetv3_small112_imdb_facecrop_real_fairface_utkface` | Static INT8 | 1,382.9 img/s @ 4 threads | 2,546.3 img/s @ 4 threads | 3,152.7 img/s @ 8 threads | 3,332.3 img/s @ 8 threads |
| `mobilenetv3_small112_imdb_pretrain_finetune_fairface_utkface` | FP32 | 1,303.7 img/s @ 1 thread | 2,824.2 img/s @ 28 threads | 9,196.2 img/s @ 28 threads | 13,050.6 img/s @ 28 threads |
| `mobilenetv3_small112_imdb_pretrain_finetune_fairface_utkface` | Static INT8 | 1,418.7 img/s @ 4 threads | 2,525.5 img/s @ 4 threads | 3,100.2 img/s @ 28 threads | 3,278.9 img/s @ 16 threads |
| `mobilenetv3_small112_imdb_source_balanced_facecrop_real_fairface_utkface` | FP32 | 1,314.7 img/s @ 1 thread | 3,116.5 img/s @ 16 threads | 8,626.6 img/s @ 16 threads | 12,579.9 img/s @ 28 threads |
| `mobilenetv3_small112_imdb_source_balanced_facecrop_real_fairface_utkface` | Static INT8 | 1,352.0 img/s @ 8 threads | 2,480.1 img/s @ 8 threads | 3,100.8 img/s @ 8 threads | 3,251.8 img/s @ 16 threads |
| `efficientnet_v2_s_128_real_fairface_utkface` | FP32 | 125.1 img/s @ 28 threads | 427.0 img/s @ 28 threads | 760.1 img/s @ 28 threads | 1,000.6 img/s @ 28 threads |
| `efficientnet_v2_s_128_real_fairface_utkface` | Static INT8 | 181.8 img/s @ 16 threads | 565.5 img/s @ 16 threads | 799.5 img/s @ 28 threads | 1,051.8 img/s @ 56 threads |
| `efficientnet_b0_128_gender_priority_real_fairface_utkface` | FP32 | 500.8 img/s @ 8 threads | 1,374.3 img/s @ 28 threads | 2,013.7 img/s @ 28 threads | 2,513.0 img/s @ 28 threads |
| `efficientnet_b0_128_gender_priority_real_fairface_utkface` | Static INT8 | 373.7 img/s @ 8 threads | 985.7 img/s @ 28 threads | 1,295.1 img/s @ 28 threads | 1,509.3 img/s @ 28 threads |
| `efficientnet_b0_128_real_fairface_utkface` | FP32 | 515.7 img/s @ 8 threads | 1,433.8 img/s @ 16 threads | 1,973.2 img/s @ 28 threads | 2,549.7 img/s @ 56 threads |
| `efficientnet_b0_128_real_fairface_utkface` | Static INT8 | 389.3 img/s @ 8 threads | 832.4 img/s @ 16 threads | 1,326.9 img/s @ 28 threads | 1,533.6 img/s @ 28 threads |
| `resnet18_128_real_fairface_utkface` | FP32 | 936.7 img/s @ 16 threads | 1,760.1 img/s @ 28 threads | 2,284.2 img/s @ 112 threads | 3,129.4 img/s @ 56 threads |
| `resnet18_128_real_fairface_utkface` | Static INT8 | 1,156.1 img/s @ 28 threads | 3,323.3 img/s @ 28 threads | 4,084.8 img/s @ 28 threads | 4,163.2 img/s @ 28 threads |
| `convnext_tiny_128_real_fairface_utkface` | FP32 | 152.7 img/s @ 16 threads | 237.3 img/s @ 28 threads | 277.8 img/s @ 28 threads | 298.4 img/s @ 28 threads |
| `convnext_tiny_128_real_fairface_utkface` | Static INT8 | 128.7 img/s @ 16 threads | 195.2 img/s @ 28 threads | 231.3 img/s @ 28 threads | 228.3 img/s @ 28 threads |
| `mobilenetv3_large128_distill_gender_priority_efficientnet_v2_s_fairface_utkface` | FP32 | 747.8 img/s @ 8 threads | 2,218.3 img/s @ 8 threads | 3,787.6 img/s @ 28 threads | 4,376.9 img/s @ 28 threads |
| `mobilenetv3_large128_distill_gender_priority_efficientnet_v2_s_fairface_utkface` | Static INT8 | 578.4 img/s @ 8 threads | 1,102.1 img/s @ 16 threads | 1,366.0 img/s @ 16 threads | 1,505.9 img/s @ 8 threads |
| `mobilenetv3_large128_distill_gender_efficientnet_v2_s_fairface_utkface` | FP32 | 697.5 img/s @ 4 threads | 1,878.6 img/s @ 8 threads | 3,964.9 img/s @ 28 threads | 4,365.8 img/s @ 28 threads |
| `mobilenetv3_large128_distill_gender_efficientnet_v2_s_fairface_utkface` | Static INT8 | 611.5 img/s @ 28 threads | 1,444.1 img/s @ 8 threads | 1,353.3 img/s @ 8 threads | 1,489.7 img/s @ 16 threads |
| `mobilenetv3_large128_distill_efficientnet_v2_s_fairface_utkface` | FP32 | 737.6 img/s @ 4 threads | 1,941.7 img/s @ 16 threads | 3,359.0 img/s @ 16 threads | 4,555.4 img/s @ 28 threads |
| `mobilenetv3_large128_distill_efficientnet_v2_s_fairface_utkface` | Static INT8 | 610.6 img/s @ 2 threads | 1,038.1 img/s @ 8 threads | 1,364.7 img/s @ 16 threads | 1,515.1 img/s @ 16 threads |
| `mobilenetv3_large128_distill_light_efficientnet_v2_s_fairface_utkface` | FP32 | 770.3 img/s @ 8 threads | 2,517.4 img/s @ 16 threads | 3,955.7 img/s @ 16 threads | 4,500.8 img/s @ 28 threads |
| `mobilenetv3_large128_distill_light_efficientnet_v2_s_fairface_utkface` | Static INT8 | 705.1 img/s @ 4 threads | 1,380.8 img/s @ 16 threads | 1,624.0 img/s @ 28 threads | 1,468.2 img/s @ 16 threads |
| `mobilenetv3_real_fairface_utkface` | FP32 | 620.2 img/s @ 16 threads | 2,138.1 img/s @ 28 threads | 4,600.4 img/s @ 28 threads | 4,570.7 img/s @ 28 threads |
| `mobilenetv3_real_fairface_utkface` | Static INT8 | 577.7 img/s @ 8 threads | 1,086.9 img/s @ 8 threads | 1,358.4 img/s @ 8 threads | 1,463.2 img/s @ 16 threads |
| `mobilenetv3_large112_distill_gender_efficientnet_v2_s_fairface_utkface` | FP32 | 856.2 img/s @ 8 threads | 2,502.6 img/s @ 16 threads | 4,585.6 img/s @ 16 threads | 5,345.9 img/s @ 28 threads |
| `mobilenetv3_large112_distill_gender_efficientnet_v2_s_fairface_utkface` | Static INT8 | 766.7 img/s @ 28 threads | 1,572.5 img/s @ 28 threads | 1,919.5 img/s @ 28 threads | 1,839.8 img/s @ 28 threads |
| `mobilenetv3_large112_real_fairface_utkface` | FP32 | 598.2 img/s @ 8 threads | 2,050.4 img/s @ 8 threads | 3,989.5 img/s @ 16 threads | 5,418.1 img/s @ 56 threads |
| `mobilenetv3_large112_real_fairface_utkface` | Static INT8 | 844.3 img/s @ 8 threads | 1,715.2 img/s @ 8 threads | 2,172.9 img/s @ 8 threads | 1,883.1 img/s @ 8 threads |
| `mobilenetv3_large112_distill_efficientnet_v2_s_fairface_utkface` | FP32 | 823.5 img/s @ 4 threads | 2,672.7 img/s @ 16 threads | 4,487.6 img/s @ 16 threads | 5,342.3 img/s @ 28 threads |
| `mobilenetv3_large112_distill_efficientnet_v2_s_fairface_utkface` | Static INT8 | 794.7 img/s @ 16 threads | 1,314.1 img/s @ 16 threads | 1,608.7 img/s @ 8 threads | 1,778.7 img/s @ 16 threads |
| `mobilenetv3_small112_distill_efficientnet_b0_fairface_utkface` | FP32 | 1,460.2 img/s @ 4 threads | 3,326.9 img/s @ 4 threads | 9,130.1 img/s @ 16 threads | 11,386.4 img/s @ 28 threads |
| `mobilenetv3_small112_distill_efficientnet_b0_fairface_utkface` | Static INT8 | 1,408.0 img/s @ 4 threads | 2,811.0 img/s @ 16 threads | 3,615.8 img/s @ 16 threads | 3,483.2 img/s @ 16 threads |
| `mobilenetv3_small128_real_fairface_utkface` | FP32 | 1,258.2 img/s @ 8 threads | 3,554.0 img/s @ 8 threads | 8,392.6 img/s @ 28 threads | 10,320.6 img/s @ 28 threads |
| `mobilenetv3_small128_real_fairface_utkface` | Static INT8 | 1,274.2 img/s @ 8 threads | 2,442.0 img/s @ 8 threads | 2,453.3 img/s @ 28 threads | 2,767.3 img/s @ 28 threads |
| `mobilenetv3_small112_real_fairface_utkface` | FP32 | 1,468.3 img/s @ 4 threads | 3,461.0 img/s @ 4 threads | 11,273.4 img/s @ 16 threads | 14,483.4 img/s @ 16 threads |
| `mobilenetv3_small112_real_fairface_utkface` | Static INT8 | 1,323.6 img/s @ 28 threads | 2,347.9 img/s @ 28 threads | 3,431.4 img/s @ 28 threads | 3,118.0 img/s @ 8 threads |
| `mobilenetv3_small112_distill_efficientnet_v2_s_fairface_utkface` | FP32 | 1,367.3 img/s @ 8 threads | 3,607.2 img/s @ 8 threads | 11,321.9 img/s @ 16 threads | 12,153.4 img/s @ 28 threads |
| `mobilenetv3_small112_distill_efficientnet_v2_s_fairface_utkface` | Static INT8 | 1,310.1 img/s @ 2 threads | 2,408.9 img/s @ 28 threads | 2,900.3 img/s @ 16 threads | 3,325.8 img/s @ 16 threads |
| `mobilenetv3_small112_distill_gender_efficientnet_v2_s_fairface_utkface` | FP32 | 1,351.2 img/s @ 2 threads | 2,587.2 img/s @ 8 threads | 6,961.0 img/s @ 16 threads | 10,611.2 img/s @ 28 threads |
| `mobilenetv3_small112_distill_gender_efficientnet_v2_s_fairface_utkface` | Static INT8 | 1,327.2 img/s @ 28 threads | 2,364.5 img/s @ 28 threads | 3,223.9 img/s @ 28 threads | 3,239.5 img/s @ 16 threads |
| `mobilenetv3_small112_distill_large112_fairface_utkface` | FP32 | 1,407.2 img/s @ 4 threads | 3,321.3 img/s @ 4 threads | 8,434.1 img/s @ 16 threads | 12,005.3 img/s @ 28 threads |
| `mobilenetv3_small112_distill_large112_fairface_utkface` | Static INT8 | 1,399.7 img/s @ 8 threads | 2,719.1 img/s @ 8 threads | 3,934.3 img/s @ 8 threads | 3,040.7 img/s @ 16 threads |
| `mobilenetv3_small112_distill_light_large112_fairface_utkface` | FP32 | 1,297.2 img/s @ 1 thread | 2,668.3 img/s @ 8 threads | 7,212.9 img/s @ 16 threads | 11,308.5 img/s @ 28 threads |
| `mobilenetv3_small112_distill_light_large112_fairface_utkface` | Static INT8 | 1,368.6 img/s @ 16 threads | 2,803.4 img/s @ 16 threads | 4,097.9 img/s @ 16 threads | 3,145.1 img/s @ 8 threads |
| `mobilenetv3_small112_lagenda_real_fairface_utkface` | FP32 | 1,331.7 img/s @ 1 thread | 3,413.7 img/s @ 16 threads | 9,625.2 img/s @ 16 threads | 12,300.6 img/s @ 28 threads |
| `mobilenetv3_small112_lagenda_real_fairface_utkface` | Static INT8 | 1,315.2 img/s @ 28 threads | 2,539.5 img/s @ 4 threads | 2,816.6 img/s @ 8 threads | 3,271.9 img/s @ 8 threads |
| `mobilenetv3_small112_lagenda_facecrop_real_fairface_utkface` | FP32 | 1,290.2 img/s @ 1 thread | 2,898.1 img/s @ 8 threads | 7,727.2 img/s @ 28 threads | 12,675.4 img/s @ 28 threads |
| `mobilenetv3_small112_lagenda_facecrop_real_fairface_utkface` | Static INT8 | 1,379.9 img/s @ 16 threads | 2,690.8 img/s @ 16 threads | 3,032.9 img/s @ 28 threads | 3,191.3 img/s @ 16 threads |

Thread tuning changes the deployment recommendation:

- `MobileNetV3-Small 112 FP32` is the current CPU throughput winner for all measured batch sizes.
- The source-balanced IMDB gender-distilled `MobileNetV3-Large 128 FP32` run is the strongest completed MobileNetV3 accuracy candidate: FairFace `0.92877`, IMDB-clean `0.98548`, UTKFace `0.95017`, and tuned FP32 batch-128 throughput `4,477.7` img/s.
- The natural IMDB-expanded `MobileNetV3-Small 112 FP32` run keeps the same high-throughput deployment class and reaches `12,748.3` img/s at tuned batch 128, but it is not promoted because FairFace source-sliced validation regresses.
- The source-balanced IMDB-expanded `MobileNetV3-Small 112 FP32` run also stays in the high-throughput class and reaches `12,579.9` img/s at tuned batch 128, but it does not improve FairFace source robustness; FairFace gender balanced accuracy is `0.89950`.
- The IMDB-pretrained FairFace + UTKFace fine-tune reaches `13,050.6` img/s at tuned FP32 batch 128, but still does not restore FairFace source robustness; FairFace gender balanced accuracy is `0.90024`.
- The IMDB V2-S gender-distilled, source-balanced `MobileNetV3-Small 112 FP32` run is the strongest completed Small-family IMDB-inclusive gender candidate so far. It reaches FairFace `0.90562`, IMDB-clean `0.97542`, UTKFace `0.94101`, and tuned FP32 batch-128 throughput `10,837.8` img/s. It improves source robustness versus prior Small IMDB runs but does not beat the original Small112 throughput result.
- The IMDB-expanded `EfficientNetV2-S 128` source-balanced gender-priority run is the strongest mixed-manifest teacher/challenger so far at aggregate `0.98605`, but default FP32 batch-128 throughput is only `1,044.1` img/s and the FairFace slice `0.94386` does not beat the earlier public-data V2-S gender-priority FairFace slice `0.94586`.
- `EfficientNetV2-S 128 gender-priority` is the current public-validation accuracy winner and teacher candidate, but it is much slower than MobileNetV3-Small and MobileNetV3-Large on CPU.
- The full thread sweeps for `EfficientNetV2-S 128 gender-priority` and the IMDB-expanded `EfficientNetV2-S 128` source-balanced gender-priority run were intentionally skipped after default CPU benchmarks and model-card generation, because the regular V2-S run already has a same-architecture full sweep and these slow challengers are not CPU deployment defaults.
- `EfficientNet-B0 128 FP32` remains a useful smaller teacher/accuracy baseline, but it is no longer the top public-validation accuracy run. The gender-priority B0 variant is the best B0 gender result so far (`0.93910`), at the cost of age MAE and with essentially the same CPU throughput class.
- `ResNet18 128` lands between MobileNetV3-Large and EfficientNet-B0 on gender accuracy. Its INT8 throughput is better than EfficientNet-B0 but still far behind MobileNetV3-Small FP32 at high batch.
- `ConvNeXt-Tiny 128` is not a useful deployment or teacher default on the current data mix. It does not beat EfficientNetV2-S, EfficientNet-B0, or ResNet18 on gender accuracy, and its CPU throughput is far below every MobileNet/ResNet deployment candidate.
- `Swin-T 128` is not a useful deployment or teacher default on the current data mix. It lands at only `0.92206` gender balanced accuracy and is much slower than ConvNeXt-Tiny on CPU.
- `MobileNetV3-Large 128` with gender-priority EfficientNetV2-S distillation is the best completed MobileNetV3-Large gender-accuracy variant so far (`0.93376`), while age MAE lands at `5.61` and FP32 throughput remains Large-class.
- The earlier Large128 gender-only EfficientNetV2-S distillation run remains useful but is superseded for the gender-first target: it reaches `0.93230` gender balanced accuracy and `5.72` age MAE.
- The standard EfficientNetV2-S distillation run is the better balanced Large 128 distillation run so far: it reaches `0.93092` gender balanced accuracy and `5.39` age MAE, while the lower-weight variant lands at `0.92994`.
- The EfficientNetV2-S gender-priority teacher challenger is the best public-data gender run so far: it reaches `0.94703` evaluation gender balanced accuracy, improving over regular V2-S `0.94594`, while age MAE regresses from `4.87` to `5.28`.
- The natural IMDB-expanded MobileNetV3-Small run is not a clean default despite its mixed aggregate `0.96994`. It overfits toward the IMDB-clean celebrity domain: FairFace gender balanced accuracy is only `0.90004`, while IMDB-clean is `0.97854`.
- The source-balanced IMDB-expanded MobileNetV3-Small rerun is also not a clean default. Its checkpoint-selection validation used capped IMDB-clean rows, but final full-manifest evaluation still lands at FairFace `0.89950`, IMDB-clean `0.97347`, and UTKFace `0.93607`.
- The IMDB-pretrained FairFace + UTKFace fine-tune is also not a default. It tests whether IMDB initialization plus public-domain fine-tuning can recover the FairFace slice, but lands at FairFace `0.90024`, still below the original non-IMDB Small112 FairFace slice `0.90319`.
- `MobileNetV3-Large 128 FP32` remains the better balanced accuracy/CPU-throughput family than EfficientNet-B0.
- `MobileNetV3-Large 112` with EfficientNetV2-S gender-only distillation slightly improves Large112 gender balanced accuracy (`0.92895` versus `0.92828`) and default FP32 batch-128 throughput (`5,251.1` versus `5,139.9` img/s), but tuned FP32 batch-128 throughput remains effectively similar and it does not beat Large128 gender-priority accuracy.
- `MobileNetV3-Large 112` with standard EfficientNetV2-S distillation is not useful for the gender-first target. It improves age MAE to `5.46`, but drops gender balanced accuracy to `0.92687`.
- `MobileNetV3-Large 112 FP32` is not a clear default. It keeps most of the large accuracy and improves batch-128 throughput, but does not beat large-128 at batch 1, 8, or 32 in the tuned sweep.
- The EfficientNet-B0 teacher distillation run is the best MobileNetV3-Small accuracy variant so far, but the improvement is tiny and FP32 throughput trails the non-distilled small model after tuning.
- The EfficientNetV2-S teacher distillation run is not a default. Despite the stronger teacher, the MobileNetV3-Small student drops to `0.90711` gender balanced accuracy.
- The EfficientNetV2-S gender-only distillation run is also not a MobileNetV3-Small default. It lands at `0.90677`, below both the regular V2-S distillation run and the non-distilled Small112 baseline.
- The lower-weight EfficientNetV2-S distillation run for MobileNetV3-Large 128 is not useful; it lands at `0.92994`, below the standard-weight V2-S distillation run.
- `MobileNetV3-Small 128 FP32` does not justify replacing `MobileNetV3-Small 112 FP32`: it gains only about `0.00039` gender balanced accuracy and loses high-batch tuned throughput.
- The earlier MobileNetV3-Large teacher distillation runs are not defaults. They improve some INT8 measurements, but gender accuracy drops and FP32 throughput trails the non-distilled small model after tuning.
- Lagenda-HF requires bbox cropping. Without it, Lagenda validation collapses; with it, Lagenda becomes usable but still does not improve the primary mixed validation metric.
- Static INT8 is not the default path. It improves some low-latency cases but loses to FP32 for sustained throughput after thread tuning and additional variant tuning.

## Gender Disagreement Review

Use `scripts/compare-gender-models.sh` for a fixed comparison between the current converged candidates, public FairFace-ONNX, and MiVOLO. The default review set is FairFace validation, UTKFace validation, and a seed-stable IMDB-clean validation sample capped to the FairFace validation size.

The original 2026-07-31 public-FairFace review output is `outputs/analysis/gender-comparison-current`. The MiVOLO-inclusive review output is `outputs/analysis/gender-comparison-mivolo-current`. It compares:

- `our_large128_imdb_distill`
- `our_small112_imdb_distill`
- `teacher_v2s_imdb`
- `public_fairface_onnx`
- `mivolo_imdb_face`

On 24,333 selected validation rows, aggregate gender balanced accuracy is `0.96638` for `teacher_v2s_imdb`, `0.95618` for `our_large128_imdb_distill`, `0.94658` for `public_fairface_onnx`, `0.94461` for `mivolo_imdb_face`, and `0.94059` for `our_small112_imdb_distill`. The MiVOLO baseline is the official face-only IMDB-clean age+gender checkpoint, staged at `third_party/mivolo/weights/model_imdb_face_4.22_99.38.pth.tar`.

MiVOLO source-sliced gender balanced accuracy:

| Dataset | Gender Balanced Acc | Gender Acc |
| --- | ---: | ---: |
| FairFace | 0.89753 | 0.89858 |
| IMDB-clean | 0.99614 | 0.99607 |
| UTKFace | 0.92825 | 0.92701 |

Pairwise against the main CPU candidate, `our_large128_imdb_distill` and MiVOLO disagree on 1,532 rows. FastFace Large is correct by public labels on 901 of those rows, and MiVOLO is correct on 631. MiVOLO and public FairFace-ONNX disagree on 1,753 rows.

Important review files:

```text
outputs/analysis/gender-comparison-mivolo-current/summary.json
outputs/analysis/gender-comparison-mivolo-current/predictions.jsonl
outputs/analysis/gender-comparison-mivolo-current/gender_disagreements.csv
outputs/analysis/gender-comparison-mivolo-current/gender_disagreements_top.jpg
outputs/analysis/gender-comparison-mivolo-current/focused/public_vs_our_large.csv
outputs/analysis/gender-comparison-mivolo-current/focused/teacher_vs_our_large.csv
outputs/analysis/gender-comparison-mivolo-current/focused/mivolo_vs_our_large.csv
outputs/analysis/gender-comparison-mivolo-current/focused/mivolo_vs_public_fairface.csv
```

For manual labeling, run `scripts/build-manual-gender-review.sh` after the comparison. The default manual review now uses only `focused/public_vs_our_large.csv`, because rows where every model agrees are not useful for deciding whether FastFace or the public baseline is wrong. The current output is `outputs/analysis/manual-public-gender-review-current`, with `manual_gender_review.xlsx`, `manual_gender_review.csv`, `images/`, and `manual_gender_review_package.zip`. The workbook embeds one face-crop thumbnail per row, replaces `image_path` with `image`, adds explicit `our_large_gender` and `public_fairface_gender` columns, and leaves `manual_gender` blank for human labels. The current public-vs-our review has 1,301 rows.

## INT8 Variant Tuning

Additional static INT8 tuning was run on the current throughput candidate, `mobilenetv3_small112_real_fairface_utkface`, with 1,024 calibration samples and the same thread sweep as the main benchmark.

Best result per model and batch:

| Variant | Batch 1 | Batch 8 | Batch 32 | Batch 128 |
| --- | ---: | ---: | ---: | ---: |
| FP32 tuned baseline | 1,468.3 img/s @ 4 threads | 3,461.0 img/s @ 4 threads | 11,273.4 img/s @ 16 threads | 14,483.4 img/s @ 16 threads |
| Existing static INT8 QDQ U8/S8 per-channel | 1,323.6 img/s @ 28 threads | 2,347.9 img/s @ 28 threads | 3,431.4 img/s @ 28 threads | 3,118.0 img/s @ 8 threads |
| QDQ U8/S8 per-channel | 1,403.5 img/s @ 4 threads | 2,810.4 img/s @ 8 threads | 2,991.1 img/s @ 8 threads | 3,255.6 img/s @ 16 threads |
| QDQ U8/S8 tensor-wise | 1,279.5 img/s @ 8 threads | 2,498.0 img/s @ 4 threads | 3,004.9 img/s @ 28 threads | 3,301.3 img/s @ 8 threads |
| QOperator U8/S8 tensor-wise | 1,093.9 img/s @ 1 thread | 1,741.6 img/s @ 4 threads | 1,707.3 img/s @ 4 threads | 1,602.9 img/s @ 4 threads |
| QDQ S8/S8 per-channel | 762.3 img/s @ 1 thread | 1,051.0 img/s @ 1 thread | 1,179.8 img/s @ 4 threads | 1,244.5 img/s @ 4 threads |
| Preprocessed QDQ U8/S8 per-channel | 1,266.9 img/s @ 2 threads | 2,243.7 img/s @ 4 threads | 3,071.3 img/s @ 8 threads | 3,519.5 img/s @ 28 threads |
| Preprocessed QDQ U8/S8 tensor-wise | 1,308.4 img/s @ 16 threads | 2,443.7 img/s @ 4 threads | 2,883.6 img/s @ 8 threads | 3,476.6 img/s @ 8 threads |
| Preprocessed QOperator U8/S8 tensor-wise | 1,422.4 img/s @ 8 threads | 2,564.3 img/s @ 16 threads | 3,758.9 img/s @ 8 threads | 3,993.4 img/s @ 8 threads |
| Preprocessed QDQ S8/S8 per-channel | 402.8 img/s @ 4 threads | 677.1 img/s @ 28 threads | 834.2 img/s @ 16 threads | 920.7 img/s @ 16 threads |

QOperator per-channel failed in ONNX Runtime quantization for this graph with a per-channel weight broadcast error. Preprocessing improved the QOperator tensor-wise high-batch result, but it still reached only `3,993.4 img/s` at batch 128, far below the FP32 baseline. Keep `MobileNetV3-Small 112 FP32` as the CPU throughput default.

## Artifact Paths

```text
runs/mobilenetv3_real_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_large128_distill_efficientnet_v2_s_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_large128_distill_gender_efficientnet_v2_s_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_large128_distill_gender_priority_efficientnet_v2_s_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_large128_distill_light_efficientnet_v2_s_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_large112_real_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_large112_distill_gender_efficientnet_v2_s_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_large112_distill_efficientnet_v2_s_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_small112_real_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  int8-tuning/cpu-thread-sweep-summary.json
  int8-tuning-preprocessed/cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_small112_imdb_facecrop_real_fairface_utkface/
  best.pt
  last.pt
  config.resolved.yaml
  metrics.jsonl
  evaluation_val.json
  model_fp32.onnx
  model_int8_static.onnx
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_small112_imdb_source_balanced_facecrop_real_fairface_utkface/
  best.pt
  last.pt
  config.resolved.yaml
  metrics.jsonl
  evaluation_val.json
  model_fp32.onnx
  model_int8_static.onnx
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_small112_imdb_pretrain_finetune_fairface_utkface/
  best.pt
  last.pt
  config.resolved.yaml
  metrics.jsonl
  evaluation_val.json
  model_fp32.onnx
  model_int8_static.onnx
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/efficientnet_v2_s_128_imdb_source_balanced_gender_priority_real_fairface_utkface/
  best.pt
  last.pt
  config.resolved.yaml
  metrics.jsonl
  evaluation_val.json
  model_fp32.onnx
  model_int8_static.onnx
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  model_card.md

runs/mobilenetv3_small112_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface/
  best.pt
  last.pt
  config.resolved.yaml
  metrics.jsonl
  evaluation_val.json
  model_fp32.onnx
  model_int8_static.onnx
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_large128_imdb_source_balanced_distill_gender_priority_efficientnet_v2_s_imdb_fairface_utkface/
  best.pt
  last.pt
  config.resolved.yaml
  metrics.jsonl
  evaluation_val.json
  model_fp32.onnx
  model_int8_static.onnx
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_small112_distill_efficientnet_b0_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_small112_distill_efficientnet_v2_s_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_small112_distill_gender_efficientnet_v2_s_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_small128_real_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_small112_distill_large112_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_small112_distill_light_large112_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_small112_lagenda_real_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/mobilenetv3_small112_lagenda_facecrop_real_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/efficientnet_b0_128_real_fairface_utkface/
  best.pt
  last.pt
  config.resolved.yaml
  metrics.jsonl
  evaluation_val.json
  model_fp32.onnx
  model_int8_static.onnx
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/efficientnet_b0_128_gender_priority_real_fairface_utkface/
  best.pt
  last.pt
  config.resolved.yaml
  metrics.jsonl
  evaluation_val.json
  model_fp32.onnx
  model_int8_static.onnx
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/efficientnet_v2_s_128_gender_priority_real_fairface_utkface/
  best.pt
  last.pt
  config.resolved.yaml
  metrics.jsonl
  evaluation_val.json
  model_fp32.onnx
  model_int8_static.onnx
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  model_card.md

runs/efficientnet_v2_s_128_real_fairface_utkface/
  best.pt
  last.pt
  config.resolved.yaml
  metrics.jsonl
  evaluation_val.json
  model_fp32.onnx
  model_int8_static.onnx
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/resnet18_128_real_fairface_utkface/
  best.pt
  last.pt
  config.resolved.yaml
  metrics.jsonl
  evaluation_val.json
  model_fp32.onnx
  model_int8_static.onnx
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/convnext_tiny_128_real_fairface_utkface/
  best.pt
  last.pt
  config.resolved.yaml
  metrics.jsonl
  evaluation_val.json
  model_fp32.onnx
  model_int8_static.onnx
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  cpu-thread-sweep-summary.json
  model_card.md

runs/swin_t_128_real_fairface_utkface/
  best.pt
  model_fp32.onnx
  model_int8_static.onnx
  evaluation_val.json
  benchmark_fp32_cpu.json
  benchmark_int8_static_cpu.json
  model_card.md
```