Phát hiện đối tượng với R-CNN

Deep Learning cho Ảnh với PyTorch

Michal Oleszak

Machine Learning Engineer

Họ CNN dựa trên vùng: R-CNN

Họ R-CNN: R-CNN, Fast R-CNN, Faster R-CNN

R-CNN

  • Mô-đun 1: sinh đề xuất vùng
1 Trích dẫn: Jason Brownlee. 2019. Deep Learning for Computer Vision.
Deep Learning cho Ảnh với PyTorch

Họ CNN dựa trên vùng: R-CNN

Họ R-CNN: R-CNN, Fast R-CNN, Faster R-CNN

R-CNN

  • Mô-đun 1: sinh đề xuất vùng
  • Mô-đun 2: trích xuất đặc trưng (tầng tích chập)
1 Trích dẫn: Jason Brownlee. 2019. Deep Learning for Computer Vision.
Deep Learning cho Ảnh với PyTorch

Họ CNN dựa trên vùng: R-CNN

Họ R-CNN: R-CNN, Fast R-CNN, Faster R-CNN

R-CNN

  • Mô-đun 1: sinh đề xuất vùng
  • Mô-đun 2: trích xuất đặc trưng (tầng tích chập)
  • Mô-đun 3: dự đoán lớp và hộp giới hạn
1 Trích dẫn: Jason Brownlee. 2019. Deep Learning for Computer Vision.
Deep Learning cho Ảnh với PyTorch

R-CNN: backbone

  • Các tầng tích chập: mô hình đã được huấn luyện sẵn
    • Backbone: kiến trúc CNN lõi dùng để trích xuất đặc trưng

  backbone

  • Tầng tích chập & pooling
  • Trích xuất đặc trưng cho đề xuất vùng và phát hiện đối tượng
Deep Learning cho Ảnh với PyTorch

R-CNN: backbone với PyTorch

import torch.nn as nn
from torchvision.models import vgg16,
    VGG16_Weights


vgg = vgg16(weights=VGG16_Weights.DEFAULT)

mô hình vgg

Deep Learning cho Ảnh với PyTorch

R-CNN: backbone với PyTorch

import torch.nn as nn
from torchvision.models import vgg16,
    VGG16_Weights


vgg = vgg16(weights=VGG16_Weights.DEFAULT)

đặc trưng mô hình vgg

  • .features: chỉ các tầng tích chập
Deep Learning cho Ảnh với PyTorch

R-CNN: backbone với PyTorch

import torch.nn as nn
from torchvision.models import vgg16,
    VGG16_Weights


vgg = vgg16(weights=VGG16_Weights.DEFAULT)

mô hình vgg

  • .features: chỉ các tầng tích chập
  • .children(): toàn bộ tầng trong block
Deep Learning cho Ảnh với PyTorch

R-CNN: backbone với PyTorch

import torch.nn as nn
from torchvision.models import vgg16,
    VGG16_Weights


vgg = vgg16(weights=VGG16_Weights.DEFAULT)
backbone = nn.Sequential( *list(vgg.features.children()) )
  • nn.Sequential(*list()): đưa toàn bộ tầng con vào một block tuần tự dưới dạng list
    • *: giải nén phần tử từ list

mô hình vgg

  • .features: chỉ các tầng tích chập
  • .children(): toàn bộ tầng trong block
Deep Learning cho Ảnh với PyTorch

R-CNN: tầng phân loại (classifier)

  • Lấy kích thước đầu ra của backbone
input_dimension = nn.Sequential(*list(
    vgg_backbone.classifier.children())
)[0].in_features
  • Tạo classifier mới
classifier = nn.Sequential(
    nn.Linear(input_dimension, 512),
    nn.ReLU(),
    nn.Linear(512, num_classes),
)
Deep Learning cho Ảnh với PyTorch

R-CNN: tầng hồi quy hộp (box regressor)

  • Đặt trên backbone
  • 4 đầu ra cho 4 tọa độ hộp
box_regressor = nn.Sequential(
    nn.Linear(input_dimension, 32),
    nn.ReLU(),
    nn.Linear(32, 4),
)
Deep Learning cho Ảnh với PyTorch

Tổng hợp: mô hình phát hiện đối tượng

class ObjectDetectorCNN(nn.Module):
    def __init__(self):
        super(ObjectDetectorCNN, self).__init__()

vgg = vgg16(weights=VGG16_Weights.DEFAULT) self.backbone = nn.Sequential(*list(vgg.features.children()))
input_features = nn.Sequential(*list(vgg.classifier.children()))[0].in_features
self.classifier = nn.Sequential( nn.Linear(input_features, 512), nn.ReLU(), nn.Linear(512, 2), )
self.box_regressor = nn.Sequential( nn.Linear(input_features, 32), nn.ReLU(), nn.Linear(32, 4), )
Deep Learning cho Ảnh với PyTorch

Tổng hợp: mô hình phát hiện đối tượng

class ObjectDetector(nn.Module):
    (...)

    def forward(self, x):

features = self.backbone(x)
bboxes = self.regressor(features) classes = self.classifier(features) return bboxes, classes
Deep Learning cho Ảnh với PyTorch

Chạy nhận dạng đối tượng

  1. Nạp và biến đổi ảnh
  2. Dùng unsqueeze() để thêm chiều batch
  3. Truyền tensor ảnh vào mô hình
  4. Chạy Non-Max Suppression (nms()) trên đầu ra
  5. Gọi draw_bounding_boxes() lên ảnh
Deep Learning cho Ảnh với PyTorch

Ayo berlatih!

Deep Learning cho Ảnh với PyTorch

Preparing Video For Download...