Görüntü bölütlemeye giriş

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

Michal Oleszak

Machine Learning Engineer

Görüntü bölütleme

  • Görüntü bölütleme, görseli piksel düzeyinde birden çok bölüme ayırır
  • Görseldeki her piksel belirli bir bölüme atanır
  • Üç tür bölütleme:
    • Anlamsal bölütleme
    • Örnek bölütleme
    • Panoptik bölütleme
PyTorch ile Görüntüler için Deep Learning

Anlamsal bölütleme

anlamsal bölütleme

  • Her piksel bir sınıfa atanır
  • Aynı sınıftaki tüm pikseller eşit muamele görür
PyTorch ile Görüntüler için Deep Learning

Örnek bölütleme

örnek bölütleme

  • Aynı sınıfın farklı örneklerini ayırt eder
  • Arka plan çoğunlukla bölütlenmez
PyTorch ile Görüntüler için Deep Learning

Panoptik bölütleme

panoptik bölütleme

  • Anlamsal ve örnek bölütlemeyi birleştirir
  • Her nesne örneğine benzersiz bir etiket verir
  • Arka planı piksel düzeyinde sınıflandırır
PyTorch ile Görüntüler için Deep Learning

Veri açıklamaları

image = Image.open("images/British_Shorthair_36.jpg")
mask = Image.open("annots/British_Shorthair_36.png")


transform = transforms.Compose([ transforms.ToTensor() ]) image_tensor = transform(image) mask_tensor = transform(mask)
print(f"""Image shape: {image_tensor.shape} Mask shape: {mask_tensor.shape}""")
    Image shape: torch.Size([3, 333, 500])
    Mask shape: torch.Size([1, 333, 500])

British shorthair kedi fotoğrafı

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

Maskeyi anlama

  • Veri kümesi dokümantasyonu:

    Piksel Açıklamaları: 1: Öndal 2: Arka plan 3: Sınıflandırılmadı

  • Benzersiz maske değerleri:

    mask_tensor.unique()
    
    tensor([0.0039, 0.0078, 0.0118])
    
  • Piksel değerleri 255 ile bölünür:

    • 1 / 255 = 0.0039 - nesne
    • 2 / 255 = 0.0.0078 - arka plan
    • 3 / 255 = 0.0118 - sınıflandırılmadı
PyTorch ile Görüntüler için Deep Learning

İkili maske oluşturma

binary_mask = torch.where(
    mask_tensor == 1/255, 
    torch.tensor(1.0),
    torch.tensor(0.0),
)


to_pil_image = transforms.ToPILImage() mask = to_pil_image(binary_mask)
plt.imshow(mask)

bölütleme maskesi

  • torch.where():
    • Koşul
    • Koşul sağlanırsa kullanılacak değer
    • Aksi halde kullanılacak değer
  • Maskeyi PIL görseline dönüştürün
  • Maskeyi görüntüleyin
PyTorch ile Görüntüler için Deep Learning

Nesneyi bölütleme

object_tensor = image_tensor * binary_mask


to_pil_image = transforms.ToPILImage() object_image = to_pil_image(object_tensor)
plt.imshow(object_image)

bölütlenmiş görsel

  • Görseli ikili maske ile çarpın
  • Nesneyi PIL görseline dönüştürün
  • Nesne görselini görüntüleyin
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...