Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import tensorflow as tf | |
| import numpy as np | |
| from PIL import Image | |
| from tensorflow.keras.preprocessing.image import ImageDataGenerator | |
| # Load the trained model | |
| model = tf.keras.models.load_model("MobileNet_model.h5") # Ensure the model file is in the same directory | |
| # Define class names from your dataset | |
| class_names = ["Fake", "Low", "Medium", "High"] # Update based on test_generator.class_indices.keys() | |
| # Image Preprocessing | |
| img_size = (128, 128) # Same as used in test_generator | |
| def preprocess_image(image): | |
| image = image.resize(img_size) # Resize to (128,128) | |
| image = np.array(image) / 255.0 # Normalize as done in ImageDataGenerator (rescale=1./255) | |
| image = np.expand_dims(image, axis=0) # Add batch dimension | |
| return image | |
| # Prediction Function | |
| def predict(image): | |
| image = preprocess_image(image) | |
| predictions = model.predict(image) | |
| predicted_class = np.argmax(predictions, axis=1)[0] # Get the predicted class index | |
| confidence_scores = {class_names[i]: float(predictions[0][i]) for i in range(len(class_names))} # Get probability scores | |
| return {"Predicted Class": class_names[predicted_class], "Confidence Scores": confidence_scores} | |
| # Gradio Interface | |
| interface = gr.Interface( | |
| fn=predict, | |
| inputs=gr.Image(type="pil"), | |
| outputs=gr.JSON(), # Returns class and confidence scores | |
| title="Fire Severity Detection", | |
| description="Upload an image to classify it into one of four categories: Fake, Low, Medium, or High." | |
| ) | |
| if __name__ == "__main__": | |
| interface.launch(show_error=True) | |