Đề xuất vùng với Faster R-CNN

Deep Learning cho Ảnh với PyTorch

Michal Oleszak

Machine Learning Engineer

Vùng và hộp anchor

  • Vùng (region): phần nhỏ của ảnh có thể chứa đối tượng quan tâm, được nhóm theo đặc trưng thị giác

đề xuất vùng

Deep Learning cho Ảnh với PyTorch

Vùng và hộp anchor

  • Vùng (region): phần nhỏ của ảnh có thể chứa đối tượng quan tâm, được nhóm theo đặc trưng thị giác

đề xuất vùng

  • Hộp anchor: mẫu hộp giới hạn định sẵn với nhiều kích thước và hình dạng
Deep Learning cho Ảnh với PyTorch

Mô hình Faster R-CNN

Faster R-CNN: phiên bản nâng cao của R-CNN

các tầng rcnn

  • Backbone (các tầng tích chập)
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning cho Ảnh với PyTorch

Mô hình Faster R-CNN

Faster R-CNN: phiên bản nâng cao của R-CNN các tầng rcnn

  • Backbone (các tầng tích chập)
  • Mạng đề xuất vùng (RPN) cho đề xuất hộp giới hạn
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning cho Ảnh với PyTorch

Mô hình Faster R-CNN

Faster R-CNN: phiên bản nâng cao của R-CNN

các tầng rcnn

  • Các tầng tích chập (backbone): bản đồ đặc trưng
  • Mạng đề xuất vùng (RPN): đề xuất hộp giới hạn
  • Bộ phân loại và hồi quy để tạo dự đoán
1 Edward Raff. 2022. Inside Deep Learning.
Deep Learning cho Ảnh với PyTorch

Mạng đề xuất vùng (RPN)

kiến trúc mạng đề xuất vùng

Deep Learning cho Ảnh với PyTorch

Mạng đề xuất vùng (RPN)

kiến trúc mạng đề xuất vùng

  • Bộ tạo anchor:
    • Tạo tập hộp anchor với nhiều kích thước và tỉ lệ khung hình
Deep Learning cho Ảnh với PyTorch

Mạng đề xuất vùng (RPN)

kiến trúc mạng đề xuất vùng

  • Bộ tạo anchor:
    • Tạo tập hộp anchor với nhiều kích thước và tỉ lệ khung hình
  • Bộ phân loại và hồi quy:
    • Dự đoán hộp có chứa đối tượng và trả về tọa độ
Deep Learning cho Ảnh với PyTorch

Mạng đề xuất vùng (RPN)

kiến trúc mạng đề xuất vùng

  • Bộ tạo anchor:
    • Tạo tập hộp anchor với nhiều kích thước và tỉ lệ khung hình
  • Bộ phân loại và hồi quy:
    • Dự đoán hộp có chứa đối tượng và trả về tọa độ
  • RoI pooling (vùng quan tâm):
    • Đổi kích thước đề xuất RPN về kích thước cố định cho các tầng fully connected
Deep Learning cho Ảnh với PyTorch

RPN trong 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 cho Ảnh với PyTorch

Hàm mất mát Fast R-CNN

  • Mất mát phân loại RPN:
    • vùng có chứa đối tượng hay không
    • binary cross-entropy
    • rpn_cls_criterion = nn.BCEWithLogitsLoss()

 

  • Mất mát hồi quy hộp RPN:
    • tọa độ hộp giới hạn
    • mean squared error
    • rpn_reg_criterion = nn.MSELoss()
  • Mất mát phân loại R-CNN:
    • nhiều lớp đối tượng
    • cross-entropy
    • rcnn_cls_criterion = nn.CrossEntropyLoss()

 

  • Mất mát hồi quy hộp R-CNN:
    • tọa độ hộp giới hạn
    • mean squared error
    • rcnn_reg_criterion = nn.MSELoss()
Deep Learning cho Ảnh với PyTorch

Faster R-CNN trong 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 cho Ảnh với PyTorch

Faster R-CNN trong PyTorch

Tải Faster R-CNN đã huấn luyện trước

from torchvision.models.detection.faster_rcnn import FastRCNNPredictor

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

Đặt số lớp và kích thước đầu vào của bộ phân loại

num_classes = 2

in_features = model.roi_heads.box_predictor.cls_score.in_features

Thay bộ phân loại của mô hình bằng bộ mới với số lớp mong muốn

model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)
Deep Learning cho Ảnh với PyTorch

Ayo berlatih!

Deep Learning cho Ảnh với PyTorch

Preparing Video For Download...