Ограничивающие рамки

Глубокое обучение для работы с изображениями на 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
  • Соберите координаты в тензор
  • Добавьте измерение с помощью unsqueeze
  • Преобразуйте в изображение и постройте график

кот с ограничивающей рамкой

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

Давайте потренируемся!

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

Preparing Video For Download...