Skip to content

Repository files navigation

Akıllı Yol Güvenliği — 5G & Yapay Zeka Prototipi

TEKNOFEST 2026 · 5G & Yapay Zeka ile Akıllı Yol Güvenliği Yarışması (Turkcell)

⚠️ Bu v1 prototiptir; geliştirme v2 ile devam ediyor.

CI Python FastAPI YOLOv8 React Native Platform GPU 5G Lisans

Canlı video akışını yapay zeka ile işleyen, yalnızca ihtiyaç anında 5G CAMARA Quality on Demand (QoD) API'siyle bant genişliğini yükselten ve sonuçları mobil uygulama + güvenlik konsolu üzerinde anlık gösteren uçtan uca çalışan prototip.

Mimari üç bağımsız parçadan oluşur (şartname ile birebir): Mobil uygulama (ön yüz) ↔ Backend ↔ YZ çıkarım hattı

Model durumu: Sistem COCO ön-eğitimli YOLOv8 ile çalışır. Komite TOGG/etiketli veriyi paylaşınca ai/training/ ile fine-tune edilir. Model kütüphanesi kurulu değilse sistem otomatik MOCK moda düşer — testler her ortamda yeşil kalır.


Kol Rehberleri

Kol Rehber Ne Anlatıyor
🤖 YZ docs/yz.md YOLO, plaka OCR, hız tahmini, sürücü analizi
🖥️ API docs/api.md FastAPI, WebSocket, CAMARA entegrasyonu
📱 Mobil docs/mobil.md React Native, Expo, iOS & Android
🔗 Entegrasyon docs/entegrasyon.md Test, web arayüzü, sistem bütünleştirme
📝 Rapor docs/rapor.md Yarışma kriterleri, sunum, demo senaryosu
📖 Genel docs/basics.md Projeyi sıfırdan anlatan giriş rehberi

Hiç bilmiyorum, nereden başlayayım?docs/basics.md


Ne Yapıyor? (30 Saniye Özet)

📷 Kamera  ──kare──►  🖥️ Backend  ──kare──►  🤖 YZ (YOLO + OCR)
           ◄──sonuç──             ◄──sonuç──

Normal → Tehlike Tespit → 5G QoD API → Bant 5→20 Mbps → Kritik Analiz → Bant 20→5 Mbps
  1. Kamera görüntüyü saniyede 7 kez backend'e gönderir
  2. YZ araç, plaka, sürücü davranışı ve risk skorunu hesaplar
  3. Tehlike varsa CAMARA QoD ile 5G bant genişliği otomatik artırılır
  4. Tehlike geçince bant düşer — sürekli yüksek bant yok, sadece gerektiğinde

Puanlama Kriterleri (Şartname Tablo 1)

Kriter Ağırlık Karşılığı
YZ doğruluğu (araç, plaka, hız, araç içi nesne) %40 ai/pipeline.py — YOLOv8 + YOLO11n plaka + OCR + MediaPipe + risk
5G QoD — yalnız ihtiyaç anında bant yükseltme %40 ai/qod_trigger.py (A–E koşul motoru) + backend/qod_manager.py · ~%43 bant tasarrufu ✓
Mimari & modern pratikler %20 Katmanlı mimari, tip-güvenli şema, 358 test, ARCHITECTURE.md

Hızlı Başlangıç

1 — Backend + Web Dashboard

macOS / Linux:

./run_dev.sh start    # arka planda başlat (önerilen)
./run_dev.sh stop     # durdur
./run_dev.sh restart  # yeniden başlat
./run_dev.sh status   # çalışıyor mu?
./run_dev.sh logs     # canlı log takibi
./run_dev.sh          # ön planda başlat

Windows (PowerShell):

.\run_dev.ps1 start    # arka planda başlat
.\run_dev.ps1 stop     # durdur
.\run_dev.ps1 restart  # yeniden başlat
.\run_dev.ps1 status   # çalışıyor mu?
.\run_dev.ps1 logs     # canlı log takibi
.\run_dev.ps1          # ön planda başlat

İlk çalıştırmada YZ modelleri internet'ten indirilir — birkaç dakika sürebilir.

Tarayıcıda http://localhost:8000/ → Giriş Yap → Kamerayı Başlat.

Alternatif:

make install          # sanal ortam + paketler
make run              # sunucuyu başlat

2 — Mobil Uygulama (iOS & Android)

cd mobile
npm install
npx expo start        # QR kodu telefonla okut (Expo Go uygulaması gerekli)

Giriş ekranında Sunucu Adresi kutusuna Mac/PC'nin LAN IP'sini gir:

# macOS
ipconfig getifaddr en0
# Windows
ipconfig   # IPv4 adresine bak
# Örn: 192.168.1.35 → 192.168.1.35:8000

3 — Testler & Değerlendirme

make test             # 358 pytest testi (model gerektirmez, mock modda çalışır)
make eval             # sentetik veri + Normal/Kritik doğruluk raporu

Mevcut Durum (2026-07-13)

