YOLO ve modern detection mimarileri
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₂, …
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 çizm…
💡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).
Bağlantılı Konular