File size: 2,204 Bytes
d92d4c0 31ffbac f292242 31ffbac f292242 31ffbac 3ff88ec f292242 60386d3 31ffbac 60386d3 efcf4de 60386d3 efcf4de 31ffbac f292242 60386d3 31ffbac efcf4de 31ffbac efcf4de 60386d3 31ffbac 60386d3 31ffbac 60386d3 efcf4de 31ffbac 60386d3 31ffbac 60386d3 31ffbac f38c6aa f292242 60386d3 f292242 31ffbac 60386d3 31ffbac 8d7001b efcf4de |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
from PIL import Image
import numpy as np
import gradio as gr
from tensorflow.keras.models import load_model
# Carica il modello salvato in formato Keras .h5
model = load_model('mio_modello.h5')
# Preprocessare l'immagine in modo consistente con l'addestramento
def preprocess_image(image):
# Convertire l'immagine in formato PIL se non lo è già
image = Image.fromarray(image)
# Converti in RGB per evitare problemi di canali
image = image.convert("RGB")
# Ridimensiona l'immagine
image = image.resize((64, 64))
# Converti l'immagine in array NumPy e normalizza
image_array = np.array(image) / 255.0 # Normalizza i pixel tra 0 e 1
# Aggiungi una dimensione batch
image_array = np.expand_dims(image_array, axis=0) # (1, 64, 64, 3)
return image_array
# Funzione di classificazione con stampa delle predizioni
def classify_image(image):
# Preprocessare l'immagine
image_array = preprocess_image(image)
# Fare la predizione
prediction = model.predict(image_array)[0] # Prendi la prima riga della predizione
# Verificare le predizioni grezze
print(f"Raw model predictions: {prediction}")
# Trova l'indice della classe con il punteggio più alto
predicted_class_idx = np.argmax(prediction)
# Classi (Chihuahua o Muffin)
class_labels = ['Chihuahua', 'Muffin']
# Stampa per verificare la classe e la confidenza
print(f"Predicted class: {class_labels[predicted_class_idx]} with confidence {prediction[predicted_class_idx]}")
# Restituisci le percentuali di confidenza per ciascuna classe
confidence_scores = {class_labels[i]: float(prediction[i]) for i in range(len(class_labels))}
return class_labels[predicted_class_idx]
# Interfaccia di Gradio
gr.Interface(
fn=classify_image, # Funzione di classificazione
inputs=gr.Image(type="numpy"), # Input: immagine in formato numpy
outputs=gr.Label(num_top_classes=2), # Output: label con percentuali per le due classi
title="Chihuahua vs Muffin Classifier",
description="Carica un'immagine e scopri se è un Chihuahua o un Muffin, con percentuali di confidenza!"
).launch()
|