|
|
|
|
|
import gradio as gr |
|
import cv2 |
|
import numpy as np |
|
from ultralytics import YOLO |
|
|
|
model = YOLO("best.pt") |
|
|
|
def detect_fire_smoke_from_image(image): |
|
results = model(image) |
|
flame_score = 0.0 |
|
smoke_score = 0.0 |
|
person_detected = 0 |
|
|
|
for result in results: |
|
for box in result.boxes: |
|
label = result.names[int(box.cls)] |
|
conf = float(box.conf) |
|
|
|
if "fire" in label.lower(): |
|
flame_score = max(flame_score, conf) |
|
elif "smoke" in label.lower(): |
|
smoke_score = max(smoke_score, conf) |
|
elif "person" in label.lower(): |
|
person_detected = 1 |
|
|
|
return { |
|
"cv_flame_score": round(flame_score, 3), |
|
"cv_smoke_score": round(smoke_score, 3), |
|
"person_detected": person_detected |
|
} |
|
|
|
iface = gr.Interface( |
|
fn=detect_fire_smoke_from_image, |
|
inputs=gr.Image(type="numpy"), |
|
outputs="json", |
|
title="Vison Model for Fire, Smoke, and Person Detection", |
|
description="Upload or stream an image from video feed for real-time detection." |
|
) |
|
if __name__ == "__main__": |
|
iface.launch(inline=False) |
|
|