Harun01 commited on
Commit
b3b1355
·
verified ·
1 Parent(s): e1b0813

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +17 -26
src/streamlit_app.py CHANGED
@@ -1,7 +1,6 @@
1
  import streamlit as st
2
  import numpy as np
3
  from PIL import Image
4
- import base64
5
  import io
6
  from tensorflow.keras.models import load_model
7
 
@@ -10,48 +9,40 @@ st.set_page_config(page_title="Hurma Sınıflandırıcı", layout="centered")
10
  st.title("📷 Hurma Resmi Sınıflandırma")
11
  st.write("Lütfen bir hurma resmi yükleyin ve hangi tür olduğunu tahmin edelim.")
12
 
13
- # --- MODEL ---
14
- try:
15
- model = load_model("src/dates_classifier_model.h5")
16
- except Exception as e:
17
- st.error(f"Model yüklenemedi: {e}")
18
- st.stop()
19
 
20
  class_names = [
21
  'Rutab', 'Meneifi', 'Sokari', 'Galaxy', 'Shaishe',
22
  'Medjool', 'Ajwa', 'Nabtat Ali', 'Sugaey'
23
  ]
24
 
25
- # --- IMAGE SESSION ---
26
- def image_to_base64(image_bytes):
27
- return base64.b64encode(image_bytes).decode("utf-8")
28
-
29
- def base64_to_image(base64_str):
30
- return Image.open(io.BytesIO(base64.b64decode(base64_str))).convert("RGB")
31
-
32
  def process_image(img):
33
  img = img.resize((224, 224))
34
  img = np.array(img) / 255.0
35
  img = np.expand_dims(img, axis=0)
36
  return img
37
 
38
- if "image_data" not in st.session_state:
39
- st.session_state.image_data = None
40
-
41
  uploaded_file = st.file_uploader("Resim Seç (.jpg, .jpeg, .png)", type=["jpg", "jpeg", "png"])
42
 
43
  if uploaded_file is not None:
44
- st.session_state.image_data = image_to_base64(uploaded_file.read())
45
-
46
- if st.session_state.image_data:
47
  try:
48
- img = base64_to_image(st.session_state.image_data)
49
- st.image(img, caption="Yüklenen Resim", use_column_width=True)
 
50
 
51
- processed_img = process_image(img)
52
- prediction = model.predict(processed_img)
 
53
  predicted_class = np.argmax(prediction)
54
 
55
- st.success(f"Tahmin: **{class_names[predicted_class]}**")
 
56
  except Exception as e:
57
- st.error(f"Fotoğraf işlenemedi: {e}")
 
1
  import streamlit as st
2
  import numpy as np
3
  from PIL import Image
 
4
  import io
5
  from tensorflow.keras.models import load_model
6
 
 
9
  st.title("📷 Hurma Resmi Sınıflandırma")
10
  st.write("Lütfen bir hurma resmi yükleyin ve hangi tür olduğunu tahmin edelim.")
11
 
12
+ # Model yükleniyor
13
+ @st.cache_resource
14
+ def load_model_cached():
15
+ return load_model("src/dates_classifier_model.h5")
16
+
17
+ model = load_model_cached()
18
 
19
  class_names = [
20
  'Rutab', 'Meneifi', 'Sokari', 'Galaxy', 'Shaishe',
21
  'Medjool', 'Ajwa', 'Nabtat Ali', 'Sugaey'
22
  ]
23
 
24
+ # Fotoğraf işleme fonksiyonu
 
 
 
 
 
 
25
  def process_image(img):
26
  img = img.resize((224, 224))
27
  img = np.array(img) / 255.0
28
  img = np.expand_dims(img, axis=0)
29
  return img
30
 
31
+ # Dosya yükleme
 
 
32
  uploaded_file = st.file_uploader("Resim Seç (.jpg, .jpeg, .png)", type=["jpg", "jpeg", "png"])
33
 
34
  if uploaded_file is not None:
 
 
 
35
  try:
36
+ # BytesIO üzerinden oku
37
+ image = Image.open(io.BytesIO(uploaded_file.read())).convert("RGB")
38
+ st.image(image, caption="Yüklenen Resim", use_column_width=True)
39
 
40
+ # Tahmin
41
+ processed = process_image(image)
42
+ prediction = model.predict(processed)
43
  predicted_class = np.argmax(prediction)
44
 
45
+ st.success(f"Tahmin edilen sınıf: **{class_names[predicted_class]}**")
46
+
47
  except Exception as e:
48
+ st.error(f"Resim işlenemedi: {e}")