Spaces:
Sleeping
Sleeping
import streamlit as st | |
import tensorflow as tf | |
from tensorflow.keras.models import load_model | |
from tensorflow.keras.preprocessing import image | |
import numpy as np | |
from PIL import Image | |
# Set up Streamlit app | |
st.title("Skin Cancer Detection") | |
st.write("Upload an image to detect the type of skin lesion.") | |
# Load the trained model | |
model_path = "Model.h5" | |
model = load_model(model_path) | |
# Define class names | |
class_names = [ | |
"actinic keratosis", | |
"basal cell carcinoma", | |
"dermatofibroma", | |
"melanoma", | |
"nevus", | |
"pigmented benign keratosis", | |
"seborrheic keratosis", | |
"squamous cell carcinoma", | |
"vascular lesion" | |
] | |
# Image preprocessing function | |
def preprocess_image(uploaded_file, img_height=224, img_width=224): | |
img = Image.open(uploaded_file).convert("RGB") | |
img = img.resize((img_width, img_height)) | |
img_array = np.array(img) / 255.0 # Normalize the image | |
img_array = np.expand_dims(img_array, axis=0) # Add batch dimension | |
return img_array | |
# File uploader for image | |
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"]) | |
if uploaded_file is not None: | |
# Display uploaded image | |
st.image(uploaded_file, caption="Uploaded Image", use_column_width=True) | |
# Preprocess the image | |
img_array = preprocess_image(uploaded_file) | |
# Predict using the model | |
predictions = model.predict(img_array) | |
predicted_class_index = np.argmax(predictions[0]) | |
predicted_class = class_names[predicted_class_index] | |
confidence = predictions[0][predicted_class_index] | |
# Display the prediction | |
st.write(f"### Predicted Class: {predicted_class}") | |
st.write(f"### Confidence: {confidence:.2%}") | |
# Display probabilities for all classes | |
st.write("### Class Probabilities:") | |
for i, class_name in enumerate(class_names): | |
st.write(f"{class_name}: {predictions[0][i]:.2%}") | |