评估目标识别模型

使用 PyTorch 进行图像深度学习

Michal Oleszak

Machine Learning Engineer

分类与定位

目标定位

  • 输出 1:分类(如 cat)
使用 PyTorch 进行图像深度学习

分类与定位

目标定位

  • 输出 1:分类(如 cat)
  • 输出 2:边界框回归 [x1, y1, x2, y2]
使用 PyTorch 进行图像深度学习

交并比(IoU)

  • 关注目标:图像中要检测的对象(如 dog)
  • 真实框(Ground truth):围绕关注目标的准确边界框
  • 交并比(IoU):衡量两个框重叠程度的指标

jaccard

  • IoU = 交集面积 / 并集面积
    • IoU = 0 无重叠,IoU = 1 完全重叠
    • IoU >0.5 视为较好预测
使用 PyTorch 进行图像深度学习

PyTorch 中的 IoU

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)

两组框

  • 将向量转为 2D 张量
  • 计算 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)

多个框

非极大值抑制:用于选出最相关边界框的常用技术

  • 非极大值:丢弃置信度低、难以包含目标的框

  • 抑制:丢弃 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 进行图像深度学习

Passons à la pratique !

使用 PyTorch 进行图像深度学习

Preparing Video For Download...