OCA.DEV
arrow_back ALL PROJECTSTÜM PROJELER

trafikisaret

DATASET BUILT FROM SCRATCH

A Turkish traffic-sign dataset labelled from scratch on my own dashcam footage, and a two-stage recogniser trained on it. Stage one finds the boxes without caring about the class; stage two classifies each crop, and answers with a question mark when it is not sure. Kendi dashcam kayıtlarımdan sıfırdan etiketlenmiş bir Türk trafik işareti veri seti ve üzerinde eğitilmiş iki aşamalı bir tanıyıcı. Birinci aşama sınıfa bakmadan kutuları buluyor; ikinci aşama her kırpmayı sınıflandırıyor, emin olamadığında soru işaretiyle cevap veriyor.

code SOURCE CODEKAYNAK KOD visibility_off IMAGES WITHHELD — PLATES AND FACESGÖRÜNTÜLER PAYLAŞILMADI — PLAKA VE YÜZ
717 boxes labelled by hand elle etiketlenmiş kutu
787 frames processed işlenmiş kare
0.953 classifier recall, test set sınıflandırıcı duyarlığı, test
3 conditions: day, rain, night koşul: gündüz, yağmur, gece
The same traffic-sign model running on day, rain and night frames

The same model on three conditions. The night frame finds exactly one sign, and it stays in the demo on purpose — the model is weak there and hiding it would make the demo a claim rather than a measurement. Aynı model üç koşulda. Gece karesinde tam olarak tek işaret bulunuyor ve bu bilerek demoda duruyor — model orada zayıf ve bunu gizlemek demoyu ölçüm olmaktan çıkarıp iddiaya çevirirdi.

The data decided the architectureMimariye veri karar verdi

One detector predicting 23 classes would have to learn each from an average of 31 boxes, and the thinnest class has 3. Collapsing every sign into a single class means all 717 boxes train the detector at once, and telling the classes apart becomes a separate crop-classification problem where each box is a training example in its own right. 23 sınıf tahmin eden tek bir dedektör, her sınıfı ortalama 31 kutudan öğrenmek zorunda kalırdı; en ince sınıfta 3 kutu var. Bütün levhaları tek sınıfta toplamak, 717 kutunun tamamının dedektörü aynı anda eğitmesi demek; sınıfları ayırmak da her kutunun başlı başına bir eğitim örneği olduğu ayrı bir kırpma sınıflandırma problemine kalıyor.

Labelled boxes717
Labels used23
Average per class31
Thinnest class3
Supported in classifier14

Classes below the threshold were not swept into an "other" bucket. Grouping visually unrelated signs under one label teaches the classifier a contradiction; if a class is unsupported, the repo says so. Eşiğin altında kalan sınıflar bir "diğer" kutusuna doldurulmadı. Görsel olarak alakasız levhaları tek etiket altında toplamak sınıflandırıcıya çelişki öğretir; bir sınıf desteklenmiyorsa repo bunu yazar.

The two-stage recogniser: a class-agnostic detector finds boxes, then a classifier labels each crop and answers with a question mark when unsure Frame Stage 1 — class-agnostic detector all 717 boxes train one class Stage 2 — crop classifier 14 classes • 404 training crops LABEL + CONFIDENCE " ? " WHEN UNSURE TEST SET: 0.953 RECALL OVER 64 CROPS FROM 52 DISTINCT PHYSICAL SIGNS

MeasurementsÖlçümler

FROM THE TRAINING RUNS
A grid of traffic-sign crops with the classifier's predicted label and confidence on each
Stage 2 — classifier output Predicted label and confidence on a validation batch. 14 classes, 404 training crops. On the held-out test set: 0.953 recall over 64 crops taken from 52 distinct physical signs. Bir doğrulama yığınında tahmin edilen etiket ve güven. 14 sınıf, 404 eğitim kırpması. Ayrılmış test kümesinde: 52 ayrı fiziksel levhadan alınan 64 kırpmada 0,953 duyarlık.
Normalised confusion matrix across the fourteen supported sign classes
Where the classes bleed All three test errors stay inside a colour family: u_donusu_yasak read as hiz_siniri, both red circles; ileri_mecburi read as yonlendirme, both blue. The model learned shape and colour, and struggles with pictogram detail at small sizes. Üç test hatasının üçü de renk ailesi içinde kalıyor: u_donusu_yasak, hiz_siniri okunmuş — ikisi de kırmızı daire; ileri_mecburi, yonlendirme okunmuş — ikisi de mavi. Model şekli ve rengi öğrenmiş, küçük boyutta piktogram detayında zorlanıyor.
F1 score against confidence threshold for the class-agnostic sign detector
Stage 1 — detector

mAP50 is 0.515 across the test set, and the single number hides two different realities. Test kümesinde mAP50 0,515 ve bu tek sayı iki farklı gerçeği gizliyor.

DaylightmAP50 0.608
Rain + nightmAP50 0.361
OverallmAP50 0.515

Inference resolution mattered more than training did: running the 640-trained model at 960 px raised recall from 0.379 to 0.724 without retraining anything. At 1280 px it falls back to 0.448 — there is an optimum, and it does not show up without measuring. Çıkarım çözünürlüğü eğitimden daha çok fark yarattı: 640'ta eğitilmiş modeli 960 pikselde çalıştırmak, hiçbir şey eğitmeden duyarlığı 0,379'dan 0,724'e çıkardı. 1280 pikselde 0,448'e düşüyor — bir optimum var ve ölçmeden ortaya çıkmıyor.

Read furtherDevamını oku