skinCancerwithTransferLearning / src /streamlit_app.py
Kemal Serkan YILDIRIM
Update src/streamlit_app.py
fa65524 verified
Raw
History Blame Contribute Delete
1.81 kB
import streamlit as st
from tensorflow.keras.models import load_model
from PIL import Image
import numpy as np
# from pathlib import Path
# import os
# MODEL_PATH = Path(__file__).resolve().parent / "skin_cancer_TL.h5"
# print("cwd:", os.getcwd())
# print("this file:", Path(__file__).resolve())
# print("model exists:", MODEL_PATH.exists(), MODEL_PATH) # MODEL_PATH henüz yok → hata
# model = load_model(str(MODEL_PATH))
model = load_model('src/skin_cancer_TL.h5') # yanlış yol
IMAGE_SIZE = (224, 224)
def process_image(img):
img = img.convert('RGB')
img = img.resize(IMAGE_SIZE)
img = np.array(img, dtype=np.float32) / 255.0
return np.expand_dims(img, axis=0)
st.title('Skin Cancer Classification with Transfer Learning :cancer:')
st.write('Upload an image of a skin lesion to classify it as benign or malignant.')
file = st.file_uploader('Choose an image...', type=['jpg', 'jpeg', 'png'])
if file is not None: # Eğer kullanıcı bir dosya yüklediyse
# Yüklenen dosyayı PIL ile açtık
img = Image.open(file)
# Yüklenen görüntüyü Streamlit uygulamasında gösterdik
st.image(img, caption='Uploaded Image', use_column_width=True)
# Yüklenen görüntüyü işledik
img = process_image(img)
# İşlenmiş görüntüyü modelimize verdik ve tahmin sonucunu aldık
prediction = model.predict(img)
# Modelin çıktısı 0 ile 1 arasında bir değer olduğu için, 0.5'ten büyükse sınıfı 1 (Cancer), değilse 0 (Non-Cancer) olarak belirledik
prediction_class = 1 if prediction > 0.5 else 0
class_names = ['Cancer', 'Non-Cancer'] # Sınıf isimlerini tanımladık
st.write(f'The lesion is classified as {class_names[prediction_class]}.') # Lezyonun sınıfını belirten bir mesaj yazdık