Propozycje regionów sieci w Faster R-CNN

Głębokie uczenie dla obrazów z PyTorch

Michal Oleszak

Machine Learning Engineer

Regiony i ramki kotwiczne

  • Region: mniejszy obszar obrazu mogący zawierać obiekty zainteresowania, grupowany według cech wizualnych

propozycje regionów

Głębokie uczenie dla obrazów z PyTorch

Regiony i ramki kotwiczne

  • Region: mniejszy obszar obrazu mogący zawierać obiekty zainteresowania, grupowany według cech wizualnych

propozycje regionów

  • Ramka kotwiczna: predefiniowany szablon ramki ograniczającej o różnych rozmiarach i kształtach
Głębokie uczenie dla obrazów z PyTorch

Model Faster R-CNN

Faster R-CNN: zaawansowana wersja R-CNN

warstwy rcnn

  • Szkielet (warstwy splotowe)
1 Edward Raff. 2022. Inside Deep Learning.
Głębokie uczenie dla obrazów z PyTorch

Model Faster R-CNN

Faster R-CNN: zaawansowana wersja R-CNN warstwy rcnn

  • Szkielet (warstwy splotowe)
  • Sieć propozycji regionów (RPN) do propozycji ramek ograniczających
1 Edward Raff. 2022. Inside Deep Learning.
Głębokie uczenie dla obrazów z PyTorch

Model Faster R-CNN

Faster R-CNN: zaawansowana wersja R-CNN

warstwy rcnn

  • Warstwy splotowe (szkielet): mapy cech
  • Sieć propozycji regionów (RPN): propozycje ramek ograniczających
  • Klasyfikator i regresor do generowania predykcji
1 Edward Raff. 2022. Inside Deep Learning.
Głębokie uczenie dla obrazów z PyTorch

Sieć propozycji regionów (RPN)

architektura sieci propozycji regionów

Głębokie uczenie dla obrazów z PyTorch

Sieć propozycji regionów (RPN)

architektura sieci propozycji regionów

  • Generator kotwic:
    • Generuje zestaw ramek kotwicznych o różnych rozmiarach i proporcjach
Głębokie uczenie dla obrazów z PyTorch

Sieć propozycji regionów (RPN)

architektura sieci propozycji regionów

  • Generator kotwic:
    • Generuje zestaw ramek kotwicznych o różnych rozmiarach i proporcjach
  • Klasyfikator i regresor:
    • Przewiduje, czy ramka zawiera obiekt, i podaje współrzędne
Głębokie uczenie dla obrazów z PyTorch

Sieć propozycji regionów (RPN)

architektura sieci propozycji regionów

  • Generator kotwic:
    • Generuje zestaw ramek kotwicznych o różnych rozmiarach i proporcjach
  • Klasyfikator i regresor:
    • Przewiduje, czy ramka zawiera obiekt, i podaje współrzędne
  • Pooling regionów zainteresowania (RoI):
    • Zmienia rozmiar propozycji RPN do stałego rozmiaru dla warstw w pełni połączonych
Głębokie uczenie dla obrazów z PyTorch

RPN w PyTorch

from torchvision.models.detection.rpn import AnchorGenerator


anchor_generator = AnchorGenerator( sizes=((32, 64, 128),), aspect_ratios=((0.5, 1.0, 2.0),), )
from torchvision.ops import MultiScaleRoIAlign


roi_pooler = MultiScaleRoIAlign( featmap_names=["0"], output_size=7, sampling_ratio=2, )
Głębokie uczenie dla obrazów z PyTorch

Funkcje straty Fast R-CNN

  • Strata klasyfikacji RPN:
    • czy region zawiera obiekt
    • binarna entropia krzyżowa
    • rpn_cls_criterion = nn.BCEWithLogitsLoss()

 

  • Strata regresji ramek RPN:
    • współrzędne ramki ograniczającej
    • błąd średniokwadratowy
    • rpn_reg_criterion = nn.MSELoss()
  • Strata klasyfikacji R-CNN:
    • wiele klas obiektów
    • entropia krzyżowa
    • rcnn_cls_criterion = nn.CrossEntropyLoss()

 

  • Strata regresji ramek R-CNN:
    • współrzędne ramki ograniczającej
    • błąd średniokwadratowy
    • rcnn_reg_criterion = nn.MSELoss()
Głębokie uczenie dla obrazów z PyTorch

Faster R-CNN w PyTorch

from torchvision.models.detection import FasterRCNN


backbone = torchvision.models.mobilenet_v2(weights="DEFAULT").features
backbone.out_channels = 1280
model = FasterRCNN( backbone=backbone, num_classes=num_classes, rpn_anchor_generator=anchor_generator, box_roi_pool=roi_pooler, )
Głębokie uczenie dla obrazów z PyTorch

Faster R-CNN w PyTorch

Wczytanie wstępnie wytrenowanego modelu Faster R-CNN

from torchvision.models.detection.faster_rcnn import FastRCNNPredictor

model = torchvision.models.detection.fasterrcnn_resnet50_fpn(weights="DEFAULT")

Definicja liczby klas i rozmiaru wejścia klasyfikatora

num_classes = 2

in_features = model.roi_heads.box_predictor.cls_score.in_features

Zastąpienie klasyfikatora modelu wersją z żądaną liczbą klas

model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)
Głębokie uczenie dla obrazów z PyTorch

Czas na ćwiczenia!

Głębokie uczenie dla obrazów z PyTorch

Preparing Video For Download...