Návrhy oblastí sítě s Faster R-CNN

Deep Learning pro obrázky s PyTorchem

Michal Oleszak

Machine Learning Engineer

Oblasti a kotevní rámečky

  • Oblast: menší část obrazu, která může obsahovat objekty zájmu, seskupená podle vizuálních charakteristik

návrhy oblastí

Deep Learning pro obrázky s PyTorchem

Oblasti a kotevní rámečky

  • Oblast: menší část obrazu, která může obsahovat objekty zájmu, seskupená podle vizuálních charakteristik

návrhy oblastí

  • Kotevní rámeček: předdefinované šablony ohraničujícího rámečku různých velikostí a tvarů
Deep Learning pro obrázky s PyTorchem

Model Faster R-CNN

Faster R-CNN: pokročilá verze R-CNN

vrstvy rcnn

  • Páteř (konvoluční vrstvy)
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning pro obrázky s PyTorchem

Model Faster R-CNN

Faster R-CNN: pokročilá verze R-CNN vrstvy rcnn

  • Páteř (konvoluční vrstvy)
  • Síť pro návrh oblastí (RPN) pro návrhy ohraničujících rámečků
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning pro obrázky s PyTorchem

Model Faster R-CNN

Faster R-CNN: pokročilá verze R-CNN

vrstvy rcnn

  • Konvoluční vrstvy (páteř): příznakové mapy
  • Síť pro návrh oblastí (RPN): návrhy ohraničujících rámečků
  • Klasifikátor a regresor pro produkci predikcí
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning pro obrázky s PyTorchem

Síť pro návrh oblastí (RPN)

architektura sítě pro návrh oblastí

Deep Learning pro obrázky s PyTorchem

Síť pro návrh oblastí (RPN)

architektura sítě pro návrh oblastí

  • Generátor kotev:
    • Generuje sadu kotevních rámečků různých velikostí a poměrů stran
Deep Learning pro obrázky s PyTorchem

Síť pro návrh oblastí (RPN)

architektura sítě pro návrh oblastí

  • Generátor kotev:
    • Generuje sadu kotevních rámečků různých velikostí a poměrů stran
  • Klasifikátor a regresor:
    • Predikuje, zda rámeček obsahuje objekt, a určuje souřadnice
Deep Learning pro obrázky s PyTorchem

Síť pro návrh oblastí (RPN)

architektura sítě pro návrh oblastí

  • Generátor kotev:
    • Generuje sadu kotevních rámečků různých velikostí a poměrů stran
  • Klasifikátor a regresor:
    • Predikuje, zda rámeček obsahuje objekt, a určuje souřadnice
  • Sdružování oblasti zájmu (RoI pooling):
    • Změní velikost návrhu RPN na fixní velikost pro plně propojené vrstvy
Deep Learning pro obrázky s PyTorchem

RPN v 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 pro obrázky s PyTorchem

Ztrátové funkce Fast R-CNN

  • Klasifikační ztráta RPN:
    • zda oblast obsahuje objekt
    • binární křížová entropie
    • rpn_cls_criterion = nn.BCEWithLogitsLoss()

 

  • Regresní ztráta rámečku RPN:
    • souřadnice ohraničujícího rámečku
    • střední kvadratická chyba
    • rpn_reg_criterion = nn.MSELoss()
  • Klasifikační ztráta R-CNN:
    • více tříd objektů
    • křížová entropie
    • rcnn_cls_criterion = nn.CrossEntropyLoss()

 

  • Regresní ztráta rámečku R-CNN:
    • souřadnice ohraničujícího rámečku
    • střední kvadratická chyba
    • rcnn_reg_criterion = nn.MSELoss()
Deep Learning pro obrázky s PyTorchem

Faster R-CNN v 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 pro obrázky s PyTorchem

Faster R-CNN v PyTorch

Načtení předtrénovaného Faster R-CNN

from torchvision.models.detection.faster_rcnn import FastRCNNPredictor

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

Definice počtu tříd a velikosti vstupu klasifikátoru

num_classes = 2

in_features = model.roi_heads.box_predictor.cls_score.in_features

Nahrazení klasifikátoru modelu klasifikátorem s požadovaným počtem tříd

model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)
Deep Learning pro obrázky s PyTorchem

Pojďme si procvičit!

Deep Learning pro obrázky s PyTorchem

Preparing Video For Download...