Usulan wilayah dengan Faster R-CNN

Deep Learning untuk Gambar dengan PyTorch

Michal Oleszak

Machine Learning Engineer

Region dan anchor box

  • Region: area lebih kecil pada gambar yang dapat memuat objek penting, dikelompokkan oleh karakteristik visual

usulan wilayah

Deep Learning untuk Gambar dengan PyTorch

Region dan anchor box

  • Region: area lebih kecil pada gambar yang dapat memuat objek penting, dikelompokkan oleh karakteristik visual

usulan wilayah

  • Anchor box: templat bounding box bawaan dengan berbagai ukuran dan bentuk
Deep Learning untuk Gambar dengan PyTorch

Model Faster R-CNN

Faster R-CNN: versi lanjutan dari R-CNN

lapisan rcnn

  • Backbone (lapisan konvolusional)
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning untuk Gambar dengan PyTorch

Model Faster R-CNN

Faster R-CNN: versi lanjutan dari R-CNN lapisan rcnn

  • Backbone (lapisan konvolusional)
  • Region proposal network (RPN) untuk usulan bounding box
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning untuk Gambar dengan PyTorch

Model Faster R-CNN

Faster R-CNN: versi lanjutan dari R-CNN

lapisan rcnn

  • Lapisan konvolusi (backbone): peta fitur
  • Region proposal network (RPN): usulan bounding box
  • Klasifier dan regressor untuk menghasilkan prediksi
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning untuk Gambar dengan PyTorch

Region proposal network (RPN)

arsitektur region proposal network

Deep Learning untuk Gambar dengan PyTorch

Region proposal network (RPN)

arsitektur region proposal network

  • Anchor generator:
    • Menghasilkan sekumpulan anchor box dengan berbagai ukuran dan rasio aspek
Deep Learning untuk Gambar dengan PyTorch

Region proposal network (RPN)

arsitektur region proposal network

  • Anchor generator:
    • Menghasilkan sekumpulan anchor box dengan berbagai ukuran dan rasio aspek
  • Klasifier dan regressor:
    • Memprediksi apakah kotak berisi objek dan memberikan koordinat
Deep Learning untuk Gambar dengan PyTorch

Region proposal network (RPN)

arsitektur region proposal network

  • Anchor generator:
    • Menghasilkan sekumpulan anchor box dengan berbagai ukuran dan rasio aspek
  • Klasifier dan regressor:
    • Memprediksi apakah kotak berisi objek dan memberikan koordinat
  • RoI (region of interest) pooling:
    • Mengubah ukuran usulan RPN ke ukuran tetap untuk fully connected layer
Deep Learning untuk Gambar dengan PyTorch

RPN di 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 untuk Gambar dengan PyTorch

Fungsi loss Fast R-CNN

  • Loss klasifikasi RPN:
    • region berisi objek atau tidak
    • binary cross-entropy
    • rpn_cls_criterion = nn.BCEWithLogitsLoss()

 

  • Loss regresi kotak RPN:
    • koordinat bounding box
    • mean squared error
    • rpn_reg_criterion = nn.MSELoss()
  • Loss klasifikasi R-CNN:
    • banyak kelas objek
    • cross-entropy
    • rcnn_cls_criterion = nn.CrossEntropyLoss()

 

  • Loss regresi kotak R-CNN:
    • koordinat bounding box
    • mean squared error
    • rcnn_reg_criterion = nn.MSELoss()
Deep Learning untuk Gambar dengan PyTorch

Faster R-CNN di 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 untuk Gambar dengan PyTorch

Faster R-CNN di PyTorch

Muat Faster R-CNN pra-latih

from torchvision.models.detection.faster_rcnn import FastRCNNPredictor

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

Tentukan jumlah kelas dan ukuran input klasifier

num_classes = 2

in_features = model.roi_heads.box_predictor.cls_score.in_features

Ganti klasifier model dengan yang berjumlah kelas sesuai kebutuhan

model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)
Deep Learning untuk Gambar dengan PyTorch

Ayo berlatih!

Deep Learning untuk Gambar dengan PyTorch

Preparing Video For Download...