
Video verisi gün geçtikçe daha yaygın, daha zengin ve işlenmesi daha değerli hale geliyor. Bu yazıda “video analitiği” kavramına giriş yapacağız: klasik yöntemlerin sınırlılıkları, derin öğrenmenin sunduğu avantajlar ve video tabanlı uygulama senaryoları (özellikle futbol maçı özetleme ve güvenlik kamera analitiği). Ayrıca ilerleyen yazılarda ele alacağımız konulara dair kısa bir yol haritası sunacağım.
Video Analitiği Nedir ve Neden Önemli?
Video analitiği, görüntü ve zaman boyutunu içeren veriden anlam çıkarmayı hedefler. Geleneksel yöntemler (arka plan çıkarımı, optik akış, el ile tanımlanmış özellikler) belirli problemlerde işe yarasa da; karmaşık sahneler, çoklu kamera açıları ve ses/metin gibi ek modalitelerle baş etmekte zorlanır. Derin öğrenme; otomatik özellik öğrenme, karmaşık örüntüleri modelleme ve büyük veri ile ölçeklenme avantajları getirir.
Hangi Derin Öğrenme Bileşenleri Kullanılır?
Birkaç temel yapı var:
- CNN (Convolutional Neural Network) — Görüntü karelerinden güçlü uzamsal özellikler çıkarır (ör. top konumu, oyuncu pozisyonu).
- RNN / LSTM — Zaman içindeki bağımlılıkları yakalar; olayların zamanla nasıl şekillendiğini öğrenir (ör. bir pas dizisi golle sonuçlanır mı?).
- Multimodal Fusion — Görüntü + ses + metin kaynaklarını birleştirerek daha zengin sonuçlar elde edilir (ör. tezahürat artışı + yorumcunun “goal” demesi → gol olayı doğrulama).
Örnek Uygulama Alanları
Futbol maç özetleri: SoccerNet benzeri veri setleri kullanılarak, gol, faul, pas gibi olayların otomatik tespiti ve kısa özetlerin oluşturulması. Güvenlik: Şüpheli davranışların erken tespiti, anormallik tespitleri. Medya & İçerik Üretimi: Uzun yayınlardan ilgi çekici kliplerin otomatik çıkarılması.
Teknik Örnek: Kare Çıkarma (OpenCV)
Aşağıdaki örnek, bir videodan kareleri çıkarıp dizinleyerek CNN’e hazırlamak için temel bir pipeline gösteriyor. (Python + OpenCV)
# kare_cevirmek.py
import cv2
import os
def extract_frames(video_path, out_dir, every_n_frames=1):
os.makedirs(out_dir, exist_ok=True)
cap = cv2.VideoCapture(video_path)
idx = 0
saved = 0
while True:
ret, frame = cap.read()
if not ret:
break
if idx % every_n_frames == 0:
fname = os.path.join(out_dir, f"frame_{saved:06d}.jpg")
cv2.imwrite(fname, frame)
saved += 1
idx += 1
cap.release()
return saved
if __name__ == "__main__":
print(extract_frames("sample_match.mp4", "frames", every_n_frames=5))
Teknik Örnek: Basit CNN ile Feature Extraction (PyTorch)
Aşağıda pre-trained bir ResNet kullanıp feature çıkarımı nasıl yapılır gösteriliyor. Bu tipte çıkarılan vektörler daha sonra LSTM’e verilebilir.
# feature_extractor.py
import torch
import torchvision.models as models
import torchvision.transforms as T
from PIL import Image
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = models.resnet50(pretrained=True)
modules = list(model.children())[:-1] # son FC'yi çıkar
feature_extractor = torch.nn.Sequential(*modules).to(device)
feature_extractor.eval()
transform = T.Compose([
T.Resize((224,224)),
T.ToTensor(),
T.Normalize(mean=[0.485,0.456,0.406], std=[0.229,0.224,0.225])
])
def extract_feature(image_path):
img = Image.open(image_path).convert("RGB")
x = transform(img).unsqueeze(0).to(device)
with torch.no_grad():
feat = feature_extractor(x) # shape: (1, 2048, 1, 1)
return feat.squeeze().cpu().numpy()
# örnek kullanım
# feat = extract_feature("frames/frame_000000.jpg")
Nasıl İlerleyeceğiz? (Bu Seri İçin Yol Haritası)
- Yazı 2: CNN ile kare tabanlı özellik çıkarımı — transfer learning + OpenCV pipeline.
- Yazı 3: CNN-LSTM ile olay sınıflandırma — eğitim, class-weight, metrikler.
- Yazı 4: Multimodal fusion — ses ve metin ekleme, zaman senkronizasyonu.
- Uygulama: SoccerNet ile örnek proje + GitHub repo ve Colab notebook.
- 1) Bir test video seti (ör. 10 maçtan kısa klipler) hazırla.
- 2) Kare çıkarma scriptini çalıştır ve ilk 500 kareyi feature extractor ile işle.
- 3) İlk model prototipini (CNN özellikleri + LSTM) küçük bir veri ile dene.
Sık Karşılaşılan Sorunlar ve Kısa Çözümler
- Veri dengesizliği: Class weight, oversampling veya focal loss kullan.
- Zaman senkronizasyonu sorunları: Ses ve görüntüyü kesin zaman damgalarıyla hizala; mümkünse videoların fps bilgisine göre normalleştir.
- Gerçek zamanlılık: Modeli optimize et (quantization / pruning) ve GPU/edge çözümünü planla.
Sonuç
Video analitiği derin öğrenme ile güçlü hale geliyor; ancak pratikte iyi bir pipeline, doğru veri ve ölçme stratejisi gerekiyor. Bu seri boyunca teoriyi kısa tutup uygulamaya odaklanacağım: kod, Colab notebook ve son projede çalıştırılabilir örnekler paylaşacağım. Bir sonraki yazıda “CNN ile karelerden feature extraction ve transfer learning” detaylarını adım adım göreceğiz — takipte kalın.

