Faster R-CNN ile bölge önerileri

PyTorch ile Görüntüler için Deep Learning

Michal Oleszak

Machine Learning Engineer

Bölgeler ve çapa kutuları

  • Bölge: görsel özelliklere göre gruplanmış, ilgi nesnelerini içerebilecek küçük görüntü alanı

region proposals

PyTorch ile Görüntüler için Deep Learning

Bölgeler ve çapa kutuları

  • Bölge: görsel özelliklere göre gruplanmış, ilgi nesnelerini içerebilecek küçük görüntü alanı

region proposals

  • Çapa kutusu (anchor box): farklı boyut ve şekillerde ön tanımlı sınırlayıcı kutu şablonları
PyTorch ile Görüntüler için Deep Learning

Faster R-CNN modeli

Faster R-CNN: R-CNN’in gelişmiş sürümü

rcnn layers

  • Omurga (evrişim katmanları)
1 Edward Raff. 2022. Inside Deep Learning.
PyTorch ile Görüntüler için Deep Learning

Faster R-CNN modeli

Faster R-CNN: R-CNN’in gelişmiş sürümü rcnn layers

  • Omurga (evrişim katmanları)
  • Sınırlayıcı kutu önerileri için bölge öneri ağı (RPN)
1 Edward Raff. 2022. Inside Deep Learning.
PyTorch ile Görüntüler için Deep Learning

Faster R-CNN modeli

Faster R-CNN: R-CNN’in gelişmiş sürümü

rcnn layers

  • Evrişim katmanları (backbone): özellik haritaları
  • Bölge öneri ağı (RPN): sınırlayıcı kutu önerileri
  • Sınıflandırıcı ve regresör: tahmin üretir
1 Edward Raff. 2022. Inside Deep Learning.
PyTorch ile Görüntüler için Deep Learning

Bölge öneri ağı (RPN)

region proposal network architecture

PyTorch ile Görüntüler için Deep Learning

Bölge öneri ağı (RPN)

region proposal network architecture

  • Çapa (anchor) üretici:
    • Farklı boyut ve en-boy oranlarında çapa kutuları üretir
PyTorch ile Görüntüler için Deep Learning

Bölge öneri ağı (RPN)

region proposal network architecture

  • Çapa (anchor) üretici:
    • Farklı boyut ve en-boy oranlarında çapa kutuları üretir
  • Sınıflandırıcı ve regresör:
    • Kutuda nesne var mı tahmin eder ve koordinat verir
PyTorch ile Görüntüler için Deep Learning

Bölge öneri ağı (RPN)

region proposal network architecture

  • Çapa (anchor) üretici:
    • Farklı boyut ve en-boy oranlarında çapa kutuları üretir
  • Sınıflandırıcı ve regresör:
    • Kutuda nesne var mı tahmin eder ve koordinat verir
  • İlgi bölgesi (RoI) havuzu:
    • RPN önerisini tam bağlı katmanlar için sabit boyuta yeniden ölçekler
PyTorch ile Görüntüler için Deep Learning

PyTorch’ta RPN

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, )
PyTorch ile Görüntüler için Deep Learning

Fast R-CNN kayıp fonksiyonları

  • RPN sınıflandırma kaybı:
    • bölge nesne içerir mi
    • ikili çapraz entropi
    • rpn_cls_criterion = nn.BCEWithLogitsLoss()

 

  • RPN kutu regresyon kaybı:
    • sınırlayıcı kutu koordinatları
    • ortalama karesel hata
    • rpn_reg_criterion = nn.MSELoss()
  • R-CNN sınıflandırma kaybı:
    • birden çok nesne sınıfı
    • çapraz entropi
    • rcnn_cls_criterion = nn.CrossEntropyLoss()

 

  • R-CNN kutu regresyon kaybı:
    • sınırlayıcı kutu koordinatları
    • ortalama karesel hata
    • rcnn_reg_criterion = nn.MSELoss()
PyTorch ile Görüntüler için Deep Learning

PyTorch’ta Faster R-CNN

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, )
PyTorch ile Görüntüler için Deep Learning

PyTorch’ta Faster R-CNN

Önceden eğitilmiş Faster R-CNN’i yükleyin

from torchvision.models.detection.faster_rcnn import FastRCNNPredictor

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

Sınıf sayısını ve sınıflandırıcı giriş boyutunu tanımlayın

num_classes = 2

in_features = model.roi_heads.box_predictor.cls_score.in_features

Modelin sınıflandırıcısını istenen sınıf sayısıyla değiştirin

model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)
PyTorch ile Görüntüler için Deep Learning

Hadi pratik yapalım!

PyTorch ile Görüntüler için Deep Learning

Preparing Video For Download...