SkinAnalysis / app.py
harshadsalunkhe1212's picture
Update app.py
1a4ab53 verified
Raw
History Blame Contribute Delete
1.99 kB
import tensorflow as tf
import numpy as np
import gradio as gr
from tensorflow.keras.applications.efficientnet import preprocess_input
from tensorflow.keras.preprocessing import image as keras_image
# Load models
modelfor_skin = tf.keras.models.load_model("skin_type_model.keras")
modelfor_disease = tf.keras.models.load_model("skin_disease_model.keras")
# Class names
Skin_typeclass_names = ['Dry', 'Normal', 'Oily']
disease_class_names = ['Acne', 'Blackheads', 'Dark Spots', 'Wrinkles', 'Skin Redness', 'pores', 'Eye Bags']
# Prediction function
def predict_all(img):
img = img.resize((224, 224))
img_array = keras_image.img_to_array(img)
img_array = tf.expand_dims(img_array, axis=0)
img_array = preprocess_input(img_array)
# Predict Skin Type
skin_pred = modelfor_skin.predict(img_array, verbose=0)[0]
skin_index = np.argmax(skin_pred)
skin_conf = skin_pred[skin_index]
skin_result = f"{Skin_typeclass_names[skin_index]} ({skin_conf*100:.2f}%)"
# Predict Skin Condition
disease_pred = modelfor_disease.predict(img_array, verbose=0)[0]
disease_index = np.argmax(disease_pred)
disease_conf = disease_pred[disease_index]
disease_result = f"{disease_class_names[disease_index]} ({disease_conf*100:.2f}%)"
# All probabilities
prob_list = [
f"{disease_class_names[i]}: {disease_pred[i]*100:.2f}%"
for i in range(len(disease_class_names))
]
prob_text = "\n".join(prob_list)
return skin_result, disease_result, prob_text
# Gradio Interface
iface = gr.Interface(
fn=predict_all,
inputs=gr.Image(type="pil"),
outputs=[
gr.Textbox(label="Predicted Skin Type"),
gr.Textbox(label="Predicted Skin Condition"),
gr.Textbox(label="All Skin Condition Probabilities")
],
title="Skin Type and Skin Condition Predictor",
description="Upload a facial skin image to get skin type and condition predictions."
)
if __name__ == "__main__":
iface.launch()