v2 fire weights (yolo26n 960 e2e, 3 classes validator-aligned, synth+sim+dfire+z5atr 25k merged, synth val mAP50=0.6395)
71ae3d3 verified | # ScoreVision-Fire — meaculpitt v2.1 | |
| SN44 fire-detection miner for the `manak0/Detect-fire` element. | |
| ## Pipeline | |
| - **Architecture**: yolo26n | |
| - **Resolution**: 1408×768 input → letterbox → 960×960 | |
| - **Preprocessing**: `cv2.dnn.blobFromImage` (fused C++ resize+normalize+transpose) | |
| - **Inference**: single-pass FP16 ONNX, NMS baked in | |
| - **Output shape**: `[1, 300, 6]` (xyxy, conf, cls) | |
| - **Latency**: ~35 ms p95 on RTX 4090 (fits the 50 ms gate) | |
| ## Classes (validator GT order, NOT the published class_names.txt order) | |
| - 0: fire | |
| - 1: smoke | |
| - 2: fire extinguisher | |
| Verified by audit of alfred8995/fire001 (scores 1.00) and navierstocks/fire | |
| (scores 0.96): both use [fire, smoke, fire_extinguisher] and the validator's | |
| GT order matches. Our model was trained with [fire, fire_ext, smoke]; miner.py | |
| applies cls_remap=[0,2,1] to translate model output to validator index. | |
| ## Training | |
| - 22,796 training images (validator-synth + Simuletic + D-Fire + z5atr, SHA1 deduped) | |
| - 2,532 validation images (random 90/10 split, seed=42) | |
| - 100 epochs, yolo26n, imgsz=960, batch=8, AdamW lr0=0.001 cos_lr | |
| - CCTV augmentation chain (cctv_aug_patch) | |
| ## Benchmarks | |
| - Broader merged val mAP50: 0.785 | |
| - Validator-distribution synth val mAP50: 0.640 (+24.7 pts above 0.393 baseline) | |
| - Per-class on synth val: fire=0.523, fire_extinguisher=0.647, smoke=0.749 | |