Spaces:
Sleeping
Sleeping
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() | |