# Import dependencies from keras.models import load_model from PIL import Image, ImageOps import numpy as np import gradio as gr # Definition of the main function for predictions def predict_nevus(image): # Load the model model = load_model('keras_model.h5') # Create the array of the right shape to feed into the keras model # The 'length' or number of images you can put into the array is # determined by the first position in the shape tuple, in this case 1. data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32) #turn the image into a numpy array image_array = np.asarray(image) # Normalize the image normalized_image_array = (image_array.astype(np.float32) / 127.0) - 1 # Load the image into the array data[0] = normalized_image_array # run the inference prediction = model.predict(data) return { 'Melanoma': float(prediction[0][0]), 'Lunar': float(prediction[0][1]) } # Deploy with Gradio examples=[ ['2.jpg'], ['37.jpg'], ['186.jpg'] ] iface = gr.Interface( fn=predict_nevus, inputs=gr.inputs.Image(shape=(224, 224)), outputs="label", title="Detector de melanomas", description="Herramienta online que utiliza inteligencia artificial para detectar posibles melanomas en fotografías de lunares.", examples=examples, allow_flagging='never', theme="peach" ) iface.launch(debug=True)