| import gradio as gr |
| import tensorflow as tf |
| from PIL import Image |
| import numpy as np |
|
|
| |
| model_path = "sentinel_classification_model.keras" |
| model = tf.keras.models.load_model(model_path) |
|
|
| |
| labels = ['AnnualCrop', 'Forest', 'HerbaceousVegetation', 'Highway', 'Industrial', 'Pasture', 'PermanentCrop', 'Residential', 'River', 'SeaLake'] |
|
|
| def predict_image(image): |
| image = Image.fromarray(image.astype('uint8'), 'RGB') |
| image = image.resize((64, 64)) |
| image = np.array(image) |
|
|
| prediction = model.predict(np.expand_dims(image, axis=0)) |
| confidences = {labels[i]: float(prediction[0][i]) for i in range(len(labels))} |
| return confidences |
|
|
| |
| iface = gr.Interface( |
| fn=predict_image, |
| inputs=gr.Image(), |
| outputs=gr.Label(num_top_classes=10), |
| title="Sentinel Image Classifier", |
| description="Upload a satellite image and the classifier will predict the type of land cover or feature.", |
| examples = ["images/annualcrop.jpg", "images/forest.jpg", "images/herbaceousvegetation.jpg", "images/highway.jpg", "images/industrial.jpg", "images/pasture.jpg", "images/permanentcrop.jpg", "images/residential.jpg", "images/river.jpg", "images/sealake.jpg"] |
|
|
| ) |
|
|
| iface.launch() |
|
|