Piksel Bazlı Maskeleme ile Resim Tamamlama

Bugrahamza
novaresearchlab
Published in
4 min readJan 24, 2021

Bu yazıda Context Encoders ile resim tamamlamada farklı maskelerin eğitime etkisi incelenmiştir. “Context Encoders: Feature Learning by Inpainting” makalesini de inceleyebilirsiniz [1]. Bu makalede referans alınan koda https://github.com/novaresearchlab/pixel-based-context-encoders adresinden ulaşabilirsiniz.

Eksik bir resmi tamamlamanız istense ne yaparsınız? Çok büyük bir ihtimalle eksik kısımda bulunan nesnenin ne olabileceğini resmin geri kalanından tahmin eder ve nesneyi muhtemel renklerine boyarsınız. Context Encoders da benzer bir mantıkla eksik kısımda olması gereken pikselleri eğitim kümesinden öğrenir ve resimleri bu bilgilerini kullanarak tamamlar.

Context Encoders, bir GAN çeşididir ve iki görev kullanarak eğitimlerini gerçekleştirir. Bu görevler:

  1. Discriminative task : Bilgisayar tarafından tamamlanmış kısımları alarak gerçek resim olup olmadığını test eder. Bu sayede bilgisayar her defasında gerçeğe daha da yaklaşır.
  2. Generative task : Resimlerdeki maskelenmiş kısımları tamamlamaya çalışır.
Şekil 1. Discriminative ve Generative Modeller [1]

Piksel Bazlı Maskeleme

Piksel bazlı maskeleme, resmin ayrık küçük parçalarını maskeler ve bu ayrık maskeleri tamamlamaya çalışır. Buradaki temel fikir şöyledir: resmin belli bölgelerini piksel piksel maskelemek ve maske boyutlarını giderek büyütmek resmi tanımada ve sonuç olarak tamamlamada kolaylık sağlayabilir. Küçük boyutlu maskelerde, maskelemeden sonra bile resmin ne olduğu anlaşılabilir. Örneğin, 96x96 boyutlu bir resmi 1x1 piksellerle maskelersek resmin ne olduğu yine de anlaşılır. Bu fikirden yola çıkarak ilk aşamada 30K epoch ve Cifar10 veri seti ile eğitimlere başladık [3].

Piksel Bazlı Maskelerin Karşılaştırılması

Hangi boyutlu piksel bazlı maskelerin daha iyi olduğunu görmek için farklı boyutlu maskelerle denemelerimize başladık.

Şekil 2. 1x1'lik maskeler

1x1'lik maskeler, resmin alanının yarısını kaplayacak şekilde tasarlandı. Bu maskelemeden sonra resmin ne olduğu tahmin edilebiliyordu. Genel olarak 1x1'lik maskelerin tamamlanması daha kolaydı ve loss değerleri düşük çıkıyordu.

Şekil 3. 2x2'lik maskeler

1x1'lik maskelerle karşılaştırmak için eğitime 2x2'lik maskelerle devam ettik. Model bu aşamada piksel piksel tahmin yerine 2x2'lik bölgeleri tahmin edecekti. Tahmin edilecek bölgenin büyümesiyle loss değerleri de arttı.

Bu karşılaştırmaya daha sonra 1x1 ve 2x2'lik maskelerle ardışık olarak eğitilen tek bir model ekledik. Bu modelde resmi belli bir aşamaya kadar 1x1'lik maskelerle eğittik, ardından aynı resimleri 2x2'lik maskelerle maskeleyerek eğitime devam ettik. Eğitim sonunda 1x1'lik ve 2x2'lik maskelerle ardışık eğitilmiş bir model elde ettik.

Şekil 4. 4x4'lük maskeler

Bundan sonra 4x4'lük maskeler ve 1x1+2x2+4x4'lük ardışık maskelerle eğitilen modelleri karşılaştırdık. 1x1+2x2+4x4 ardışık maskeleriyle yapılan eğitimlerin 4x4'lük maskelerden daha düşük loss değerlerine ulaşması nedeniyle 4x4'lük maske kullanmak yerine 1x1+2x2+4x4'lük maskeler kullanmak eğitimde daha iyi sonuçlar verebilir sonucuna ulaştık.

Cifar10 veri seti, 32x32 boyutlu resimlerden oluştuğu için var olan resimlerin kalitesi düşüktü ve tamamlanan resim ile asıl resim arasındaki fark net bir biçimde anlaşılmıyordu. Bunun için yeni ve daha kaliteli bir veri setine geçtik.

Şekil 5. Cifar10 veri setinden Eğitim Örnekleri

Şekil 5'teki örneklerin ilk satırları orijinal resimleri, ikinci satırları ise resimlerin verilen maskeyle tamamlandıktan sonraki hallerini göstermektedir.

STL10 Resimlerinde Sonuçlar

STL10 veri seti 96x96 boyutlu ve Cifar10 veri setine göre daha kaliteli resimlerden oluşur[2]. Eğitimde kullanılan resimler, STL10 veri setinin etiketlenmemiş resimlerinden oluşmaktadır. Bu resimlerle daha önce yapılan 1x1'den 1x1+2x2+4x4'e kadar olan eğitimler tekrarlandı.

Şekil 6. 8x8'lik maskeler

Resimlerin daha büyük olmasından dolayı, 8x8'lik ve 1x1+2x2+4x4+8x8'lik maskelerle de model eğitildi.

Şekil 7. Örnek eğitim sonuçları

Şekil 7'deki eğitim sonuçlarına göre ikinci satırdaki ardışık olarak eğitilmiş modeller, ilk satırdaki tek maskelerle eğitilmiş modelden daha iyi sonuçlar vermektedir.

Şekil 8. Örnek eğitim sonuçları

Aynı eğitimlerde Şekil 8'de olduğu gibi ardışık olarak eğitilmiş modellerin daha kötü tamamladığı örnekler de bulunmaktaydı.

Sonuç

Piksel bazlı maskeler kullanılarak yapılan eğitimlerde çok aşamalı maskelemenin tek aşamalılardan genel olarak daha iyi olduğuna dair bir sonuca ulaşılamadı :(

Kaynaklar

[1] https://arxiv.org/pdf/1604.07379.pdf

[2] https://cs.stanford.edu/~acoates/stl10/

[3] https://www.cs.toronto.edu/~kriz/cifar.html

[4] https://github.com/novaresearchlab/pixel-based-context-encoders

--

--