| import numpy as np
|
| import gradio as gr
|
| import tensorflow as tf
|
| from tensorflow.keras.models import load_model
|
| from tensorflow.keras.applications.efficientnet import preprocess_input
|
| from tensorflow.keras.preprocessing import image
|
|
|
|
|
| model = load_model("best_model_finetuned.h5")
|
|
|
| CLASS_NAMES = ['fire_disaster', 'land_disaster', 'not_disaster', 'water_disaster']
|
|
|
| def predict(img):
|
| img = img.resize((224, 224))
|
| img_array = np.array(img)
|
| img_array = np.expand_dims(img_array, axis=0)
|
| img_array = preprocess_input(img_array)
|
|
|
| prediction = model.predict(img_array)
|
| predicted_index = np.argmax(prediction)
|
| confidence = float(np.max(prediction))
|
|
|
| return {
|
| CLASS_NAMES[i]: float(prediction[0][i])
|
| for i in range(len(CLASS_NAMES))
|
| }
|
|
|
| interface = gr.Interface(
|
| fn=predict,
|
| inputs=gr.Image(type="pil"),
|
| outputs=gr.Label(),
|
| title="Disaster Classification CNN",
|
| description="Upload an image to classify disaster type"
|
| )
|
|
|
| interface.launch() |