Đánh giá mô hình nhận dạng đối tượng

Deep Learning cho Ảnh với PyTorch

Michal Oleszak

Machine Learning Engineer

Phân loại và định vị

định vị đối tượng

  • Đầu ra 1: Phân loại (vd: mèo)
Deep Learning cho Ảnh với PyTorch

Phân loại và định vị

định vị đối tượng

  • Đầu ra 1: Phân loại (vd: mèo)
  • Đầu ra 2: Hồi quy hộp giới hạn [x1, y1, x2, y2]
Deep Learning cho Ảnh với PyTorch

Intersection over Union (IoU)

  • Đối tượng quan tâm: đối tượng trong ảnh cần phát hiện (vd: chó)
  • Ground truth box: hộp giới hạn chính xác quanh đối tượng quan tâm
  • Intersection over Union: thước đo mức chồng lấp giữa hai hộp

jaccard

  • IoU = Diện tích Giao / Diện tích Hợp
    • IoU = 0: không chồng lấp; IoU = 1: trùng khít
    • IoU > 0.5: dự đoán tốt
Deep Learning cho Ảnh với PyTorch

IoU trong 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]])
  • Hai tập hộp (x1, y1, x2, y2)

tập 2 hộp

  • Chuyển vector thành tensor 2D
  • Tính IoU
Deep Learning cho Ảnh với PyTorch

Dự đoán hộp giới hạn

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 cho Ảnh với PyTorch

Loại bỏ không cực đại (NMS)

nhiều hộp

Deep Learning cho Ảnh với PyTorch

Loại bỏ không cực đại (NMS)

nhiều hộp

Non-max suppression: kỹ thuật chọn các hộp giới hạn phù hợp nhất

  • Non-max: loại các hộp có điểm tin cậy thấp về chứa đối tượng

  • Suppression: loại các hộp có IoU thấp

Deep Learning cho Ảnh với PyTorch

NMS trong 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 tọa độ hộp giới hạn dạng [N, 4]

  • Scores: tensor điểm tin cậy cho mỗi hộp dạng [N]

  • iou_threshold: ngưỡng từ 0.0 đến 1.0

  • Kết quả: chỉ số các hộp sau lọc

Deep Learning cho Ảnh với PyTorch

Ayo berlatih!

Deep Learning cho Ảnh với PyTorch

Preparing Video For Download...