Spaces:
Sleeping
Sleeping
| # --- KERAS SÜRÜM UYUMSUZLUĞU YAMASI --- | |
| # Keras'ın eski sürümündeki Dense katmanına 'quantization_config' parametresini yok saymasını söylüyoruz. | |
| import keras | |
| if hasattr(keras.layers, 'Dense'): | |
| original_init = keras.layers.Dense.__init__ | |
| def patched_init(self, *args, **kwargs): | |
| kwargs.pop('quantization_config', None) # Eğer varsa bu parametreyi sil | |
| original_init(self, *args, **kwargs) | |
| keras.layers.Dense.__init__ = patched_init | |
| # -------------------------------------- | |
| import streamlit as st | |
| from tensorflow.keras.models import load_model | |
| from PIL import Image | |
| import numpy as np | |
| from keras.models import load_model | |
| import os | |
| # Modeli yükle | |
| # streamlit_app.py dosyasının bulunduğu klasörün yolunu alır | |
| BASE_DIR = os.path.dirname(os.path.abspath(__file__)) | |
| MODEL_PATH = os.path.join(BASE_DIR, 'german_trafic_model_en_son.keras') | |
| model = load_model(MODEL_PATH) | |
| def process_image(img): | |
| # Resmi RGB formatına zorla (PNG'lerdeki şeffaflık kanalı hatasını önler) | |
| img = img.convert('RGB') | |
| img = img.resize((64, 64)) | |
| img = np.array(img) | |
| img = img / 255.0 | |
| img = np.expand_dims(img, axis=0) | |
| return img | |
| st.title('Alman Trafiği Sınıflandırma :') | |
| st.write('Bir resim yükleyin, modelin hangi sınıfa ait olduğunu tahmin etmesini sağlayın!') | |
| file = st.file_uploader('Bir resim yükle', type=['jpg', 'jpeg', 'png']) | |
| if file is not None: | |
| img = Image.open(file) | |
| st.image(img, caption='Yüklenen Resim', use_container_width=True) | |
| image = process_image(img) | |
| prediction = model.predict(image)[0] | |
| predicted_class_index = np.argmax(prediction) | |
| print(predicted_class_index) | |
| # GTSRB Sınıf İsimleri (0 - 42) | |
| class_names = { | |
| 0: "Hız Sınırı (20 km/s)", | |
| 1: "Hız Sınırı (30 km/s)", | |
| 2: "Hız Sınırı (50 km/s)", | |
| 3: "Hız Sınırı (60 km/s)", | |
| 4: "Hız Sınırı (70 km/s)", | |
| 5: "Hız Sınırı (80 km/s)", | |
| 6: "Hız Sınırı Sonu (80 km/s)", | |
| 7: "Hız Sınırı (100 km/s)", | |
| 8: "Hız Sınırı (120 km/s)", | |
| 9: "Geçme Yasağı (Otomobiller)", | |
| 10: "3.5 Ton Üzeri Araçlar İçin Geçme Yasağı", | |
| 11: "Tali Yol - Ana Yol Kavşağı", | |
| 12: "Anayol", | |
| 13: "Yol Ver", | |
| 14: "DUR (Stop)", | |
| 15: "Taşıt Trafiğine Kapalı Yol", | |
| 16: "3.5 Ton Üzeri Kamyon Giremez", | |
| 17: "Girişi Olmayan Yol (Yasak Yol)", | |
| 18: "Tehlike", | |
| 19: "Sola Tehlikeli Viraj", | |
| 20: "Sağa Tehlikeli Viraj", | |
| 21: "Tehlikeli Virajlar (İlki Sola)", | |
| 22: "Kasıslı Yol (Engebeli Yol)", | |
| 23: "Kaygan Yol", | |
| 24: "Sağdan Daralan Yol", | |
| 25: "Yol Çalışması", | |
| 26: "Trafik Işıkları", | |
| 27: "Yaya Geçidi", | |
| 28: "Okul Geçidi", | |
| 29: "Bisiklet Geçebilir", | |
| 30: "Buzlanma / Kar Tehlikesi", | |
| 31: "Vahşi Hayvan Geçebilir", | |
| 32: "Tüm Hız ve Geçme Yasaklarının Sonu", | |
| 33: "Sağa Mecburi Yön", | |
| 34: "Sola Mecburi Yön", | |
| 35: "İleri Mecburi Yön", | |
| 36: "İleri ve Sağa Mecburi Yön", | |
| 37: "İleri ve Sola Mecburi Yön", | |
| 38: "Sağdan Geçiniz", | |
| 39: "Soldan Geçiniz", | |
| 40: "Ada Etrafında Dönünüz (Dönel Kavşak)", | |
| 41: "Geçme Yasağı Sonu", | |
| 42: "3.5 Ton Üzeri Araçlar İçin Geçme Yasağı Sonu", | |
| } | |
| # 3. Bulduğumuz indeksi liste olarak değil, direkt sayı olarak gönderiyoruz | |
| st.write(f"Tahmin Edilen Sınıf: **{class_names[predicted_class_index]}**") |