Пропозиції регіонів мережею в Faster R-CNN

Глибоке навчання для зображень із PyTorch

Michal Oleszak

Machine Learning Engineer

Регіони та опорні рамки (anchor boxes)

  • Region: менша ділянка зображення, що може містити об'єкти інтересу, згруповані за візуальними ознаками

region proposals

Глибоке навчання для зображень із PyTorch

Регіони та опорні рамки (anchor boxes)

  • Region: менша ділянка зображення, що може містити об'єкти інтересу, згруповані за візуальними ознаками

region proposals

  • Anchor box: заздалегідь визначені шаблони рамок різних розмірів і форм
Глибоке навчання для зображень із PyTorch

Модель Faster R-CNN

Faster R-CNN: розширена версія R-CNN

rcnn layers

  • Бекбон (згорткові шари)
1 Edward Raff. 2022. Inside Deep Learning.
Глибоке навчання для зображень із PyTorch

Модель Faster R-CNN

Faster R-CNN: розширена версія R-CNN rcnn layers

  • Бекбон (згорткові шари)
  • Region proposal network (RPN) для пропозицій рамок обмеження
1 Edward Raff. 2022. Inside Deep Learning.
Глибоке навчання для зображень із PyTorch

Модель Faster R-CNN

Faster R-CNN: розширена версія R-CNN

rcnn layers

  • Згорткові шари (бекбон): карти ознак
  • Region proposal network (RPN): пропозиції рамок обмеження
  • Класифікатор і регресор для отримання прогнозів
1 Edward Raff. 2022. Inside Deep Learning.
Глибоке навчання для зображень із PyTorch

Мережа пропозицій регіонів (RPN)

архітектура мережі пропозицій регіонів

Глибоке навчання для зображень із PyTorch

Мережа пропозицій регіонів (RPN)

архітектура мережі пропозицій регіонів

  • Генератор опорних рамок:
    • Створює набір рамок різних розмірів і співвідношень сторін
Глибоке навчання для зображень із PyTorch

Мережа пропозицій регіонів (RPN)

архітектура мережі пропозицій регіонів

  • Генератор опорних рамок:
    • Створює набір рамок різних розмірів і співвідношень сторін
  • Класифікатор і регресор:
    • Передбачає, чи містить рамка об'єкт, і надає координати
Глибоке навчання для зображень із PyTorch

Мережа пропозицій регіонів (RPN)

архітектура мережі пропозицій регіонів

  • Генератор опорних рамок:
    • Створює набір рамок різних розмірів і співвідношень сторін
  • Класифікатор і регресор:
    • Передбачає, чи містить рамка об'єкт, і надає координати
  • Region of interest (RoI) pooling:
    • Змінює розмір пропозицій RPN до фіксованого для повнозв'язних шарів
Глибоке навчання для зображень із PyTorch

RPN у 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, )
Глибоке навчання для зображень із PyTorch

Функції втрат Fast R-CNN

  • Втрата класифікації RPN:
    • регіон містить об'єкт чи ні
    • бінарна кросентропія
    • rpn_cls_criterion = nn.BCEWithLogitsLoss()

 

  • Втрата регресії рамок RPN:
    • координати рамки обмеження
    • середньоквадратична помилка
    • rpn_reg_criterion = nn.MSELoss()
  • Втрата класифікації R-CNN:
    • кілька класів об'єктів
    • кросентропія
    • rcnn_cls_criterion = nn.CrossEntropyLoss()

 

  • Втрата регресії рамок R-CNN:
    • координати рамки обмеження
    • середньоквадратична помилка
    • rcnn_reg_criterion = nn.MSELoss()
Глибоке навчання для зображень із PyTorch

Faster R-CNN у 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, )
Глибоке навчання для зображень із PyTorch

Faster R-CNN у PyTorch

Завантажте попередньо навчений Faster R-CNN

from torchvision.models.detection.faster_rcnn import FastRCNNPredictor

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

Задайте кількість класів і розмір входу класифікатора

num_classes = 2

in_features = model.roi_heads.box_predictor.cls_score.in_features

Замініть класифікатор моделі на такий із потрібною кількістю класів

model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)
Глибоке навчання для зображень із PyTorch

Давайте потренуємось!

Глибоке навчання для зображень із PyTorch

Preparing Video For Download...