EmberDeepAI / app.py
AbdullahImran's picture
Upload app.py
3b79a29 verified
raw
history blame
1.48 kB
import gradio as gr
import tensorflow as tf
from PIL import Image
import numpy as np
# Load models
vgg16_model = tf.keras.models.load_model(
"/content/drive/MyDrive/Deep Learning Project/vgg16_best_model.keras"
)
xception_model = tf.keras.models.load_model(
"/content/drive/MyDrive/Deep Learning Project/Tri Classification/xception_best.keras"
)
def predict_fire(image):
img = Image.fromarray(image).convert("RGB")
img = img.resize((224, 224)) # Match model input size
img_array = np.array(img) / 255.0
img_array = np.expand_dims(img_array, axis=0)
fire_pred = vgg16_model.predict(img_array)
fire_status = "Fire Detected" if fire_pred[0][0] > 0.5 else "No Fire Detected"
if fire_status == "Fire Detected":
severity_pred = xception_model.predict(img_array)
severity_level = np.argmax(severity_pred[0])
severity = ["Mild", "Moderate", "Severe"][severity_level]
else:
severity = "N/A"
return fire_status, severity
# Gradio interface
interface = gr.Interface(
fn=predict_fire,
inputs=gr.Image(type="numpy", label="Upload Image"),
outputs=[
gr.Textbox(label="Fire Status"),
gr.Textbox(label="Severity Level"),
],
title="Fire Prediction and Severity Classification",
description="Upload an image to predict fire and its severity level (Mild, Moderate, Severe).",
)
if __name__ == "__main__":
interface.launch()