| |
| |
| |
| |
| |
| |
|
|
| ablations: |
| |
| sample_redistribution: |
| description: "Impact of large-scale crops on small face detection" |
| experiments: |
| - name: "baseline_crops" |
| data.crop_scales: [0.3, 0.45, 0.6, 0.8, 1.0] |
| note: "Standard crops only (no SR)" |
| - name: "extended_crops" |
| data.crop_scales: [0.3, 0.45, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0] |
| note: "Full Sample Redistribution (SCRFD default)" |
| - name: "extreme_crops" |
| data.crop_scales: [0.3, 0.6, 1.0, 1.5, 2.0, 2.5, 3.0] |
| note: "Even larger crops — test limits" |
|
|
| |
| loss_functions: |
| description: "GFL vs Focal Loss for classification" |
| experiments: |
| - name: "gfl_diou" |
| model.losses.cls: gfl |
| model.losses.reg: diou |
| note: "SCRFD default" |
| - name: "focal_diou" |
| model.losses.cls: focal |
| model.losses.reg: diou |
| note: "Standard focal loss" |
| - name: "gfl_smoothl1" |
| model.losses.cls: gfl |
| model.losses.reg: smooth_l1 |
| note: "GFL + Smooth L1 regression" |
|
|
| |
| matching: |
| description: "ATSS vs fixed IoU threshold matching" |
| experiments: |
| - name: "atss_k9" |
| model.matching.type: atss |
| model.matching.topk: 9 |
| note: "ATSS with k=9 (SCRFD default)" |
| - name: "atss_k5" |
| model.matching.type: atss |
| model.matching.topk: 5 |
| note: "ATSS with smaller k" |
| - name: "iou_035" |
| model.matching.type: iou |
| model.matching.pos_iou: 0.35 |
| model.matching.neg_iou: 0.3 |
| note: "Fixed IoU (TinaFace-style lower threshold)" |
| - name: "iou_050" |
| model.matching.type: iou |
| model.matching.pos_iou: 0.5 |
| model.matching.neg_iou: 0.4 |
| note: "Standard IoU threshold" |
|
|
| |
| robustness: |
| description: "Impact of blur/compression/lighting augmentations" |
| experiments: |
| - name: "no_robustness" |
| data.robustness_augmentation: false |
| note: "Standard aug only" |
| - name: "blur_only" |
| data.robustness_augmentation: true |
| data.robustness_blur_prob: 0.3 |
| data.robustness_jpeg_prob: 0.0 |
| data.robustness_lowlight_prob: 0.0 |
| note: "Blur augmentation only" |
| - name: "compression_only" |
| data.robustness_augmentation: true |
| data.robustness_blur_prob: 0.0 |
| data.robustness_jpeg_prob: 0.3 |
| data.robustness_lowlight_prob: 0.0 |
| note: "JPEG compression only" |
| - name: "full_robustness" |
| data.robustness_augmentation: true |
| note: "All robustness augmentations" |
|
|
| |
| normalization: |
| description: "GN vs BN (TinaFace found GN better at small batch sizes)" |
| experiments: |
| - name: "group_norm" |
| model.neck.use_gn: true |
| model.head.use_gn: true |
| note: "GroupNorm (SCRFD/TinaFace default)" |
| - name: "batch_norm" |
| model.neck.use_gn: false |
| model.head.use_gn: false |
| note: "Standard BatchNorm" |
|
|
| |
| input_resolution: |
| description: "Trade-off between resolution and speed for tiny faces" |
| experiments: |
| - name: "res_320" |
| data.input_size: 320 |
| inference.input_size: 320 |
| - name: "res_480" |
| data.input_size: 480 |
| inference.input_size: 480 |
| - name: "res_640" |
| data.input_size: 640 |
| inference.input_size: 640 |
| - name: "res_960" |
| data.input_size: 960 |
| inference.input_size: 960 |
| note: "Higher res for tiny faces (+5-10% Hard AP, ~4x slower)" |
|
|
| |
| landmarks: |
| description: "RetinaFace finding: auxiliary landmark loss improves detection" |
| experiments: |
| - name: "no_landmarks" |
| model.head.use_landmarks: false |
| - name: "with_landmarks" |
| model.head.use_landmarks: true |
| model.losses.lmk_weight: 0.1 |
| note: "Requires RetinaFace landmark annotations" |
|
|
| |
| tracking: |
| description: "ByteTrack hyperparameter sensitivity" |
| experiments: |
| - name: "no_tracking" |
| engine.use_tracking: false |
| - name: "conservative" |
| engine.tracker.high_thresh: 0.6 |
| engine.tracker.low_thresh: 0.2 |
| engine.tracker.max_lost: 15 |
| - name: "aggressive" |
| engine.tracker.high_thresh: 0.3 |
| engine.tracker.low_thresh: 0.05 |
| engine.tracker.max_lost: 60 |
| note: "More tracks, more false positives" |
|
|