Evaluarea modelelor de recunoaștere a obiectelor

Deep Learning pentru imagini cu PyTorch

Michal Oleszak

Machine Learning Engineer

Clasificare și localizare

localizare obiecte

  • Ieșire 1: Clasificare (ex., pisică)
Deep Learning pentru imagini cu PyTorch

Clasificare și localizare

localizare obiecte

  • Ieșire 1: Clasificare (ex., pisică)
  • Ieșire 2: Regresie cadru de delimitare [x1, y1, x2, y2]
Deep Learning pentru imagini cu PyTorch

Intersecție peste reuniune (IoU)

  • Obiect de interes: obiectul din imagine pe care dorim să-l detectăm (ex., câine)
  • Cadru de referință: cadrul de delimitare precis în jurul obiectului de interes
  • Intersecție peste reuniune: metrică pentru măsurarea suprapunerii dintre două cadre

jaccard

  • IoU = Aria intersecției / Aria reuniunii
    • IoU = 0 fără suprapunere, IoU = 1 suprapunere perfectă
    • IoU > 0.5 reprezintă o predicție bună
Deep Learning pentru imagini cu PyTorch

IoU în 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]])
  • Două seturi de cadre (x1, y1, x2, y2)

set de 2 cadre

  • Convertirea vectorilor în tensori 2-D
  • Calcularea IoU
Deep Learning pentru imagini cu PyTorch

Predicția cadrelor de delimitare

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 pentru imagini cu PyTorch

Supresie non-maximă (NMS)

cutii multiple

Deep Learning pentru imagini cu PyTorch

Supresie non-maximă (NMS)

cutii multiple

Supresia non-maximă: tehnică de selecție a celor mai relevante cadre de delimitare

  • Non-max: eliminarea cadrelor cu scor de încredere scăzut

  • Supresie: eliminarea cadrelor cu IoU scăzut

Deep Learning pentru imagini cu PyTorch

Supresie non-maximă în 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: tensori cu coordonatele cadrelor de delimitare, forma [N, 4]

  • Scores: tensor cu scorul de încredere pentru fiecare cadru, forma [N]

  • iou_threshold: pragul între 0.0 și 1.0

  • Rezultat: indicii cadrelor de delimitare filtrate

Deep Learning pentru imagini cu PyTorch

Să exersăm!

Deep Learning pentru imagini cu PyTorch

Preparing Video For Download...