Propuneri de regiuni cu Faster R-CNN

Deep Learning pentru imagini cu PyTorch

Michal Oleszak

Machine Learning Engineer

Regiuni și casete de ancorare

  • Regiune: o zonă mai mică a imaginii ce poate conține obiecte de interes, grupate după caracteristici vizuale

propuneri de regiuni

Deep Learning pentru imagini cu PyTorch

Regiuni și casete de ancorare

  • Regiune: o zonă mai mică a imaginii ce poate conține obiecte de interes, grupate după caracteristici vizuale

propuneri de regiuni

  • Casetă de ancorare: șablon predefinit de casetă delimitatoare cu dimensiuni și forme variate
Deep Learning pentru imagini cu PyTorch

Modelul Faster R-CNN

Faster R-CNN: versiune avansată a R-CNN

straturi rcnn

  • Backbone (straturi de convoluție)
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning pentru imagini cu PyTorch

Modelul Faster R-CNN

Faster R-CNN: versiune avansată a R-CNN straturi rcnn

  • Backbone (straturi de convoluție)
  • Rețea de propuneri de regiuni (RPN) pentru casete delimitatoare
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning pentru imagini cu PyTorch

Modelul Faster R-CNN

Faster R-CNN: versiune avansată a R-CNN

straturi rcnn

  • Straturi de convoluție (backbone): hărți de caracteristici
  • Rețea de propuneri de regiuni (RPN): propuneri de casete delimitatoare
  • Clasificator și regresor pentru predicții
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning pentru imagini cu PyTorch

Rețeaua de propuneri de regiuni (RPN)

arhitectura rețelei de propuneri de regiuni

Deep Learning pentru imagini cu PyTorch

Rețeaua de propuneri de regiuni (RPN)

arhitectura rețelei de propuneri de regiuni

  • Generator de ancore:
    • Generează ancore de dimensiuni și proporții diferite
Deep Learning pentru imagini cu PyTorch

Rețeaua de propuneri de regiuni (RPN)

arhitectura rețelei de propuneri de regiuni

  • Generator de ancore:
    • Generează ancore de dimensiuni și proporții diferite
  • Clasificator și regresor:
    • Prezice dacă caseta conține un obiect și furnizează coordonate
Deep Learning pentru imagini cu PyTorch

Rețeaua de propuneri de regiuni (RPN)

arhitectura rețelei de propuneri de regiuni

  • Generator de ancore:
    • Generează ancore de dimensiuni și proporții diferite
  • Clasificator și regresor:
    • Prezice dacă caseta conține un obiect și furnizează coordonate
  • Pooling RoI (Region of Interest):
    • Redimensionează propunerea RPN la o dimensiune fixă pentru straturile fully connected
Deep Learning pentru imagini cu PyTorch

RPN în 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 pentru imagini cu PyTorch

Funcțiile de pierdere Fast R-CNN

  • Funcția de pierdere pentru clasificarea RPN:
    • regiunea conține sau nu un obiect
    • entropie încrucișată binară
    • rpn_cls_criterion = nn.BCEWithLogitsLoss()

 

  • Funcția de pierdere pentru regresia casetelor RPN:
    • coordonatele casetei delimitatoare
    • eroare medie pătratică
    • rpn_reg_criterion = nn.MSELoss()
  • Funcția de pierdere pentru clasificarea R-CNN:
    • clase multiple de obiecte
    • entropie încrucișată
    • rcnn_cls_criterion = nn.CrossEntropyLoss()

 

  • Funcția de pierdere pentru regresia casetelor R-CNN:
    • coordonatele casetei delimitatoare
    • eroare medie pătratică
    • rcnn_reg_criterion = nn.MSELoss()
Deep Learning pentru imagini cu PyTorch

Faster R-CNN în 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 pentru imagini cu PyTorch

Faster R-CNN în PyTorch

Încărcați Faster R-CNN preantrenat

from torchvision.models.detection.faster_rcnn import FastRCNNPredictor

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

Definiți numărul de clase și dimensiunea intrării clasificatorului

num_classes = 2

in_features = model.roi_heads.box_predictor.cls_score.in_features

Înlocuiți clasificatorul modelului cu unul pentru numărul dorit de clase

model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)
Deep Learning pentru imagini cu PyTorch

Să exersăm!

Deep Learning pentru imagini cu PyTorch

Preparing Video For Download...