Görüntü Segmentasyonu (Bölütleme)

Yoğun ve bol araştırmalı günden daha merhaba! Konu görüntü işleme ve bilgisayarlı görü olduğunda severek çalıştığım alanlardan birisi de görüntü bölütleme oldu. Genellikle çalıştığımız alanlarda ‘Image Segmentation’ olarak ün saldığı için araştırmalarımızı bu bilgiye göre yapmalıyız. Derin öğrenme ve görüntü işleme harmanlandığında nesne tespiti sırasında tabiki en çok bilinen yöntemlerden birisi görüntüleri segmentlere ayırmaktır.

Bu yöntemi daha iyi anlayabilmek için hazır birçok derin öğrenme yöntemleri mevcuttur. Çok sık karşılaştığım ConvNet mimarilerinde Mask-RCNN modelinde dijital bir görüntüyü farklı renklerde bölümlere ayırmaktadır. Bu işlemi görüntüdeki piksel değerlerine göre gerçekleştirmektedir. Genellikle sınıflandırma (classification) işlemlerinde kullanılmaktadır. Haydi aşağıda verilen görseli inceleyelim📝

Mask-RCNN Sonucu Segmentlere Ayrılma [2]

Verdiğim bu görseli referanslara not ettiğim Udemy kursundan temin edebilirsiniz. Dikkat ettiyseniz sadece classification işleminden bahsetmiyoruz. Eğer öyle olsaydı dikdörtgen kutucuklar içerisinde genellikle etiket isimleri yer alacaktı. Ancak bu sefer nesneler belirli renkler ile birbirinden ayrılmış. Bu görüntüde nesnelerin bulunduğu pikseller bir maske ile renklerine bölütlendirilmiştir. Bunun yanı sıra maskeler ile ayrılan bu nesneler nesne tanıma bölümünde olduğu gibi kutular ile tespit edilerek etiketlenmiştir.

🍃Görüntü bölütleme yönteminde, tıpkı bu görseldeki parçalar gibi bir bölgedeki piksellerin her biri, renk değerleri, yoğunluğu, doku gibi bazı karakteristik veya hesaplanan özelliklerine göre benzerlikler çıkarıp maskeleme işlemi yapılmaktadır.

Mask-RCNN Nasıl Çalışır?

Bunu öğrenebilmemiz için öncelikle RCNN yapısına biraz daha hakim olmamız gerekebilir. Daha önce yazdığım birçok yazımda CNN yapısını anlatmıştım, incelemek isterseniz buraya bağlantıyı bırakıyorum 🔗

Görüntüden farklı ilgi alanlarını almak ve o bölgedeki nesnenin varlığını sınıflandırmak için bir CNN kullanmak gerekmektedir. Bu yaklaşımla ilgili sorun, ilgilenilen nesnelerin görüntü içinde farklı uzamsal konumlara ve farklı en boy oranlarına sahip olmasıdır. Bu sebeple RCNN gibi bölge bazlı çalışan yapılar diğer sinir ağı mimarilerine göre çok daha yavaş çalışmaktadır.

Faster-RCNN ise RCNN yapısı ile çalışmakta ancak çok daha hız-performans göstermektedir. Aslına bakarsanız tüm bu çabalarımız görüntüdeki her bir parçanın analizini yapmaktan ibarettir.

Mask-RCNN ise mantıksal açıdan Faster-RCNN’ e benzerlik göstermektedir. Peki bu Faster-RCNN tam olarak ne yapmaktadır? Görüntüde bulunan objeleri maskeleyerek bizlere nesne tanıma imkanı sağlamaktadır. Bakın bu maskeleme işlemi çok mühimdir. Mask-RCNN de maskeleme işlemi yapılmaktadır. Ancak şöyle bir durum mevcut, Mask-RCNN yapısı gereği eklenen bölüm için binary değer kullanmaktadır. Yani demek istediğim tanınacak obje için maske kullanılacak ise 1, kullanılmayacak ise 0 değeri çıkarmaktadır.

❗️Özetle RCNN yapıları yapay sinir ağlarında temsil etmek istersek, input (girdi) olarak çıkartılan özellik haritası (feature map) kullanılırken output (çıktı) olarak ise maskelenecek 0 ve 1′ lerden oluşan matrisi oluşturacaktır. Tabiki bu işlemler sırasında sinir ağına bölge önerileri çıkarımı yapıldığı unutulmamalıdır.

Segmentasyon sonuçlarını görmeniz adına Kaggle içerisinde bulunan notebookları inceledim ve diyabetik maküler ödem ile optik koherens tomografi görüntülerinin segmentasyonu için kullanılan bir notebook buldum. U-Net mimarisi ile çözüme gidilmiş ve eğitim gerçekleştirilmiştir. Bu eğitim sonucunda aşağıdaki verilere ulaşılmıştır.

Total loss in epoch 1000 : 0.24524860084056854 and validation loss : 1.4668775796890259
diabetik-makula-odemi3
Diyabetik maküler ödemi görüntülenmesi

🍃Ayyüce Kızrak’ a göre U-Net, evrişimli sinir ağı katmanlarından oluşturulmuş farklı bir mimari ve piksel temelli görüntü segmentasyon/bölütleme konusunda klasik modellerden daha başarılı sonuç vermektedir.

Bu projede de U-Net kullanılarak en son plot grafikleri olarak aşağıdaki görsel elde edilmiştir. Dikkat ettiyseniz, ödem görüntüleri gerekli segmentleme işlemine uğramıştır.

Gelecek bir sonraki yazımda, görüntü segmentasyonu için birlikte kodlamaya hazırlanacağız. Algoritma ve kodlamasından önce işin özüne inmek her zaman çok önemlidir. Bu sebeple benim için önemli olan classification ve segmentation işlemlerinin birbirinden keskin bir çizgi ile ayrılmasıydı. Umarım sizlere yeterince açıklayıcı bilgiler verebilmişimdir. Sağlıklı günler diliyorum✨

REFERANSLAR

  1. https://en.wikipedia.org/wiki/Image_segmentation.
  2. Bilgisayar Görüşü ile Yüz ve Nesne Tanıma | R-CNN, SSD, GANs, Udemy.
  3. Ayyüce Kızrak, Görüntü Bölütleme (Segmentasyon) için Derin Öğrenme: U-Net, Medium, https://medium.com/@ayyucekizrak/görüntü-bölütleme-segmentasyon-için-derin-öğrenme-u-net-3340be23096b.
  4. https://www.kaggle.com/hsankesara/unet-image-segmentation.
  5. https://www.medikalakademi.com.tr/diyabetik-makula-odemi-tedavi-retina/.
  6. https://cocodataset.org/workshop/coco-mapillary-eccv-2018.html.
  7. https://research.mapillary.com/eccv18/.

Leave a Reply

Your email address will not be published. Required fields are marked *