|
from PIL import Image |
|
import numpy as np |
|
import gradio as gr |
|
from tensorflow.keras.models import load_model |
|
|
|
model = load_model('mio_modello.h5') |
|
|
|
|
|
def preprocess_image(image): |
|
|
|
image = Image.fromarray(image) |
|
image = image.convert("RGB") |
|
image = image.resize((64, 64)) |
|
image_array = np.array(image) / 255.0 |
|
|
|
image_array = np.expand_dims(image_array, axis=0) |
|
|
|
return image_array |
|
|
|
def classify_image(image): |
|
image_array = preprocess_image(image) |
|
|
|
prediction = model.predict(image_array)[0] |
|
|
|
print(f"Raw model predictions: {prediction}") |
|
|
|
predicted_class_idx = np.argmax(prediction) |
|
|
|
class_labels = ['Chihuahua', 'Muffin'] |
|
|
|
print(f"Predicted class: {class_labels[predicted_class_idx]} with confidence {prediction[predicted_class_idx]}") |
|
|
|
confidence_scores = {class_labels[i]: float(prediction[i]) for i in range(len(class_labels))} |
|
|
|
return confidence_scores |
|
|
|
examples = ['chihuahua1.jpg', 'chihuahua2.jpg', 'chihuahua3.jpg', 'muffin1.jpg', 'muffin2.jpg'] |
|
|
|
|
|
gr.Interface( |
|
fn=classify_image, |
|
inputs=gr.Image(type="numpy"), |
|
outputs=gr.Label(num_top_classes=2), |
|
examples=examples, |
|
title="Chihuahua vs Muffin Classifier", |
|
description="don't know if you should cuddle it or eat it? find out uploading a picture. PS: no muffin and no chihuahua got hurt in this project" |
|
).launch() |
|
|
|
|