01 / 05 · cluster k=0
Fine-tune ettiğim YOLOv8 plakayı 0,94 mAP50 ile buluyor; OCR okuyor, yerel bir LLM özetliyor.
Bir araç fotoğrafından plakayı okumak aslında iki problem: önce plaka nerede, sonra üzerinde ne yazıyor. Hazır bir nesne tespit modeli plakayı tanımıyor; ham OCR ise plaka olmayan yazıları da okuyor. Bu iki adımı, yanlış pozitifleri eleyen tek bir uçtan uca akışta birleştirmek istedim.
Önceden eğitilmiş YOLOv8'i Kaggle'daki 474 görsellik etiketli bir veri setiyle 50 epoch boyunca fine-tune ettim. Bulunan kutuyu kenar gürültüsünü azaltmak için hafifçe daraltıp Tesseract OCR'a verdim; okunan metni regex ile Türk plaka formatına (2 rakam, 1–3 harf, 2–4 rakam) göre doğruladım. 0,5 güven eşiği ve regex birlikte yanlış pozitifleri eliyor. LLM'e deterministik bir iş vermedim: format kontrolü regex'te, qwen2.5 yalnızca il kodundan bulunan şehri doğal dille özetliyor.
Doğrulama setinde precision 0,94, recall 0,85 ve mAP50 0,94'e ulaştım. Daha katı IoU eşiklerinin ortalaması olan mAP50-95'te skor 0,56. Fotoğraf yüklemeden şehir bilgisine kadar tüm akış bir Streamlit arayüzünde uçtan uca çalışıyor.
Fotoğraf yükleme
YOLOv8 ile plaka tespiti
Kırpma + Tesseract OCR
Regex ile format doğrulama
İl kodu → şehir, LLM özeti
Streamlit arayüzü
Python · YOLOv8 · OpenCV · Tesseract OCR · Ollama · Streamlit
474 görsel küçük bir örneklem; farklı ışık, açı ve mesafede performans değişebilir. OCR süslü fontlu ya da sembol içeren plakalarda hata yapabiliyor; küçük LLM de il kodu dışındaki detaylarda zaman zaman uydurabiliyor. Bu bir öğrenme ve portföy projesi; üretime giden yolda sıradaki adım çok daha büyük ve çeşitli bir veri seti.