Nesne tanıma modellerini değerlendirme

PyTorch ile Görüntüler için Deep Learning

Michal Oleszak

Machine Learning Engineer

Sınıflandırma ve yerelleştirme

nesne yerelleştirme

  • Çıktı 1: Sınıflandırma (ör. kedi)
PyTorch ile Görüntüler için Deep Learning

Sınıflandırma ve yerelleştirme

nesne yerelleştirme

  • Çıktı 1: Sınıflandırma (ör. kedi)
  • Çıktı 2: Sınırlayıcı kutu regresyonu [x1, y1, x2, y2]
PyTorch ile Görüntüler için Deep Learning

Kesişim/Birleşim (IoU)

  • İlgili nesne: görüntüde tespit etmek istediğimiz nesne (ör. köpek)
  • Gerçek değer kutusu: ilgili nesneyi doğru saran sınırlayıcı kutu
  • Kesişim/Birleşim (IoU): iki kutunun örtüşmesini ölçen metrik

jaccard

  • IoU = Kesişim Alanı / Birleşim Alanı
    • IoU = 0 örtüşme yok, IoU = 1 tam örtüşme
    • IoU >0.5 iyi bir tahmindir
PyTorch ile Görüntüler için Deep Learning

PyTorch'ta IoU

bbox1 = [50, 50, 150, 150]
bbox2 = [100, 100, 200, 200]


bbox1 = torch.tensor(bbox1).unsqueeze(0) bbox2 = torch.tensor(bbox2).unsqueeze(0)
from torchvision.ops import box_iou

iou = box_iou(bbox1, bbox2)
print(iou)
tensor([[0.1429]])
  • İki kutu kümesi (x1, y1, x2, y2)

2 kutu kümesi

  • Vektörleri 2-B tensörlere dönüştürün
  • IoU hesaplayın
PyTorch ile Görüntüler için Deep Learning

Sınırlayıcı kutuları öngörme

model.eval()
with torch.no_grad():

output = model(input_image)
print(output)
[{'boxes': tensor([[ 42.8553, 271.9481, 180.6003, 346.7082],
                  [191.6016,  80.4759, 247.8009, 387.5475], ....),
'scores': tensor([1.0000, 1.0000, 0.9998, ... ]),
'labels': tensor([18,  1, 20, 18, 18, 18 ...])
}]
boxes = output[0]["boxes"]

scores = output[0]["scores"]
PyTorch ile Görüntüler için Deep Learning

Non-max suppression (NMS)

birden çok kutu

PyTorch ile Görüntüler için Deep Learning

Non-max suppression (NMS)

birden çok kutu

Non-max suppression: en ilgili sınırlayıcı kutuları seçmek için yaygın bir teknik

  • Non-max: nesne içerme güveni düşük kutuları elemek

  • Suppression: IoU'su düşük kutuları elemek

PyTorch ile Görüntüler için Deep Learning

PyTorch'ta non-max suppression

from torchvision.ops import nms


box_indices = nms( boxes=boxes, scores=scores, iou_threshold=0.5, ) print(box_indices)
tensor([ 0,   1,   2,   8])
filtered_boxes = boxes[box_indices]
  • Boxes: şekli [N, 4] olan sınırlayıcı kutu koordinat tensörleri

  • Scores: her kutu için güven puanı, şekli [N] olan tensör

  • iou_threshold: 0.0 ile 1.0 arasında eşik

  • Çıktı: filtrelenen kutuların indisleri

PyTorch ile Görüntüler için Deep Learning

Hadi pratik yapalım!

PyTorch ile Görüntüler için Deep Learning

Preparing Video For Download...