File size: 1,732 Bytes
ed2886e 2673557 e1b0813 2673557 e1b0813 2673557 ed2886e 8a38fb8 e1b0813 2673557 e1b0813 2673557 2836436 1d863ee 2836436 2673557 1d863ee e1b0813 2836436 2673557 8a38fb8 2673557 f59b0ba 2673557 8a38fb8 e1b0813 8a38fb8 2673557 e1b0813 | 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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | import streamlit as st
import numpy as np
from PIL import Image
import base64
import io
from tensorflow.keras.models import load_model
st.set_page_config(page_title="Hurma Sınıflandırıcı", layout="centered")
st.title("📷 Hurma Resmi Sınıflandırma")
st.write("Lütfen bir hurma resmi yükleyin ve hangi tür olduğunu tahmin edelim.")
# --- MODEL ---
try:
model = load_model("src/dates_classifier_model.h5")
except Exception as e:
st.error(f"Model yüklenemedi: {e}")
st.stop()
class_names = [
'Rutab', 'Meneifi', 'Sokari', 'Galaxy', 'Shaishe',
'Medjool', 'Ajwa', 'Nabtat Ali', 'Sugaey'
]
# --- IMAGE SESSION ---
def image_to_base64(image_bytes):
return base64.b64encode(image_bytes).decode("utf-8")
def base64_to_image(base64_str):
return Image.open(io.BytesIO(base64.b64decode(base64_str))).convert("RGB")
def process_image(img):
img = img.resize((224, 224))
img = np.array(img) / 255.0
img = np.expand_dims(img, axis=0)
return img
if "image_data" not in st.session_state:
st.session_state.image_data = None
uploaded_file = st.file_uploader("Resim Seç (.jpg, .jpeg, .png)", type=["jpg", "jpeg", "png"])
if uploaded_file is not None:
st.session_state.image_data = image_to_base64(uploaded_file.read())
if st.session_state.image_data:
try:
img = base64_to_image(st.session_state.image_data)
st.image(img, caption="Yüklenen Resim", use_column_width=True)
processed_img = process_image(img)
prediction = model.predict(processed_img)
predicted_class = np.argmax(prediction)
st.success(f"Tahmin: **{class_names[predicted_class]}**")
except Exception as e:
st.error(f"Fotoğraf işlenemedi: {e}")
|