Bileşen Durum
YZ hattı (detector, tracking, speed, plate_ocr, driver_state, risk, qod_trigger, pipeline) ✅ Hazır
Mock modda uçtan uca çalışma 358 test yeşil
Tip-ayrımlı v4 model (yolguvenligi_types_v4.pt, yolov8m@768, test mAP50 .788) ✅ Varsayılan CRITICAL model
Windows + CUDA doğrulaması (RTX 4070 Laptop) ✅ Tamamlandı
Gerçek YOLOv8 GPU çıkarımı (72.7 FPS yolov8n, RTX 4070) ✅ Tamamlandı
Eğitim/veri araçları (prepare_dataset, train, fetch_data) ✅ Hazır
JWT RS256 kimlik doğrulama + rate limiting (100 req/dak) ✅ Tamamlandı
Prometheus /metrics + Grafana hazır ✅ Tamamlandı
Uçtan uca gecikme ölçümü (total_latency_ms) ✅ Tamamlandı
Zengin API v1.5 (statistics, vehicles/{plate}, events/{id}, export, heatmap) ✅ Tamamlandı
Plaka OCR — çok-varyant + konsensüs ✅ Tamamlandı
Plaka tespiti — YOLO11n oto-indirme + siyah-çerçeve crop + araç-id takibi ✅ Tamamlandı (7 Haz)
Plaka croplooks_like_plate geçidi (saçma bölge eleme) + refine_to_frame ✅ Tamamlandı (7 Haz)
Metrik hız oto-kalibrasyonu (ppm/homografi/VP) ✅ Tamamlandı
QoD eval — gerçek video ~%43 bant tasarrufu (şartname %40 kriteri ✓) ✅ Tamamlandı
CAMARA env vars (mock→gerçek geçiş altyapısı) ✅ Tamamlandı
Plaka OCR Katman 3 (PaddleOCR fallback, video_3 iyileştirmesi) 🔄 Faz 4b
Sürücü davranışı gerçek test (MediaPipe sahne testi) 🔄 Faz 5
Hız kalibrasyonu (saha referansı) 🔄 Faz 6
Fine-tune (TOGG/komite verisi) ⏳ Komiteye bağlı — Faz 8

Detaylı ilerleme ve karar günlüğü: ai/PROGRESS.md


Senaryo Akışı (Uçtan Uca)

1. SIM Doğrulama    CAMARA Number Verification — SMS/kod yok, sessiz
        ↓
2. Normal Mod       480p · 5 Mbps · YOLOv8n · araç varlığı izlenir
        ↓
3. QoD Tetik        500ms döngüde A–E koşullarından 2 ardışık pozitif
        ↓
4. Kritik Mod       1080p · 20 Mbps · YOLOv8s + OCR + MediaPipe
                    Plaka, hız, telefon, yorgunluk, risk skoru
        ↓
5. Bırakma          Yüksek güven / süre dolumu / araç uzaklaştı
                    → CAMARA QoD DELETE → Bant 5 Mbps'e döner
        ↓
6. Gösterim         WebSocket → Mobil/Web · Olaylar SQLite'a kaydedilir

Proje Yapısı

