← Projelere dön

Spor Sahası Video Analizi

Rol
Freelance geliştirici
Müşteri
Fransa merkezli spor teknolojisi girişimi
Dönem
2026 - Devam
YOLOByteTrackOpenCVffmpegStreamlit
Gol anı otomatik tespit edildi ve zaman damgasıyla işaretlendi: sistem çıktısından bir kare

Problem

Halı saha işletmeleri maçları tek sabit geniş açı kamerayla kaydediyor. Oyuncuların istediği ise saatlerce ham kayıt değil, kendi golünün 15 saniyelik klibi. Bunu insan eliyle kurgulamak ölçeklenmiyor.

Çözüm

Tek kameradan oyuncu ve top tespiti, kalıcı kimlikli takip, top yörüngesinden olay çıkarımı ve olayların etrafından otomatik klip kesimi yapan uçtan uca bir hat. Çıktı: işaretlenmiş maç videosu, olay bazlı klipler ve birleşik highlight reel.

1
Kamera · sabit geniş açı
3
Çıktı türü · video, klip, reel
H.264
Tarayıcı uyumlu kodlama
YOLOByteTrackOpenCVPyTorch supervisionscikit-learnffmpegStreamlit

Tespit, takip ve olay çıkarımı

Oyuncu tespiti ve kalıcı kimlik atama (ByteTrack)
Şut adayı olayı: top yörüngesindeki hız artışından tespit
Forma renginden KMeans ile takım sınıflandırma
Top yörüngesi izleme: kare arası konum bağlantısı
Sistem çıktısı, hareket halinde: oyuncu takibi, top yörüngesi ve şut adayı bandı maç videosunun üzerine işlenmiş

Hat

  • Tespit: YOLO (Ultralytics) ile oyuncu ve top
  • Takip: ByteTrack ile kalıcı oyuncu kimlikleri
  • Olay: Top yörüngesindeki ani hız artışından şut/gol adayı
  • Kurgu: Olay etrafından klip kesimi + birleşik reel
  • Çıktı: ffmpeg ile tarayıcı uyumlu H.264
  • Arayüz: Streamlit ile sunulabilir demo

Mühendislik notu

Örnek videolar elde/gimbalde çekildiği için kale bölgesi kalibrasyonu yapılamadı; bu yüzden olaylar "gol" yerine şut adayı sezgiseliyle işaretleniyor. Olay tespiti fonksiyonu kale bölgesi parametresi kabul edecek şekilde yazıldı: prodüksiyondaki sabit kamera kurulumunda aynı kod tam gol tespitine dönüşüyor. Sınırı baştan tanımlamak, sonradan mimariyi değiştirmekten ucuz.

YOLOByteTrackOpenCV PyTorchsupervisionscikit-learnffmpegStreamlit
def sut_adayi(hiz_gecmisi, esik_carpan=2.5):
    """Filtreli top hizinda ani sicrama = sut adayi.
    'Gol' demiyoruz: tek kamerayla kale duzlemini goremeyiz,
    o yuzden cikti durustce 'aday' olarak etiketlenir."""
    taban = median(hiz_gecmisi[:-3])          # yakin gecmisin tipik hizi
    simdiki = mean(hiz_gecmisi[-3:])          # son karelerdeki hiz
    return simdiki > esik_carpan * max(taban, MIN_HIZ)
Sadeleştirilmiş temsili kod: filtreli top hızında şut adayı kontrolü