Ramki ograniczające

Głębokie uczenie dla obrazów z PyTorch

Michal Oleszak

Machine Learning Engineer

Czym jest rozpoznawanie obiektów?

Rozpoznawanie obiektów identyfikuje obiekty na obrazach:

  • Lokalizacja każdego obiektu (ramka ograniczająca)

  • Etykieta klasy każdego obiektu

Zastosowania: nadzór, diagnostyka medyczna, zarządzanie ruchem, analiza sportowa

  • W tym wideo: adnotacje z ramkami ograniczającymi
  • W kolejnych wideo: ewaluacja i modele

 

detekcja obiektów w jeździe

Głębokie uczenie dla obrazów z PyTorch

Reprezentacja ramki ograniczającej

  • Prostokąt opisujący przestrzenną lokalizację obiektu
  • Adnotacje danych treningowych i wyniki modelu
  • Ramka referencji: dokładna lokalizacja obiektu

współrzędne ramki ograniczającej

Głębokie uczenie dla obrazów z PyTorch

Reprezentacja ramki ograniczającej

  • Prostokąt opisujący przestrzenną lokalizację obiektu
  • Adnotacje danych treningowych i wyniki modelu
  • Ramka referencji: dokładna lokalizacja obiektu
  • Współrzędne ramki ograniczającej:
    • Lewy górny i prawy dolny róg
    • Ramka = (x1, y1, x2, y2)
    • x1 = x_min, x2 = x_max, ...

współrzędne ramki ograniczającej

Głębokie uczenie dla obrazów z PyTorch

Piksele i współrzędne

współrzędne ramki

  • Współrzędne: x – numer kolumny, y – numer wiersza
  • Punkt odniesienia: (0, 0) – lewy górny róg
Głębokie uczenie dla obrazów z PyTorch

Konwersja pikseli na tensory

Przekształcanie za pomocą ToTensor()

  • Typ tensora:
    • torch.float
  • Zakres tensora (po skalowaniu):
    • [0.0, 1.0]
import torchvision.transforms as transforms

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

Przekształcanie za pomocą PILToTensor()

  • Typ tensora:
    • torch.uint8 (8-bitowa liczba całkowita)
  • Zakres tensora (bez skalowania):
    • [0, 255]
import torchvision.transforms as transforms
transform = transforms.Compose([
            transforms.Resize(224),
            transforms.PILToTensor()
            ])
image_tensor = transform(image)
Głębokie uczenie dla obrazów z PyTorch

Rysowanie ramki ograniczającej

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)
  • Importowanie draw_bounding_boxes
  • Zebranie współrzędnych w tensor
  • Rozszerzenie do dwóch wymiarów
  • Przekształcenie na obraz i wizualizacja

kot z ramką

Głębokie uczenie dla obrazów z PyTorch

Czas na ćwiczenia!

Głębokie uczenie dla obrazów z PyTorch

Preparing Video For Download...