Projelere geri dön YOLOv8 · Python

Plaka Tanıma Sistemi

Görüntü veya video akışları üzerinden araç plakalarını yüksek doğruluk ve optimize bellek kullanımıyla tespit edip okuyan (ALPR) iki aşamalı YOLO tabanlı derin öğrenme projesi.

Proje Özeti

Görüntü veya video akışları üzerinden araç plakalarını yüksek doğruluk ve optimize bellek kullanımıyla tespit edip okuyan (ALPR) iki aşamalı yapay zeka pipeline'ı. Önce aracı izole eder, ardından yalnızca araç bölgesinde plaka arar; sokak tabelaları ve reklam panoları gibi çevresel gürültüyü filtreler.

Problem & Çözüm

Tek aşamalı plaka tanıma modelleri çoğu zaman çevredeki metinleri plaka sanabilir. Bu proje, COCO pre-trained YOLOv8n ile araç tespiti yaptıktan sonra özel eğitilmiş ikinci YOLO modeliyle yalnızca araç ROI'sinde plaka konumlandırır; EasyOCR ile karakter okuma aşamasına geçer.

  • Çevresel gürültülerden izolasyon (arka plan filtreleme)
  • ROI koordinat referansı ile gereksiz matris kopyalarının engellenmesi
  • Canlı kamera, tek görüntü ve video dosyası desteği

Pipeline Aşamaları

  • Aşama 1 — Araç tespiti: YOLOv8n (COCO) ile car, motorcycle, bus, truck sınıfları; OpenCV ile araç bölgesi kırpılır
  • Aşama 2 — Plaka konumlandırma: Özel eğitilmiş plate_detector.pt modeli; fiziksel crop yerine ROI koordinatları tutulur
  • Aşama 3 — OCR: EasyOCR + CLAHE, gürültü azaltma ve kontrast artırma; Türk plaka formatına uygun karakter düzeltme (O→0, I→1)

Temel Özellikler

  • Canlı kamera arayüzü (varsayılan): Sol tarafta bounding box'lı canlı görüntü, sağ tarafta plaka, güven skoru ve FPS
  • CLI ile tek görüntü ve video işleme; çıktı kaydetme desteği
  • config/settings.yaml üzerinden model yolları, eşikler, OCR ve frame skipping ayarları
  • Modüler Python mimarisi: vehicle_detector, plate_detector, ocr_reader, preprocessor, postprocessor

Bellek Optimizasyonları

  • ROI referansı — plaka bölgesi kesilmez, koordinat tutulur
  • stream=True — video frame sonuçları bellekte birikmez
  • Frame skipping — varsayılan her 3 frame'de bir işlem
  • model.fuse() — Conv+BN katman birleştirme
  • MPS backend — Apple Silicon native GPU hızlandırma

Kullanılan Teknolojiler

Python 3.10+ YOLOv8 (Ultralytics) PyTorch (MPS) OpenCV EasyOCR

Öne Çıkan Mühendislik Kararları

  • İki aşamalı pipeline ile false positive oranının düşürülmesi
  • Video akışında bellek sızıntısını önlemek için stream=True kullanımı
  • Frame skipping ile gerçek zamanlı kamera deneyiminde akıcılık
  • Tamamen modüler, nesne yönelimli ve config güdümlü kod yapısı