import gradio as gr import numpy as np from tensorflow.keras.models import load_model from PIL import Image # Load the trained model model = load_model('skin_model.h5') # Define a function to make predictions def predict(name, age, image): # Preprocess the image image = Image.fromarray(image) image = image.resize((150, 150)) image = np.array(image) / 255.0 image = np.expand_dims(image, axis=0) # Make a prediction using the model prediction = model.predict(image) # Get the predicted class label if prediction[0][0] < 0.5: label = 'Benign' else: label = 'Malignant' return f"Patient: {name}, Age: {age}, Prediction: {label}" # Define input and output components name_input = gr.inputs.Textbox(label="Patient's Name") age_input = gr.inputs.Textbox(label="Patient's Age") image_input = gr.inputs.Image(shape=(150, 150)) label_output = gr.outputs.Label() # Define a Gradio interface for user interaction iface = gr.Interface( fn=predict, inputs=[name_input, age_input, image_input], outputs=label_output, title="Skin Cancer Classification Chatbot", description="Predicts whether a skin image is cancerous or not based on patient's name, age, and lesion image.", theme="default", # Choose a theme: "default", "compact", "huggingface" layout="vertical", # Choose a layout: "vertical", "horizontal", "double" live=False # Set to True for live updates without clicking "Submit" ) iface.launch()