|
|
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() |
|
|
|