Regionförslag med Faster R-CNN

Djupinlärning för bilder med PyTorch

Michal Oleszak

Machine Learning Engineer

Regioner och ankarboxar

  • Region: ett mindre område i bilden som kan innehålla objekt av intresse, grupperade efter visuella egenskaper

regionförslag

Djupinlärning för bilder med PyTorch

Regioner och ankarboxar

  • Region: ett mindre område i bilden som kan innehålla objekt av intresse, grupperade efter visuella egenskaper

regionförslag

  • Ankarbox: fördefinierade begränsningsboxmallar i olika storlekar och former
Djupinlärning för bilder med PyTorch

Faster R-CNN-modellen

Faster R-CNN: en avancerad version av R-CNN

rcnn-lager

  • Ryggrad (faltningslager)
1 Edward Raff. 2022. Inside Deep Learning.
Djupinlärning för bilder med PyTorch

Faster R-CNN-modellen

Faster R-CNN: en avancerad version av R-CNN rcnn-lager

  • Ryggrad (faltningslager)
  • Regionförslagsnätverk (RPN) för begränsningsboxförslag
1 Edward Raff. 2022. Inside Deep Learning.
Djupinlärning för bilder med PyTorch

Faster R-CNN-modellen

Faster R-CNN: en avancerad version av R-CNN

rcnn-lager

  • Faltningslager (ryggrad): särdragskartor
  • Regionförslagsnätverk (RPN): begränsningsboxförslag
  • Klassificerare och regressor för att generera prediktioner
1 Edward Raff. 2022. Inside Deep Learning.
Djupinlärning för bilder med PyTorch

Regionförslagsnätverk (RPN)

arkitektur för regionförslagsnätverk

Djupinlärning för bilder med PyTorch

Regionförslagsnätverk (RPN)

arkitektur för regionförslagsnätverk

  • Ankargenerator:
    • Genererar en uppsättning ankarboxar i olika storlekar och bildförhållanden
Djupinlärning för bilder med PyTorch

Regionförslagsnätverk (RPN)

arkitektur för regionförslagsnätverk

  • Ankargenerator:
    • Genererar en uppsättning ankarboxar i olika storlekar och bildförhållanden
  • Klassificerare och regressor:
    • Förutsäger om boxen innehåller ett objekt och anger koordinater
Djupinlärning för bilder med PyTorch

Regionförslagsnätverk (RPN)

arkitektur för regionförslagsnätverk

  • Ankargenerator:
    • Genererar en uppsättning ankarboxar i olika storlekar och bildförhållanden
  • Klassificerare och regressor:
    • Förutsäger om boxen innehåller ett objekt och anger koordinater
  • Region of interest (RoI)-poolning:
    • Skalar om RPN-förslaget till en fast storlek för fullt anslutna lager
Djupinlärning för bilder med PyTorch

RPN i 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, )
Djupinlärning för bilder med PyTorch

Förlustfunktioner för Faster R-CNN

  • RPN-klassificeringsförlust:
    • om regionen innehåller ett objekt eller inte
    • binär korsentropi
    • rpn_cls_criterion = nn.BCEWithLogitsLoss()

 

  • RPN-boxregressionsförlust:
    • begränsningsboxkoordinater
    • medelkvadratfel
    • rpn_reg_criterion = nn.MSELoss()
  • R-CNN-klassificeringsförlust:
    • flera objektklasser
    • korsentropi
    • rcnn_cls_criterion = nn.CrossEntropyLoss()

 

  • R-CNN-boxregressionsförlust:
    • begränsningsboxkoordinater
    • medelkvadratfel
    • rcnn_reg_criterion = nn.MSELoss()
Djupinlärning för bilder med PyTorch

Faster R-CNN i 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, )
Djupinlärning för bilder med PyTorch

Faster R-CNN i PyTorch

Läs in förtränad Faster R-CNN

from torchvision.models.detection.faster_rcnn import FastRCNNPredictor

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

Definiera antal klasser och klassificerarens indatastorlek

num_classes = 2

in_features = model.roi_heads.box_predictor.cls_score.in_features

Ersätt modellens klassificerare med en för det önskade antalet klasser

model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)
Djupinlärning för bilder med PyTorch

Nu kör vi en övning!

Djupinlärning för bilder med PyTorch

Preparing Video For Download...