valanga commited on
Commit
31ffbac
·
verified ·
1 Parent(s): 54b55e3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -18
app.py CHANGED
@@ -1,27 +1,52 @@
 
 
1
  import gradio as gr
2
- from fastai.vision.all import *
3
- from huggingface_hub import from_pretrained_fastai
4
 
 
 
5
 
6
- learn = from_pretrained_fastai("valanga/CvsM")
7
- labels = learn.dls.vocab
 
 
 
8
 
 
 
 
 
 
9
 
10
- def predict(img):
11
- img = PILImage.create(img)
12
- pred, pred_idx, probs = learn.predict(img)
13
- return {labels[i]: float(probs[i]) for i in range(len(labels))}
 
 
 
 
 
 
 
 
 
 
 
14
 
 
 
 
 
 
 
 
15
 
16
- title = "chihuahua vs muffin predictor"
17
- description = "A bad model that tries to identify chihuahua from muffin."
18
- examples = ['chihuahua', 'muffin']
19
-
20
  gr.Interface(
21
- fn=predict,
22
- inputs=gr.Image(),
23
- outputs=gr.Label(num_top_classes=2),
24
- title=title,
25
- description=description,
26
- examples=examples,
27
  ).launch()
 
1
+ from PIL import Image
2
+ import numpy as np
3
  import gradio as gr
4
+ from tensorflow.keras.models import load_model
 
5
 
6
+ # Carica il modello salvato in formato Keras .h5
7
+ model = load_model('mio_modello.h5')
8
 
9
+ # Preprocessare l'immagine
10
+ def preprocess_image(image):
11
+ image = Image.fromarray(image) # Assumendo che 'image' sia un array numpy
12
+ image = image.resize((64, 64)) # Ridimensionare l'immagine a 64x64
13
+ image_array = np.array(image) / 255.0 # Normalizzare i pixel (da 0 a 1)
14
 
15
+ # Verificare la forma dell'immagine preprocessata
16
+ print(f"Image shape after resizing and normalization: {image_array.shape}")
17
+
18
+ image_array = np.expand_dims(image_array, axis=0) # Aggiungi una dimensione batch
19
+ return image_array
20
 
21
+ # Classificazione: Definire una funzione per fare la predizione con le percentuali di confidenza
22
+ def classify_image(image):
23
+ image_array = preprocess_image(image)
24
+
25
+ # Fare la predizione e prendere la prima riga dei risultati
26
+ prediction = model.predict(image_array)[0]
27
+
28
+ # Aggiungi un print per vedere le predizioni grezze
29
+ print(f"Raw model predictions: {prediction}")
30
+
31
+ # Verificare che i valori di prediction siano distribuiti correttamente
32
+ predicted_class_idx = np.argmax(prediction) # Indice della classe con il punteggio più alto
33
+
34
+ # Classi (Chihuahua o Muffin)
35
+ class_labels = ['Chihuahua', 'Muffin']
36
 
37
+ # Verificare quale classe è predetta con il suo punteggio
38
+ print(f"Predicted class: {class_labels[predicted_class_idx]} with confidence {prediction[predicted_class_idx]}")
39
+
40
+ # Creare un dizionario con le percentuali di confidenza
41
+ confidence_scores = {class_labels[i]: float(prediction[i]) for i in range(len(class_labels))}
42
+
43
+ return confidence_scores # Restituire le percentuali per ciascuna classe
44
 
45
+ # Definire l'interfaccia di Gradio
 
 
 
46
  gr.Interface(
47
+ fn=classify_image, # Funzione di classificazione
48
+ inputs=gr.Image(type="numpy"), # Input: immagine in formato numpy
49
+ outputs=gr.Label(num_top_classes=2), # Output: label con le percentuali per le due classi
50
+ title="Chihuahua vs Muffin Classifier",
51
+ description="Carica un'immagine e scopri se è un Chihuahua o un Muffin, con percentuali di confidenza!"
 
52
  ).launch()