Оцінювання моделей розпізнавання об'єктів

Глибоке навчання для зображень із PyTorch

Michal Oleszak

Machine Learning Engineer

Класифікація та локалізація

локалізація об'єктів

  • Вихід 1: Класифікація (напр., cat)
Глибоке навчання для зображень із PyTorch

Класифікація та локалізація

локалізація об'єктів

  • Вихід 1: Класифікація (напр., cat)
  • Вихід 2: Регресія рамки [x1, y1, x2, y2]
Глибоке навчання для зображень із PyTorch

Intersection over Union (IoU)

  • Цільовий об'єкт: об'єкт на зображенні, який потрібно виявити (напр., dog)
  • Еталонна рамка: точна обмежувальна рамка навколо цільового об'єкта
  • Intersection over Union: метрика перекриття двох рамок

жаккар

  • IoU = Площа перетину / Площа об'єднання
    • IoU = 0 — немає перекриття, IoU = 1 — повне перекриття
    • IoU >0,5 — гарний прогноз
Глибоке навчання для зображень із PyTorch

IoU у 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]])
  • Два набори рамок (x1, y1, x2, y2)

набір з 2 рамок

  • Перетворіть вектори на 2‑D тензори
  • Обчисліть IoU
Глибоке навчання для зображень із PyTorch

Передбачення обмежувальних рамок

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

Придушення немаксимумів (NMS)

декілька рамок

Глибоке навчання для зображень із PyTorch

Придушення немаксимумів (NMS)

декілька рамок

Придушення немаксимумів: поширений метод вибору найрелевантніших рамок

  • Non-max: відкидаємо рамки з низькою ймовірністю об'єкта

  • Suppression: відкидаємо рамки з низьким IoU

Глибоке навчання для зображень із PyTorch

NMS у 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: тензори з координатами рамок форми [N, 4]

  • Scores: тензор з оцінкою впевненості для кожної рамки форми [N]

  • iou_threshold: поріг між 0,0 і 1,0

  • Вихід: індекси відфільтрованих рамок

Глибоке навчання для зображень із PyTorch

Давайте потренуємось!

Глибоке навчання для зображень із PyTorch

Preparing Video For Download...