import gradio as gr import tensorflow as tf from PIL import Image import numpy as np # Laden des vortrainierten Pokémon-Modells model_path = "pokemon_classifier_model.h5" model = tf.keras.models.load_model(model_path) # Labels für den Pokémon Classifier labels = [ 'Balastoise','Charizard','Venusaur' ] def predict_pokemon(image): # Preprocess image image = Image.fromarray(image.astype('uint8')) # Convert numpy array to PIL image image = image.resize((299, 299)) image = np.array(image) image = np.expand_dims(image, axis=0) # same as image[None, ...] # Predict predictions = model.predict(image) prediction = np.argmax(predictions, axis=1)[0] confidence = np.max(predictions) # Vorbereiten der Ausgabe result = f"Predicted Pokémon: {labels[prediction]} with confidence: {confidence:.2f}" return result # Erstellen der Gradio-Oberfläche input_image = gr.Image() output_label = gr.Label() interface = gr.Interface(fn=predict_pokemon, inputs=input_image, outputs=output_label, examples=["Blastoise.jpg", "Charizard.png", "Venusaur.png"], title="Pokémon Classifier", description="Drag and drop an image or select an example below to predict the Pokémon.") # Interface starten interface.launch()