Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import numpy as np | |
| from tensorflow.keras.models import load_model | |
| from tensorflow.keras.preprocessing.image import img_to_array | |
| from PIL import Image | |
| model = load_model("scalp_mobilenetv2_model.h5") | |
| # Update class labels based on your training class_indices | |
| class_labels = ['dry', 'healthy', 'oily'] # <-- Double-check this order | |
| def preprocess_image(image): | |
| image = image.resize((128, 128)) | |
| image = img_to_array(image) / 255.0 | |
| image = np.expand_dims(image, axis=0) | |
| return image | |
| def predict_scalp(image): | |
| processed_image = preprocess_image(image) | |
| prediction = model.predict(processed_image) | |
| print("Raw prediction:", prediction[0]) # <-- Debug | |
| class_index = np.argmax(prediction[0]) | |
| confidence = float(np.max(prediction[0])) | |
| return {class_labels[class_index]: confidence} | |
| interface = gr.Interface( | |
| fn=predict_scalp, | |
| inputs=gr.Image(type="pil"), | |
| outputs=gr.Label(num_top_classes=3), | |
| title="Scalp Condition Classifier", | |
| description="Upload a scalp image (128x128+). Model predicts dry, healthy, or oily." | |
| ) | |
| if __name__ == "__main__": | |
| interface.launch() | |