import gradio as gr from PIL import Image import numpy as np from tensorflow.keras.preprocessing import image as keras_image from tensorflow.keras.applications.inception_v3 import preprocess_input from tensorflow.keras.models import load_model # Lade dein trainiertes Modell model = load_model('/home/user/app/inceptionv3.h5') # Stelle sicher, dass dieser Pfad korrekt ist def predict_character(img): img = Image.fromarray(img.astype('uint8'), 'RGB') # Stelle sicher, dass das Bild im RGB-Format vorliegt img = img.resize((299, 299)) # Größe des Bildes anpassen für InceptionV3 img_array = keras_image.img_to_array(img) # Bild in ein Array umwandeln img_array = np.expand_dims(img_array, axis=0) # Dimensionen erweitern, um dem Model-Input zu entsprechen img_array = preprocess_input(img_array) # Input für InceptionV3 vorverarbeiten prediction = model.predict(img_array) # Vorhersage mit dem Modell classes = ['bishop', 'knight', 'rook'] # Spezifische Charakter-Namen return {classes[i]: float(prediction[0][i]) for i in range(3)} # Vorhersage zurückgeben # Definiere das Gradio-Interface interface = gr.Interface(fn=predict_character, inputs="image", # Vereinfachter Eingabetyp outputs="label", # Vereinfachter Ausgabetyp title="Chess Piece Classifier", description="Upload an image of a chess piece to classify it as a bishop, knight, or rook.") # Starte das Interface interface.launch()