Ohraničující boxy

Deep Learning pro obrázky s PyTorchem

Michal Oleszak

Machine Learning Engineer

Co je rozpoznávání objektů?

Rozpoznávání objektů identifikuje objekty na obrázcích:

  • Poloha každého objektu v obrázku (ohraničující box)

  • Třídní label každého objektu

Aplikace: sledování, lékařská diagnostika, dopravní management, sportovní analytika

  • V tomto videu: anotace pomocí ohraničujících boxů
  • V dalších videích: vyhodnocení a modely

 

detekce jízdy autem

Deep Learning pro obrázky s PyTorchem

Reprezentace ohraničujícího boxu

  • Obdélníkový box popisující prostorovou polohu objektu
  • Anotace trénovacích dat a výstupy modelu
  • Referenční ohraničující box: přesná poloha objektu

souřadnice ohraničujícího boxu

Deep Learning pro obrázky s PyTorchem

Reprezentace ohraničujícího boxu

  • Obdélníkový box popisující prostorovou polohu objektu
  • Anotace trénovacích dat a výstupy modelu
  • Referenční ohraničující box: přesná poloha objektu
  • Souřadnice ohraničujícího boxu:
    • Levý horní a pravý dolní roh
    • Ohraničující box = (x1, y1, x2, y2)
    • x1 = x_min, x2 = x_max, ...

souřadnice ohraničujícího boxu

Deep Learning pro obrázky s PyTorchem

Pixely a souřadnice

souřadnice boxu

  • Souřadnice: x – číslo sloupce, y – číslo řádku
  • Počátek: (0, 0) – levý horní roh
Deep Learning pro obrázky s PyTorchem

Převod pixelů na tensory

Transformace pomocí ToTensor()

  • Typ tensoru:
    • torch.float
  • Rozsah škálovaného tensoru:
    • [0.0, 1.0]
import torchvision.transforms as transforms

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

Transformace pomocí PILToTensor()

  • Typ tensoru:
    • torch.uint8 (8bitové celé číslo)
  • Rozsah neškálovaného tensoru:
    • [0, 255]
import torchvision.transforms as transforms
transform = transforms.Compose([
            transforms.Resize(224),
            transforms.PILToTensor()
            ])
image_tensor = transform(image)
Deep Learning pro obrázky s PyTorchem

Vykreslení ohraničujícího boxu

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)
  • Import draw_bounding_boxes
  • Uložení souřadnic do tensoru
  • Unsqueeze na dvě dimenze
  • Transformace na obrázek a vykreslení

kočka s boxem

Deep Learning pro obrázky s PyTorchem

Pojďme si procvičit!

Deep Learning pro obrázky s PyTorchem

Preparing Video For Download...