File size: 1,465 Bytes
ed2886e
e1b0813
c919903
2673557
c919903
ed2886e
c919903
 
b3b1355
c919903
 
2673557
7ec83f2
c919903
2673557
7ec83f2
1471e11
2836436
c919903
7ec83f2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1471e11
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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.")

    # Modeli yükle
    model = load_model("src/dates_classifier_model.h5")

    # Sınıf isimleri — modelin çıktı sayısıyla birebir uyumlu olmalı
    class_names = ['Ajwa', 'Medjool', 'Sokari']

    file = st.file_uploader("Resim seç", type=["jpg", "jpeg", "png"])
    if file is not None:
        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) / 255.0
            img = np.expand_dims(img, axis=0)

            prediction = model.predict(img)
            predicted_class = np.argmax(prediction)

            # Hatalı index durumuna karşı koruma
            if predicted_class < len(class_names):
                st.success(f"Tahmin: {class_names[predicted_class]}")
            else:
                st.error("⚠️ Tahmin edilen sınıf, sınıf isimleriyle eşleşmiyor. Lütfen modelinizi kontrol edin.")
        except Exception as e:
            st.error(f"⚠️ Hata oluştu: {str(e)}")

if __name__ == "__main__":
    main()