Bu proje, canlı kamera görüntüsünü alıp yapay zeka ile analiz etme, insansız çözüm üretme gibi
konuların taslağını ele alır. Öncelikle gerekli ortam hazırlanır, ardından model eğitimi ve test aşamaları ele alınır.
🚗 Simülasyon Taslağı: Trafik Işıkları ve Sanal Araç Hareketi
🎯 Amaç:
Trafik ışıkları ile donatılmış harita üzerinde, başlangıç ve varış noktaları belirlenen bir sanal aracın rotası boyunca:
- Trafik ışıklarına tepkisinin ölçülmesi
- Trafik yoğunluğu seviyelerine göre hareket simülasyonu yapılması
🧩 Bileşenler:
1. Harita (Leaflet, Mapbox vb.)
2. Araç (ikon ile temsil edilen simüle edilmiş nesne)
3. Trafik Işıkları (sabit konumda ışık nesneleri)
4. Simülasyon Kontrolleri (butonlar ve seçim kutuları)
🧭 Fonksiyonellik:
- [Araç Ekle] butonu ile haritaya sanal araç yerleştirilir.
- Başlangıç ve varış noktası kullanıcı tarafından seçilir.
- Sistem, bu iki nokta arasında en kısa rotayı hesaplar (Dijkstra veya A* algoritması).
- Işıkların sabit konumları sisteme önceden tanımlanır.
- Araç rotasında ışık varsa, ışığın durumuna göre:
- Kırmızı ise durur
- Yeşil ise geçer
- Sarı ise dur-kalk (gecikmeli)
- Işıkların tespit mesafesi (örneğin 20 metre) ile durma veya geçme kararı alınır.
🌐 Trafik Yoğunluğu Seçimi:
- Hafif: Araç akıcı ilerler.
- Orta: Zaman zaman kısa beklemeler olur.
- Yoğun: Araç sık sık duraklar ve toplam süre uzar.
🔄 Akış:
1. Harita yüklendiğinde trafik ışıkları gösterilir.
2. Araç eklendikten sonra kullanıcı başlangıç/varış seçer.
3. Sistem yol planlamasını yapar ve trafik yoğunluğuna göre zamanlama belirler.
4. Simülasyon başlatıldığında araç, trafik ışıklarına ve yoğunluğa göre adım adım hareket eder.
5. Simülasyon sonunda hareket süresi ve ışık uyumluluğu raporlanır.
🔧 Teknik Altyapı:
- JavaScript (Leaflet.js / Mapbox.js)
- Yoğunluk modellemesi: setTimeout + random gecikmeler
- Işık renk döngüsü: setInterval ile sürekli güncellenen durum (kırmızı-yeşil-sarı)
- Araç: bir marker + hareketli animasyon (polyline animasyonu)
📊 Ölçüm ve Gözlem:
- Işık kontrol algoritması başarılı mı?
- Tespit mesafesi uygun mu?
- Yoğunluk seviyesi değiştirildiğinde tepki değişiyor mu?
- Toplam yol süresi farklı senaryolarda nasıl etkileniyor?
──────────────────────────────────────────────────────────────
📘 Detaylı Proje Taslağı: Canlı Görüntü İşleme (WebSocket + RTC)
1. 🎯 Genel Amaç
Tarayıcıdan gelen canlı kamera görüntüsü:
- WebRTC ile tarayıcıda alınır
- WebSocket üzerinden işlenmek üzere sunucuya gönderilir
- YOLOv8 modeli ile işlenir
- Hem ham hem işlenmiş görüntü, eş zamanlı olarak tarayıcıda gösterilir
2. 🧠 Ana Bileşenler
Katman Teknoloji Açıklama
Tarayıcı HTML5 + JS + WebRTC Kamera erişimi, canlı stream, WebSocket istemcisi
Web Sunucusu WebSocket Frame alır, işler, geri döner
Görüntü İşleme OpenCV + YOLOv8 Frame işlenir, sonuç döner
Model yolov8n.pt Eğitilmiş YOLO modeli
İletişim WebSocket + RTC Düşük gecikmeli çift yönlü bağlantı
3. 🔄 Akış Diyagramı (Basitleştirilmiş)
[Tarayıcı Kamera (WebRTC)]
↓ (frame, WS)
[WebSocket Sunucu]
↓
[YOLOv8 ile İşleme]
↓
[İşlenmiş Görüntü → base64]
↓ (WS)
[Tarayıcıya Gösterim]
4. 🔧 WebSocket Yapısı
server/
└── server.py ← WebSocket sunucusu, WS mesaj alıcı
└── detection.py ← YOLO model yükleyici, işlemci
Gerekenler:
pip install websockets opencv-python ultralytics
5. 💻 Tarayıcı Tarafı
- Kamera: WebRTC (getUserMedia())
- Frame: canvas üzerinden alınır
- Gönderim: base64, socket.emit()
- Alım: 'processed_frame' event’i
6. 🧪 YOLOv8 Kullanımı
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
result = model(frame)
annotated = result[0].plot()
Gecikmeyi azaltmak için:
- stream=False
- çözünürlük küçük tutulmalı
- JPEG sıkıştırma önerilir
7. ⚠️ Olası Sorunlar
Sorun Çözüm
CORS hatası Flask-CORS middleware gerekir
WebSocket bağlantısı yok HTTPS + port açık olmalı
Kamera açılmıyor HTTPS bağlantısı zorunlu
Yavaşlık / donma FPS ve çözünürlük düşürülmeli
RAM / bellek sızıntısı cv2 imencode ve gc.collect() kullanılmalı
Model yolu hatalı Doğru path: detection/real/yolov8n.pt
Görsel boyutu çok büyük Görüntü yeniden boyutlandırılmalı
8. 🔐 Apache Üzerinde Yayın (Nginx Yerine)
WebSocket ile gerçek zamanlılık sağlanır.
Apache üzerinden yaymak için önerilen yapı:
- WebSocket, WebRTC ile birlikte çalışacak
- Apache, gelen WebSocket isteklerini yönlendirecek
- WebSocket için şu modüller etkinleştirilir:
sudo a2enmod proxy proxy_http proxy_wstunnel
Apache ayarı (/etc/apache2/sites-available/000-default.conf):
ServerName www.ataus.com.tr
ProxyPreserveHost On
ProxyPass /socket.io ws://localhost:5000/socket.io
ProxyPassReverse /socket.io ws://localhost:5000/socket.io
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
HTTPS için:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d www.ataus.com.tr