Оценка моделей распознавания объектов

Глубокое обучение для работы с изображениями на PyTorch

Michal Oleszak

Machine Learning Engineer

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

object localization

  • Выход 1: классификация (например, кошка)
Глубокое обучение для работы с изображениями на PyTorch

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

object localization

  • Выход 1: классификация (например, кошка)
  • Выход 2: регрессия ограничивающего прямоугольника [x1, y1, x2, y2]
Глубокое обучение для работы с изображениями на PyTorch

Пересечение над объединением (IoU)

  • Целевой объект: объект на изображении, который нужно обнаружить (например, собака)
  • Эталонный прямоугольник: точный ограничивающий прямоугольник вокруг целевого объекта
  • Пересечение над объединением: метрика для измерения перекрытия двух прямоугольников

jaccard

  • 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)

set of 2 boxes

  • Преобразование векторов в двумерные тензоры
  • Вычисление 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)

multiple boxes

Глубокое обучение для работы с изображениями на PyTorch

Немаксимальное подавление (NMS)

multiple boxes

Немаксимальное подавление: распространённый метод выбора наиболее релевантных ограничивающих прямоугольников

  • Немаксимальное: отбрасывание прямоугольников с низкой уверенностью в наличии объекта

  • Подавление: отбрасывание прямоугольников с низким значением IoU

Глубокое обучение для работы с изображениями на PyTorch

Немаксимальное подавление в 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...