| | import streamlit as st |
| | from PIL import Image |
| | import numpy as np |
| | from tensorflow.keras.models import load_model |
| | import io |
| |
|
| | def main(): |
| | st.set_page_config(page_title="Hurma Sınıflandırıcı") |
| |
|
| | st.title("📷 Hurma Resmi Sınıflandırma") |
| | st.write("Bir hurma resmi yükleyin ve hangi tür olduğunu tahmin edelim.") |
| |
|
| | try: |
| | model = load_model("src/dates_classifier_model.h5") |
| | except Exception as e: |
| | st.error("❌ Model yüklenemedi.") |
| | st.stop() |
| |
|
| | class_names = [ |
| | 'Rutab', |
| | 'Meneifi', |
| | 'Sokari', |
| | 'Galaxy', |
| | 'Shaishe', |
| | 'Medjool', |
| | 'Ajwa', |
| | 'Nabtat Ali', |
| | 'Sugaey' |
| | ] |
| |
|
| | file = st.file_uploader("Resim seç", type=["jpg", "jpeg", "png"]) |
| | if file: |
| | try: |
| | image = Image.open(io.BytesIO(file.read())).convert("RGB") |
| | st.image(image, caption="Yüklenen Resim", use_container_width=True) |
| |
|
| | img = image.resize((224, 224)) |
| | img = np.array(img) |
| | img = img / 255.0 |
| | img = np.expand_dims(img, axis=0) |
| |
|
| | prediction = model.predict(img) |
| | predicted_class = np.argmax(prediction) |
| |
|
| | st.success(f"Tahmin: {class_names[predicted_class]}") |
| |
|
| | |
| | st.subheader("Tahmin Skorları (Softmax Çıkışı):") |
| | for i, score in enumerate(prediction[0]): |
| | st.write(f"{class_names[i]}: {score:.4f}") |
| | except Exception as e: |
| | st.error(f"Hata: {str(e)}") |
| |
|
| | if __name__ == "__main__": |
| | main() |
| |
|