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