Detect-fire-winner / README.md
MTerryJack's picture
subnet_bridge: copy winning miner repo into library
2ea5e3b verified
metadata
tags:
  - element_type:detect
  - model:onnxruntime
  - subnet:winner
  - object:fire
  - object:smoke
  - object:fire extinguisher
manako:
  source: winner_fetch
  manifest_element_name: manak0/Detect-fire
  winner_repo_id: meaculpitt/ScoreVision-Fire
  winner_revision: 71ae3d3e59ced8b330eea5e95710318175bb1342
  note: E=0.11785877 (map50=0.600000, size_mb=5.090839)

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