Region proposal-netwerken met Faster R-CNN

Deep Learning voor afbeeldingen met PyTorch

Michal Oleszak

Machine Learning Engineer

Regio’s en anchor boxes

  • Regio: een kleiner beeldgebied met mogelijke objecten, gegroepeerd op visuele kenmerken

regio-voorstellen

Deep Learning voor afbeeldingen met PyTorch

Regio’s en anchor boxes

  • Regio: een kleiner beeldgebied met mogelijke objecten, gegroepeerd op visuele kenmerken

regio-voorstellen

  • Anchor box: vooraf gedefinieerde bbox-sjablonen met verschillende groottes en vormen
Deep Learning voor afbeeldingen met PyTorch

Faster R-CNN-model

Faster R-CNN: een geavanceerde versie van R-CNN

rcnn-lagen

  • Backbone (convolutielagen)
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning voor afbeeldingen met PyTorch

Faster R-CNN-model

Faster R-CNN: een geavanceerde versie van R-CNN rcnn-lagen

  • Backbone (convolutielagen)
  • Region proposal network (RPN) voor bbox-voorstellen
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning voor afbeeldingen met PyTorch

Faster R-CNN-model

Faster R-CNN: een geavanceerde versie van R-CNN

rcnn-lagen

  • Convolutielagen (backbone): feature maps
  • Region proposal network (RPN): bbox-voorstellen
  • Classifier en regressor voor voorspellingen
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning voor afbeeldingen met PyTorch

Region proposal network (RPN)

architectuur van region proposal network

Deep Learning voor afbeeldingen met PyTorch

Region proposal network (RPN)

architectuur van region proposal network

  • Anchor generator:
    • Genereert anchor boxes met verschillende groottes en beeldverhoudingen
Deep Learning voor afbeeldingen met PyTorch

Region proposal network (RPN)

architectuur van region proposal network

  • Anchor generator:
    • Genereert anchor boxes met verschillende groottes en beeldverhoudingen
  • Classifier en regressor:
    • Voorspellen of de box een object bevat en geven coördinaten
Deep Learning voor afbeeldingen met PyTorch

Region proposal network (RPN)

architectuur van region proposal network

  • Anchor generator:
    • Genereert anchor boxes met verschillende groottes en beeldverhoudingen
  • Classifier en regressor:
    • Voorspellen of de box een object bevat en geven coördinaten
  • Region of interest (RoI) pooling:
    • Schalen RPN-voorstel naar vaste grootte voor fully connected-lagen
Deep Learning voor afbeeldingen met PyTorch

RPN in 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, )
Deep Learning voor afbeeldingen met PyTorch

Fast R-CNN-verliesfuncties

  • RPN-classificatieloss:
    • regio bevat object of niet
    • binaire cross-entropy
    • rpn_cls_criterion = nn.BCEWithLogitsLoss()

 

  • RPN-boxregressieloss:
    • bbox-coördinaten
    • mean squared error
    • rpn_reg_criterion = nn.MSELoss()
  • R-CNN-classificatieloss:
    • meerdere objectklassen
    • cross-entropy
    • rcnn_cls_criterion = nn.CrossEntropyLoss()

 

  • R-CNN-boxregressieloss:
    • bbox-coördinaten
    • mean squared error
    • rcnn_reg_criterion = nn.MSELoss()
Deep Learning voor afbeeldingen met PyTorch

Faster R-CNN in 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, )
Deep Learning voor afbeeldingen met PyTorch

Faster R-CNN in PyTorch

Voorgetrainde Faster R-CNN laden

from torchvision.models.detection.faster_rcnn import FastRCNNPredictor

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

Aantal klassen en inputgrootte classifier bepalen

num_classes = 2

in_features = model.roi_heads.box_predictor.cls_score.in_features

Classifier van het model vervangen door één met het gewenste aantal klassen

model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)
Deep Learning voor afbeeldingen met PyTorch

Laten we oefenen!

Deep Learning voor afbeeldingen met PyTorch

Preparing Video For Download...