YOLO ve modern detection mimarileri
Önce bunlara göz at
30 saniyede özet · Ne öğreneceksin
Bir fotoğrafa bakıp 'burada bir kedi var' demek kolay — peki kedi tam olarak nerede? Nesne tespiti (object detection), görüntüdeki nesneleri hem sınıflandırır hem de konumlandırır. Sürücüsüz araçlardan tıbbi tanıya, bu teknoloji makinelere 'görmeyi' öğretiyor.
Sınıflandırma: Görüntüde ne var? (tek etiket)
Sınıflandırma
Nesne Tespiti
Bounding box: Nesneyi çevreleyen dikdörtgen — (x, y, width, height) veya (x₁, y₁, x₂, y₂) …
IoU = |A ∩ B| / |A ∪ B|A tahmin edilen bounding box, B ground truth. IoU=1 mükemmel örtüşme, IoU=0 hiç örtüşme yok. mAP hesaplamasında farklı IoU eşikleri kullanılır (0.5, 0.75, vb.).
🎪YOLO: Tek Bakışta Tespit
Geleneksel yöntemler görüntüyü binlerce pencereyle tarar — sanki bir odada her köşeyi büyüteçle incelemek gibi. YOLO ise tüm odaya bir kez bakıp 'şurada masa, köşede sandalye' der. Görüntüyü grid'e böler, her hücre kendi bölgesindeki nesnelerden sorumludur.
YOLOv1 (2016): Tek geçişte tespit, 45 FPS devrim.
Anchor boxes: Önceden tanımlanmış farklı boyut/oran şablonları. Ağ 'sıfırdan kutu çizme' y…
💡Küçük nesneleri tespit etmek zordur çünkü yüksek seviye feature map'lerde kaybolurlar. FPN ve multi-scale training bu sorunu hafifletir.
Ultralytics YOLOv8 ile nesne tespiti
| 1 | from ultralytics import YOLO |
| 2 | |
| 3 | # Pretrained model yükle |
| 4 | model = YOLO('yolov8n.pt') # nano versiyon, hızlı |
| 5 | |
| 6 | # Görüntüde tespit yap |
| 7 | results = model('sokak.jpg') |
| 8 | |
| 9 | # Sonuçları işle |
| 10 | for result in results: |
| 11 | boxes = result.boxes |
| 12 | for box in boxes: |
| 13 | cls = int(box.cls[0]) # sınıf indeksi |
| 14 | conf = float(box.conf[0]) # güven skoru |
| 15 | xyxy = box.xyxy[0].tolist() # koordinatlar |
| 16 | print(f"{model.names[cls]}: {conf:.2f}") |
torchvision Faster R-CNN ile inference
| 1 | import torchvision |
| 2 | from torchvision.io import read_image |
| 3 | |
| 4 | # Pretrained Faster R-CNN |
| 5 | model = torchvision.models.detection.fasterrcnn_resnet50_fpn( |
| 6 | weights='DEFAULT' |
| 7 | ) |
| 8 | model.eval() |
| 9 | |
| 10 | # Görüntü yükle ve normalize et |
| 11 | img = read_image('trafik.jpg') / 255.0 |
| 12 | |
| 13 | # Tespit yap |
| 14 | with torch.no_grad(): |
| 15 | preds = model([img])[0] |
| 16 | |
| 17 | # IoU > 0.5 olan tespitleri filtrele |
| 18 | for i, score in enumerate(preds['scores']): |
| 19 | if score > 0.5: |
| 20 | print(f"Box: {preds['boxes'][i]}") |
Otonom araçlar: Yaya, araç, trafik işareti tespiti — milisaniye gecikme hayati.
⚠️Nesne tespiti modelleri eğitim verisindeki bias'ı miras alır. Örneğin, belirli ten renklerinde veya aydınlatma koşullarında performans düşebilir. Kritik uygulamalarda kapsamlı test şart.
✦ Quiz
IoU (Intersection over Union) değeri 0.7 ise bu ne anlama gelir?
✦ Quiz
YOLO'nun geleneksel sliding window yöntemlerine göre en büyük avantajı nedir?
✦ Quiz
Feature Pyramid Network (FPN) hangi sorunu çözer?
ℹ️İlgili konular: CNN mimarileri temel oluşturur (cnn), ImageNet pretrained ağırlıklar transfer edilir (imagenet-2012, transfer-learning), feature extraction için boyut indirgeme önemli (boyut-indirgeme).