| 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 |