Shikamaru17 commited on
Commit
a4b3252
·
verified ·
1 Parent(s): bc9072e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -28
app.py CHANGED
@@ -3,40 +3,38 @@ import tensorflow as tf
3
  import numpy as np
4
  from PIL import Image
5
 
6
- # Pfad zum gespeicherten Modell
 
7
  model_path = "Pokemon_transferlearning.keras"
8
  model = tf.keras.models.load_model(model_path)
9
 
10
- # Definieren der Klassennamen
11
- labels = ['Abra', 'Blastoise', 'Zubat']
12
-
13
- # Funktion zur Klassifizierung
14
- def classify_pokemon(image):
15
- if image is None:
16
- return {"Error": "No image uploaded"}
17
-
18
- # Bildvorverarbeitung
19
- image = Image.fromarray(image).resize((150, 150))
20
- image = np.array(image) / 255.0
21
- image = np.expand_dims(image, axis=0)
22
 
23
- # Vorhersage
24
  prediction = model.predict(image)
25
- predicted_class = np.argmax(prediction[0])
26
- confidence = np.max(prediction[0])
27
 
28
- # Konfidenzwerte
29
- confidences = {labels[i]: np.round(float(prediction[0][i]), 2) for i in range(len(labels))}
30
 
31
- return confidences, f"Predicted: {labels[predicted_class]}, Confidence: {confidence:.2f}"
 
 
 
 
32
 
33
- # Erstellen einer Gradio-Schnittstelle
 
34
  iface = gr.Interface(
35
- fn=classify_pokemon,
36
- inputs=gr.Image(),
37
- outputs=["label", "text"],
38
- live=True
39
- )
40
-
41
- # Starten der Schnittstelle
42
- iface.launch()
 
3
  import numpy as np
4
  from PIL import Image
5
 
6
+ #!pip install tensorflow tensorflow-datasets gradio pillow matplotlib
7
+
8
  model_path = "Pokemon_transferlearning.keras"
9
  model = tf.keras.models.load_model(model_path)
10
 
11
+ # Define the core prediction function
12
+ def predict_pokemon(image):
13
+ # Preprocess image
14
+ image = Image.fromarray(image.astype('uint8')) # Convert numpy array to PIL image
15
+ image = image.resize((150, 150)) # Resize the image to 150x150
16
+ image = np.array(image)
17
+ image = np.expand_dims(image, axis=0) # Add batch dimension
 
 
 
 
 
18
 
19
+ # Predict
20
  prediction = model.predict(image)
 
 
21
 
22
+ # Apply softmax to get probabilities for each class
23
+ probabilities = tf.nn.softmax(prediction)
24
 
25
+ # Map probabilities to Pokemon classes
26
+ pokemon_classes = ['Abra', 'Blastoise', 'Zubat']
27
+ probabilities_dict = {pokemon_class: round(float(probability), 2) for pokemon_class, probability in zip(pokemon_classes, probabilities[0])}
28
+
29
+ return probabilities_dict
30
 
31
+ # Create the Gradio interface
32
+ input_image = gr.Image()
33
  iface = gr.Interface(
34
+ fn=predict_pokemon,
35
+ inputs=input_image,
36
+ outputs=gr.Label(),
37
+ live=True,
38
+ examples=["images/01.jpg", "images/02.jpg", "images/03.jpg", "images/04.jpg", "images/05.jpg", "images/06.jpg"],
39
+ description="A simple mlp classification model for image classification using the mnist dataset.")
40
+ iface.launch()