import streamlit as st import numpy as np from PIL import Image from tensorflow.keras.models import load_model class_names = { 0: "Speed limit (20km/h)", 1: "Speed limit (30km/h)", 2: "Speed limit (50km/h)", 3: "Speed limit (60km/h)", 4: "Speed limit (70km/h)", 5: "Speed limit (80km/h)", 6: "End of speed limit (80km/h)", 7: "Speed limit (100km/h)", 8: "Speed limit (120km/h)", 9: "No passing", 10: "No passing for vehicles over 3.5 metric tons", 11: "Right-of-way at the next intersection", 12: "Priority road", 13: "Yield", 14: "Stop", 15: "No vehicles", 16: "Vehicles over 3.5 metric tons prohibited", 17: "No entry", 18: "General caution", 19: "Dangerous curve to the left", 20: "Dangerous curve to the right", 21: "Double curve", 22: "Bumpy road", 23: "Slippery road", 24: "Road narrows on the right", 25: "Road work", 26: "Traffic signals", 27: "Pedestrians", 28: "Children crossing", 29: "Bicycles crossing", 30: "Beware of ice/snow", 31: "Wild animals crossing", 32: "End of all speed and passing limits", 33: "Turn right ahead", 34: "Turn left ahead", 35: "Ahead only", 36: "Go straight or right", 37: "Go straight or left", 38: "Keep right", 39: "Keep left", 40: "Roundabout mandatory", 41: "End of no passing", 42: "End of no passing by vehicles over 3.5 metric tons" } model = load_model("src/capstone_model.h5") st.title("German Traffic Sign Recognition") uploaded_file = st.file_uploader("Bir trafik işareti yükle", type=["jpg", "png"]) if uploaded_file is not None: image = Image.open(uploaded_file).convert('RGB').resize((64, 64)) st.image(image, caption="Yüklenen Görüntü", width=300) img_array = np.array(image) / 255.0 img_array = np.expand_dims(img_array, axis=0) prediction = model.predict(img_array) predicted_class = np.argmax(prediction) confidence = np.max(prediction) * 100 predicted_label = class_names.get(predicted_class, "Bilinmeyen Sınıf") st.success(f"🚦 Tahmin Edilen Trafik Levhası: **{predicted_label}**") st.info(f"📊 Güven Skoru (Confidence): **{confidence:.2f}%**")