Hodnocení modelů rozpoznávání objektů

Deep Learning pro obrázky s PyTorchem

Michal Oleszak

Machine Learning Engineer

Klasifikace a lokalizace

lokalizace objektů

  • Výstup 1: Klasifikace (např. kočka)
Deep Learning pro obrázky s PyTorchem

Klasifikace a lokalizace

lokalizace objektů

  • Výstup 1: Klasifikace (např. kočka)
  • Výstup 2: Regrese ohraničujícího rámečku [x1, y1, x2, y2]
Deep Learning pro obrázky s PyTorchem

Průnik přes sjednocení (IoU)

  • Objekt zájmu: objekt v obraze, který chceme detekovat (např. pes)
  • Referenční rámeček: přesný ohraničující rámeček kolem objektu zájmu
  • Průnik přes sjednocení: metrika míry překrytí dvou rámečků

jaccard

  • IoU = plocha průniku / plocha sjednocení
    • IoU = 0 žádné překrytí, IoU = 1 dokonalé překrytí
    • IoU > 0,5 je dobrá predikce
Deep Learning pro obrázky s PyTorchem

IoU v 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]])
  • Dvě sady rámečků (x1, y1, x2, y2)

sada 2 rámečků

  • Převod vektorů na 2D tensory
  • Výpočet IoU
Deep Learning pro obrázky s PyTorchem

Predikce ohraničujících rámečků

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 pro obrázky s PyTorchem

Potlačení nemaximálních hodnot (NMS)

více rámečků

Deep Learning pro obrázky s PyTorchem

Potlačení nemaximálních hodnot (NMS)

více rámečků

Potlačení nemaximálních hodnot: technika výběru nejrelevantnějších ohraničujících rámečků

  • Non-max: zahazování rámečků s nízkou mírou spolehlivosti

  • Suppression: zahazování rámečků s nízkým IoU

Deep Learning pro obrázky s PyTorchem

NMS v 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: tensory se souřadnicemi rámečků tvaru [N, 4]

  • Scores: tensor s mírou spolehlivosti každého rámečku tvaru [N]

  • iou_threshold: prahová hodnota v rozsahu 0,0 až 1,0

  • Výstup: indexy filtrovaných ohraničujících rámečků

Deep Learning pro obrázky s PyTorchem

Pojďme si procvičit!

Deep Learning pro obrázky s PyTorchem

Preparing Video For Download...