Mask R-CNN ile örnek segmentasyonu

PyTorch ile Görüntüler için Deep Learning

Michal Oleszak

Machine Learning Engineer

Faster R-CNN

Faster R-CNN mimari diyagramı

PyTorch ile Görüntüler için Deep Learning

Mask R-CNN

Mask R-CNN mimari diyagramı

PyTorch ile Görüntüler için Deep Learning

PyTorch'ta önceden eğitilmiş Mask R-CNN

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)
  • Mask R-CNN modelini içe aktarın
  • Önceden eğitilmiş modeli yükleyin
  • Test görselini yükleyip tensöre dönüştürün

bir dizüstü bilgisayarın yanında oturan bir kedinin fotoğrafı

  • Görsel tensörünü modele verin
PyTorch ile Görüntüler için Deep Learning

Model çıktıları

  • Etiketler

    prediction[0]["labels"]
    
    tensor([
        17, 73, 76, 73, 67, 42, 63, 84,73, 65, 
        17, 73, 73, 73, 84, 72, 76, 76,17, 15
    ])
    
  • Sınıf adları

    print(class_names[17], class_names[73])
    
    cat laptop
    
  • Sınıf olasılıkları

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

    prediction[0]["masks"]
    
    tensor([[[[0., 0., 0.,  ..., 0., 0., 0.],
              ...]]]])
    
PyTorch ile Görüntüler için Deep Learning

Yumuşak maskeler

  • Benzersiz maske değerleri

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

    • 0 ile 1 arasında değerler
    • Her pikselin nesneye ait olma olasılığını gösterir
    • İkili maskelerden daha ayrıntılı bilgi sunar
    • Gerekirse eşikleme ile ikileştirilebilir
PyTorch ile Görüntüler için Deep Learning

Yumuşak maskeleri görselleştirme

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()
  • Tahminden maskeleri ve etiketleri alın
  • İlk iki nesne üzerinde yineleyin, özgün görüntüyü çizin
  • Her nesne için yarı saydam maskeyi çizin
  • Başlık ekleyin ve gösterin
PyTorch ile Görüntüler için Deep Learning

Yumuşak maskeleri görselleştirme

Görüntüler üzerine bindirilmiş örnek segmentasyon maskeleri

PyTorch ile Görüntüler için Deep Learning

Haydi pratik yapalım!

PyTorch ile Görüntüler için Deep Learning

Preparing Video For Download...