Mengevaluasi model pengenalan objek

Deep Learning untuk Gambar dengan PyTorch

Michal Oleszak

Machine Learning Engineer

Klasifikasi dan pelokalan

pelokalan objek

  • Keluaran 1: Klasifikasi (mis., kucing)
Deep Learning untuk Gambar dengan PyTorch

Klasifikasi dan pelokalan

pelokalan objek

  • Keluaran 1: Klasifikasi (mis., kucing)
  • Keluaran 2: Regresi bounding box [x1, y1, x2, y2]
Deep Learning untuk Gambar dengan PyTorch

Intersection over union (IoU)

  • Objek target: objek pada gambar yang ingin dideteksi (mis., anjing)
  • Kotak ground truth: bounding box akurat mengelilingi objek target
  • Intersection over Union: metrik untuk mengukur tumpang tindih dua kotak

jaccard

  • IoU = Luas Irisan / Luas Gabungan
    • IoU = 0 tidak tumpang tindih, IoU = 1 tumpang tindih sempurna
    • IoU >0,5 adalah prediksi yang baik
Deep Learning untuk Gambar dengan PyTorch

IoU di PyTorch

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]])
  • Dua set kotak (x1, y1, x2, y2)

set 2 kotak

  • Ubah vektor menjadi tensor 2-D
  • Hitung IoU
Deep Learning untuk Gambar dengan PyTorch

Memprediksi bounding box

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"]
Deep Learning untuk Gambar dengan PyTorch

Non-max suppression (NMS)

beberapa kotak

Deep Learning untuk Gambar dengan PyTorch

Non-max suppression (NMS)

beberapa kotak

Non-max suppression: teknik umum untuk memilih bounding box paling relevan

  • Non-max: buang kotak dengan skor kepercayaan rendah untuk memuat objek

  • Suppression: buang kotak dengan IoU rendah

Deep Learning untuk Gambar dengan PyTorch

Non-max suppression di PyTorch

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: tensor berisi koordinat bounding box berdimensi [N, 4]

  • Scores: tensor skor kepercayaan untuk tiap kotak berdimensi [N]

  • iou_threshold: ambang antara 0,0 dan 1,0

  • Keluaran: indeks bounding box terpilih

Deep Learning untuk Gambar dengan PyTorch

Ayo berlatih!

Deep Learning untuk Gambar dengan PyTorch

Preparing Video For Download...