边界框

使用 PyTorch 进行图像深度学习

Michal Oleszak

Machine Learning Engineer

什么是目标识别?

目标识别在图像中定位并分类目标:

  • 每个目标的位置(边界框)

  • 每个目标的类别标签

应用:安防、医疗诊断、交通管理、体育分析

  • 本视频:用边界框标注
  • 后续视频:评估与模型

 

行车检测

使用 PyTorch 进行图像深度学习

边界框表示法

  • 用矩形框表示目标的空间位置
  • 既用于训练数据标注,也用于模型输出
  • 真实边界框:精确的目标位置

边界框坐标

使用 PyTorch 进行图像深度学习

边界框表示法

  • 用矩形框表示目标的空间位置
  • 既用于训练数据标注,也用于模型输出
  • 真实边界框:精确的目标位置
  • 边界框坐标:
    • 左上角与右下角
    • 边界框 = (x1, y1, x2, y2)
    • x1 = x_min,x2 = x_max,…

边界框坐标

使用 PyTorch 进行图像深度学习

像素与坐标

框坐标

  • 坐标:x 为列号,y 为行号
  • 原点:(0, 0) 为左上角
使用 PyTorch 进行图像深度学习

将像素转换为张量

使用 ToTensor() 转换

  • 张量类型:
    • torch.float
  • 缩放后取值范围:
    • [0.0, 1.0]
import torchvision.transforms as transforms

transform = transforms.Compose([ transforms.Resize(224), transforms.ToTensor() ]) image_tensor = transform(image)

使用 PILToTensor() 转换

  • 张量类型:
    • torch.uint8(8 位整数)
  • 未缩放取值范围:
    • [0, 255]
import torchvision.transforms as transforms
transform = transforms.Compose([
            transforms.Resize(224),
            transforms.PILToTensor()
            ])
image_tensor = transform(image)
使用 PyTorch 进行图像深度学习

绘制边界框

from torchvision.utils import draw_bounding_boxes


bbox = torch.tensor([x_min, y_min, x_max, y_max]) bbox = bbox.unsqueeze(0)
bbox_image = draw_bounding_boxes( image_tensor, bbox, width=3, colors="red" )
transform = transforms.Compose([ transforms.ToPILImage() ]) pil_image = transform(bbox_image) import matplotlib.pyplot as plt plt.imshow(pil_image)
  • 导入 draw_bounding_boxes
  • 将坐标收集为张量
  • 扩展为二维
  • 转回图像并绘制

带框的猫

使用 PyTorch 进行图像深度学习

Passons à la pratique !

使用 PyTorch 进行图像深度学习

Preparing Video For Download...