teknofest-prototip/
│
├── ai/                  🤖 YZ çıkarım hattı
│   ├── detector.py          YOLOv8 (gerçek) / mock dedektör
│   ├── lp_detector.py       Plaka tespiti (YOLO11n oto-indirme + CV fallback)
│   ├── plate_crop.py        Siyah-çerçeve takip crop + deskew + likeness geçidi
│   ├── plate_tracker.py     Araç-id'ye bağlı plaka kararlılığı (ttl ile prune)
│   ├── plate_ocr.py         Plaka OCR + konsensüs (EasyOCR, çok-varyant)
│   ├── driver_state.py      MediaPipe EAR/PERCLOS + sürücü/yolcu ROI ayrımı
│   ├── speed.py             Kalibrasyonsuz bbox-tabanlı hız
│   ├── risk.py              Risk skor motoru (0–100)
│   ├── tracking.py          IOU takip (track_id, bbox büyüme, swerving)
│   ├── qod_trigger.py       ← %40 kriter çekirdeği: A–E koşul motoru
│   ├── pipeline.py          Uçtan uca orkestrasyon
│   ├── schema.py            Backend kontrat şeması
│   ├── AGENTS.md            YZ kolu çalışma kuralları
│   ├── PROGRESS.md          İlerleme günlüğü ve karar kayıtları
│   ├── plan.md              Model eğitim stratejisi
│   └── training/            Fine-tune sistemi
│       ├── train.py             Aşamalı müfredat + iki kademe + INT8 export
│       ├── prepare_dataset.py   COCO→YOLO dönüştürme, audit, sızıntı tespiti
│       ├── fetch_data.py        Açık kaynak manifest + indirme yardımcıları
│       ├── sources.json         9 kaynak bildirimi (veri manifesti)
│       └── data.yaml            7 sınıf yapılandırması
│
├── backend/             🖥️ FastAPI sunucu
│   ├── main.py              REST + WebSocket uç noktaları (v1.5)
│   ├── auth.py              JWT RS256 kimlik doğrulama
│   ├── metrics.py           Prometheus domain metrikleri
│   ├── qod_manager.py       Tetik motoru ↔ CAMARA köprüsü
│   ├── db.py                SQLite olay deposu
│   ├── frames.py            Kare çözümleme/kodlama
│   └── camara/              Mock QoD + Number Verification
│
├── frontend/            🌐 Web güvenlik konsolu
│   ├── index.html           Ana sayfa (swerving göstergesi dahil)
│   ├── app.js               Kamera + WebSocket + bbox renk kodlaması
│   └── styles.css           Tasarım
│
├── mobile/              📱 React Native / Expo (iOS & Android)
│   ├── App.tsx              Ana uygulama
│   └── src/
│       ├── screens/         Login, Dashboard, EventDetail ekranları
│       ├── api/client.ts    Backend bağlantısı
│       └── types.ts         TypeScript şeması
│
├── tools/               🔧 Yardımcı araçlar
│   ├── test_video.py        Video test CLI + annotated çıktı
│   ├── camera_client.py     Masaüstü kamera istemcisi
│   └── smoke_real_model.py  Gerçek model duman testi
│
├── tests/               ✅ 358 pytest testi (33 dosya, mock modda çalışır)
├── eval/                📊 Doğruluk değerlendirmesi
│   ├── evaluate.py          Normal vs Kritik + bant verimliliği
│   └── real_smoke.py        Gerçek-mod pipeline duman testi
│
├── mock/                🎭 Sentetik test verisi
├── changes/             📋 Değişiklik günlükleri
│   ├── changes.md           Versiyon geçmişi (v2.2'ye kadar)
│   └── next.md              Sıradaki görevler (kol sorumlusu özeti)
│
├── docs/                📚 Kol rehberleri
└── config/settings.py   ⚙️  Tüm parametreler tek yerden

Yapılandırma

Tüm eşikler, sınıflar ve QoD parametreleri config/settings.py ve .env üzerinden:

cp .env.example .env
# .env içini ihtiyaca göre düzenle
Parametre Varsayılan Açıklama
AI_MODE auto real / mock / auto
YOLO_DEVICE auto auto / cpu / mps / cuda
CONF_NORMAL 0.35 Normal mod tespit güven eşiği
QOD_EVAL_PERIOD_MS 500 QoD değerlendirme aralığı
SPEED_CALIBRATION_K 900.0 Hız kalibrasyon sabiti
SPEED_LIMIT_KMH 50.0 Hız aşımı eşiği

Gerçek Modele Geçiş

pip install ultralytics easyocr mediapipe huggingface_hub

AI_MODE=auto (varsayılan) ile sistem paketler kuruluysa otomatik gerçek modele geçer.

  • Mac Apple Silicon: YOLO otomatik MPS hızlandırması kullanır
  • NVIDIA GPU: CUDA otomatik seçilir (RTX 4060/4070/4090 test edildi)
  • Kütüphane eksikse: İlgili modül mock'a nazikçe düşer, sistem çökmez (K4 kuralı)

Video Test Aracı

Kamera olmadan doğrudan video dosyası üzerinde test:

# Basit test
python tools/test_video.py project-files/test-verisi/video_3.mp4

# Annotated çıktı + JSON raporu
python tools/test_video.py video.mp4 --scale 0.5 --every 2 \
    --out output/result.mp4 --json-out results.json

# Backend üzerinden (REST endpoint)
curl -X POST http://localhost:8000/api/test-video \
    -F "filename=video_3.mp4" -F "every_n=2" -F "scale=0.5"

API Özeti

Tam API referansı: backend/README.md

Swagger UI: http://localhost:8000/docs


Sık Kullanılan Komutlar

# Sistem
./run_dev.sh              # Tam sistem başlat (macOS/Linux)
.\run_dev.ps1             # Tam sistem başlat (Windows)
make test                 # 358 testi çalıştır
make eval                 # Normal vs Kritik doğruluk raporu
make mock                 # Sentetik test videosu üret
make clean                # venv + cache + db temizle

# Sadece mock modda (YZ modeli olmadan):
AI_MODE=mock .venv/bin/python -m uvicorn backend.main:app --reload

# Gerçek model duman testi:
AI_MODE=real python -m eval.real_smoke
AI_MODE=real python -m tools.smoke_real_model

# Veri araçları:
python -m ai.training.fetch_data list
python -m ai.training.fetch_data coverage
python -m ai.training.prepare_dataset verify --data ai/training/data.yaml
python -m ai.training.train --tier critical --curriculum --dry-run

Mimari Kararlar

  • Mock-first (K4): Her modül kütüphane yoksa mock'a düşer, testler her ortamda yeşil kalır
  • Config-first (K3): Tüm eşik ve sabitler config/settings.py'de, hardcode yok
  • Sözleşme (K5): ai/schema.py YZ ↔ Backend kontratıdır, tek taraflı kırılmaz
  • İki kademe: Normal modda yolov8n (hız), kritik modda yolov8s (doğruluk)
  • Bant verimliliği: Sürekli açık musluk değil, A–E koşul motoruyla ihtiyaç-bazlı QoD

Detaylı mimari: ARCHITECTURE.md · Kol kuralları: /docs

Releases

Packages

Contributors

Languages