Propositions de régions avec Faster R-CNN

Deep Learning pour les images avec PyTorch

Michal Oleszak

Machine Learning Engineer

Régions et boîtes d'ancrage

  • Région : petite zone de l'image pouvant contenir des objets d'intérêt, regroupée par caractéristiques visuelles

propositions de régions

Deep Learning pour les images avec PyTorch

Régions et boîtes d'ancrage

  • Région : petite zone de l'image pouvant contenir des objets d'intérêt, regroupée par caractéristiques visuelles

propositions de régions

  • Boîte d'ancrage : gabarits prédéfinis de boîtes englobantes de tailles et de formes variées
Deep Learning pour les images avec PyTorch

Modèle Faster R-CNN

Faster R-CNN : version avancée de R-CNN

couches rcnn

  • Épine dorsale (couches convolutionnelles)
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning pour les images avec PyTorch

Modèle Faster R-CNN

Faster R-CNN : version avancée de R-CNN couches rcnn

  • Épine dorsale (couches convolutionnelles)
  • Réseau de propositions de régions (RPN) pour proposer des boîtes englobantes
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning pour les images avec PyTorch

Modèle Faster R-CNN

Faster R-CNN : version avancée de R-CNN

couches rcnn

  • Couches de convolution (épine dorsale) : cartes de caractéristiques
  • Réseau de propositions de régions (RPN) : propositions de boîtes englobantes
  • Classifieur et régleur (regressor) pour produire les prédictions
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning pour les images avec PyTorch

Réseau de propositions de régions (RPN)

architecture du réseau de propositions de régions

Deep Learning pour les images avec PyTorch

Réseau de propositions de régions (RPN)

architecture du réseau de propositions de régions

  • Générateur d'ancrages :
    • Génère un ensemble de boîtes d'ancrage de tailles et de rapports d'aspect variés
Deep Learning pour les images avec PyTorch

Réseau de propositions de régions (RPN)

architecture du réseau de propositions de régions

  • Générateur d'ancrages :
    • Génère un ensemble de boîtes d'ancrage de tailles et de rapports d'aspect variés
  • Classifieur et régleur :
    • Prédit si la boîte contient un objet et fournit les coordonnées
Deep Learning pour les images avec PyTorch

Réseau de propositions de régions (RPN)

architecture du réseau de propositions de régions

  • Générateur d'ancrages :
    • Génère un ensemble de boîtes d'ancrage de tailles et de rapports d'aspect variés
  • Classifieur et régleur :
    • Prédit si la boîte contient un objet et fournit les coordonnées
  • Regroupement des régions d'intérêt (RoI pooling) :
    • Redimensionne la proposition du RPN à une taille fixe pour les couches entièrement connectées
Deep Learning pour les images avec PyTorch

RPN dans 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 pour les images avec PyTorch

Fonctions de perte de Fast R-CNN

  • Perte de classification du RPN :
    • la région contient un objet ou non
    • entropie croisée binaire
    • rpn_cls_criterion = nn.BCEWithLogitsLoss()

 

  • Perte de régression des boîtes du RPN :
    • coordonnées des boîtes englobantes
    • erreur quadratique moyenne
    • rpn_reg_criterion = nn.MSELoss()
  • Perte de classification de R-CNN :
    • plusieurs classes d'objets
    • entropie croisée
    • rcnn_cls_criterion = nn.CrossEntropyLoss()

 

  • Perte de régression des boîtes de R-CNN :
    • coordonnées des boîtes englobantes
    • erreur quadratique moyenne
    • rcnn_reg_criterion = nn.MSELoss()
Deep Learning pour les images avec PyTorch

Faster R-CNN dans 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 pour les images avec PyTorch

Faster R-CNN dans PyTorch

Charger un Faster R-CNN préentraîné

from torchvision.models.detection.faster_rcnn import FastRCNNPredictor

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

Définir le nombre de classes et la taille d'entrée du classifieur

num_classes = 2

in_features = model.roi_heads.box_predictor.cls_score.in_features

Remplacer le classifieur du modèle par un adapté au nombre de classes voulu

model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)
Deep Learning pour les images avec PyTorch

Passons à la pratique !

Deep Learning pour les images avec PyTorch

Preparing Video For Download...