innomium/fire-detection
<div align="center">
<img src="innomium_icon.svg" width="88" alt="Innomium logo" />
Innomium Ember
Ultra-light YOLO fire, smoke, and extinguisher detection for safety monitoring and edge vision.
90% accuracy · 3 classes · 9.8 MB ONNX · Runs in browser & on edge
  
</div>
Overview
Innomium Ember is a cutting-edge YOLO-based fire hazard detector — very light, very strong, and built for real-world safety scenes.
Detect fire, smoke, and fire extinguisher with a compact ~9.8 MB ONNX model that runs on CPU, edge hardware, or directly in the browser.
Performance
Ember classifies fire hazards in outdoor and industrial scenes with per-class bounding boxes and confidence scores.
<div align="center">
</div>
What this demonstrates:
- All three hazard classes in one scene: fire, smoke, and fire extinguisher
- Per-class NMS without cross-class suppression
- Flame detections up to 77% alongside smoke (36%) and extinguisher (31%)
- Suitable for outdoor events, safety drills, warehouses, and industrial sites
Key Features
- Multi-class YOLO — Fire, smoke, and fire extinguisher with class ID remapping from the ONNX head.
- Per-class NMS — Hard NMS applied independently per class to preserve overlapping hazard types.
- Smoke merge — Fragmented smoke boxes merge into coherent plumes for cleaner alerts.
- Color-prior filters — Borderline fire and extinguisher detections are validated against expected pixel appearance.
- Privacy-first demo — The live Space runs inference entirely in your browser. No frames are uploaded.
Use Cases
Live Demo
Try Ember directly in your browser:
[https://huggingface.co/spaces/innomium/fire-detection](https://huggingface.co/spaces/innomium/fire-detection)
- Open the Space
- Upload an image or click Load Example
- View detections with class labels and confidence scores
Repository Structure
├── index.html # Marketing site + interactive demo
├── main.js / detector.js # Browser inference (ONNX Runtime Web)
├── weights.onnx # ONNX model weights (Git LFS)
├── app.py # Python FireDetector for batch / server use
├── example_input.png # Sample input frame
├── example_output.png # Sample detection output
└── innomium_icon.svg # Innomium logoLocal Python Usage
pip install -r requirements.txtfrom pathlib import Path
import cv2
from app import FireDetector
detector = FireDetector(Path("."))
image = cv2.imread("example_input.png")
boxes = detector.predict_image(image)
for box in boxes:
print(detector.class_names[box.cls_id], box.conf)Batch inference
results = detector.predict_batch([image], offset=0, n_keypoints=0)
for frame in results:
print(frame.frame_id, len(frame.boxes))Model Pipeline
- Letterbox preprocess — Resize and pad to model input (640×640)
- ONNX inference — YOLO multi-class fire hazard detection
- Class remap — Map model head order to
[fire, smoke, fire extinguisher] - Per-class NMS — Independent hard NMS per hazard class
- Smoke merge & fire suppress — Merge fragmented smoke; suppress nested fire duplicates
- Color filters — Validate borderline fire/extinguisher boxes against pixel appearance
About Innomium
Innomium builds cutting-edge computer vision models for mission-critical environments — where accuracy, latency, and deployability all matter.
Very light. Very strong. Built for safety.
License
Apache 2.0
