Phân đoạn instance với Mask R-CNN

Deep Learning cho Ảnh với PyTorch

Michal Oleszak

Machine Learning Engineer

Faster R-CNN

Sơ đồ kiến trúc Faster R-CNN

Deep Learning cho Ảnh với PyTorch

Mask R-CNN

Sơ đồ kiến trúc Mask R-CNN

Deep Learning cho Ảnh với PyTorch

Mask R-CNN tiền huấn luyện trong PyTorch

from torchvision.models.detection import \
maskrcnn_resnet50_fpn


model = maskrcnn_resnet50_fpn(pretrained=True) model.eval()
image = Image.open("cat_and_laptop.jpg") transform = transforms.Compose([ transforms.ToTensor() ]) image_tensor = transform(image).unsqueeze(0)
with torch.no_grad(): prediction = model(image_tensor)
  • Import mô hình Mask R-CNN
  • Tải mô hình tiền huấn luyện
  • Tải ảnh kiểm thử và chuyển sang tensor

ảnh mèo ngồi cạnh laptop

  • Truyền tensor ảnh vào mô hình
Deep Learning cho Ảnh với PyTorch

Đầu ra mô hình

  • Nhãn

    prediction[0]["labels"]
    
    tensor([
        17, 73, 76, 73, 67, 42, 63, 84,73, 65, 
        17, 73, 73, 73, 84, 72, 76, 76,17, 15
    ])
    
  • Tên lớp

    print(class_names[17], class_names[73])
    
    cat laptop
    
  • Xác suất lớp

    prediction[0]["scores"]
    
    tensor([
        0.9981, 0.9672, 0.9061, 0.6893, 0.3729, 
        ..., 
        0.0745, 0.0705, 0.0623, 0.0610, 0.0508
    ])
    
  • Mask

    prediction[0]["masks"]
    
    tensor([[[[0., 0., 0.,  ..., 0., 0., 0.],
              ...]]]])
    
Deep Learning cho Ảnh với PyTorch

Soft mask

  • Giá trị mask duy nhất

    prediction[0]["masks"].unique()
    
    tensor([0.0000e+00, 5.9713e-08, ..., 
            9.9989e-01, 9.9990e-01])
    
  • Mask của Mask R-CNN:

    • Giá trị từ 0 đến 1
    • Thể hiện độ tin cậy mỗi pixel thuộc về đối tượng
    • Cung cấp thông tin chi tiết hơn mask nhị phân
    • Có thể nhị phân hóa bằng ngưỡng nếu cần
Deep Learning cho Ảnh với PyTorch

Hiển thị soft mask

masks = prediction[0]["masks"]
labels = prediction[0]["labels"]


for i in range(2): plt.imshow(image)
plt.imshow( masks[i, 0], cmap="jet", alpha=0.5, )
plt.title( f"Object: {class_names[labels[i]]}" ) plt.show()
  • Trích xuất mask và nhãn từ dự đoán
  • Lặp 2 đối tượng đầu, vẽ ảnh gốc
  • Với mỗi đối tượng, vẽ mask bán trong suốt
  • Thêm tiêu đề và hiển thị
Deep Learning cho Ảnh với PyTorch

Hiển thị soft mask

Mask phân đoạn instance chồng lên ảnh

Deep Learning cho Ảnh với PyTorch

Hãy luyện tập!

Deep Learning cho Ảnh với PyTorch

Preparing Video For Download...