Üretken modeller ve GAN'lar nelerdir? Bilgisayar vizyonunun büyüsünü deneyimlemek için bir makale (bağlantı ile)

Eser sahibi: PULKIT SHARMA

Çeviri: Wu Jindi

Redaksiyon: Wang Ting

Bu makalenin uzunluğu yaklaşık olarak 4700 kelime , Okumanız tavsiye edilir 15 dakika

Bu makale, üretken modellerin ve üretken düşmanlık ağlarının (GAN) çalışma ilkelerini ve eğitim adımlarını tanıtmaktadır.

Genel Bakış

  • Üretken modeller ve GAN, bilgisayarla görme uygulamaları alanındaki en son gelişmelerin temel içeriğidir.
  • Bu makale size GAN dünyasını ve farklı bileşenlerini tanıtacaktır.
  • Gerçek dünyada bekleyen bazı heyecan verici GAN örnekleri var - hadi bunun içine dalalım!

Giriş

Aşağıdaki resim koleksiyonundaki özellikleri seçebilir misiniz:

Peki ya bu resim koleksiyonu?

Bu görüntülerdeki tüm nesneler ve hayvanlar, Generative Adversarial Network (GAN) adı verilen bir bilgisayar görüntü modeli tarafından oluşturulur! Bu, şu anda en popüler derin öğrenme dallarından biridir. Bu kesinlikle gizli yaratıcılığımızı canlandırmamıza yardımcı olur!

GAN, derin öğrenme alanında kesinlikle en sevdiğim konulardan biridir. Bu modelleri farklı alanlara uygulayabilmemizi seviyorum - yeni yüzler üretmekten tablo oluşturmaya (ve eski resimlerdeki eksik kısımları doldurmaya).

Bu makale sizi üretken ağlar ve GAN'larla tanıştırmayı amaçlamaktadır. Ayrıca bu üretken ağların çeşitli uygulamalarını inceleyecek ve onları çalıştıran bileşenlere bakacağız.

içindekiler

1. Üretken model nedir?

2. Modeli oluşturan uygulama

3. Üretken model türleri

a. Ekran yoğunluğu

b. Örtülü yoğunluk

4. Ekran yoğunluğu modelini anlayın

5. Üretken Çekişmeli Ağlara (GAN) Giriş

6. GAN'ın adım adım eğitim süreci

1. Üretken model nedir?

İlk önce, üretken modeller kavramını anlayalım ve ardından uygulamalarını kapsamlı bir şekilde inceleyelim. Bu, farklı kullanım durumlarını görselleştirmenize ve daha sonra GAN'ı tartışırken bunları birbirine bağlamanıza yardımcı olacaktır.

Makine öğreniminde veya derin öğrenmede, esas olarak iki ana sorun türü ile ilgileniriz: denetimli öğrenme ve denetimsiz öğrenme.

Denetimli öğrenme probleminde, bağımsız değişkenlerimiz (x) ve hedef etiketlerimiz (y) var. Amaç, x ve y'yi haritalamak için kullanılan eşleme işlevini öğrenmektir:

Denetimli öğrenmenin örnekleri arasında sınıflandırma, regresyon, nesne algılama, görüntü bölümleme vb. Yer alır.

Öte yandan, denetimsiz öğrenme probleminin yalnızca bağımsız değişkenleri (x) vardır ve hedef etiketleri yoktur. Buradaki amaç, verilerden bazı potansiyel kalıpları öğrenmektir. Denetimsiz öğrenmeye örnek olarak kümeleme, boyut azaltma vb. Dahildir.

Öyleyse üretken model nerede uygundur?

Eğitim verilerini elde ettiğimizde, üretken model eğitim setinin veri dağılımından yeni örnekler oluşturacaktır. Dağılımı olan bir eğitim setimiz olduğunu varsayalım. Üretilen örneklerin dağılımının benzer olması için örnekler oluşturmak istiyoruz. Biraz daha basitleştireyim.

Üretken bir model kullanarak, önce eğitim setinin dağılımını öğreniriz ve sonra öğrenilen dağılımı bazı değişkenlerle birlikte bazı yeni gözlemler veya veri noktaları oluşturmak için kullanırız.

Şimdi, model dağılımı ile verilerin gerçek dağılımı arasındaki eşlemeyi öğrenmenin, daha sonraki bir bölümde tartışacağımız birçok yolu var. O zamana kadar, üretken modellere olan ilginizi artırabilecek bazı harika üretken uygulamaları göstermeme izin verin.

2. Üretken modelin uygulanması

Neden ilk etapta model üretmemiz gerekiyor, ben de başta bu sorunu yaşadım. Ama ne kadar çok uygulamayla karşılaşırsam, üretken modellerin gücüne o kadar çok inanıyorum.

Bu nedenle, bu soruyu yanıtlamak için bu bölümde üretken modellerin bazı kullanım durumlarını açıklamama izin verin.

Veri oluştur

Hiç sıfırdan derin bir öğrenme oluşturmayı denediniz mi? Çoğumuzun karşılaştığı en yaygın zorluklardan biri eğitim verilerinin eksikliğidir. Çok fazla veriniz olsa bile, daha fazla veri almaktan rahatsız olmayacağınıza inanıyorum! Kim daha fazla veriyi sevmez?

Bazı sektörlerde, daha derin modelleri eğitmek için daha fazla veriye ihtiyacımız var. Tıp endüstrisi buna iyi bir örnek. Üretken modeller burada önemli bir rol oynayabilir çünkü yeni veri oluşturmak için kullanılabilirler. Oluşturulan bu görüntüler, veri setinin boyutunu artırmak için kullanılabilir. Bu harika bir örnek, üretici model yatak odası örneğini oluşturmak için kullanılıyor.

(Https://arxiv.org/abs/1511.06434)

Yüzler oluşturmak için üretken modeller de kullanabiliriz. Bu makale gerçekçi yüz fotoğraflarının oluşumunu tartışmaktadır. Veri-çizgi film karakterleri, ünlülerin görüntüleri vb. Oluşturmak için üretken modelleri kullanabileceğimiz birçok kullanım durumu vardır.

Resimden Resme Çeviri

Özellikle bu üretimsel model uygulamasını seviyorum. Uydu fotoğraflarını Google Haritalar'a dönüştürmek, gündüz fotoğraflarını gece fotoğraflarına dönüştürmek, siyah beyaz fotoğrafları renkli fotoğraflara dönüştürmek ve mevsimleri değiştirmek (yazı kışa dönüştürmek gibi) gibi bazı ilginç şeyler yapabilirsiniz:

Bunların hepsi resimden resme çeviri görevleridir. Bu makale, resimden resme çeviri görevleri için birçok yöntemi açıklar

(Https://arxiv.org/abs/1611.07004)

Yüzde yaşlanma ve yaşlanma

Yüzde yaşlanma ve yaşlanma, doğal yaşlanma ve yaşlanmayı geciktiren yüz görüntülerinin işleme sürecidir:

Bu, çağlar boyunca yüzleri tanımlamak için veya eğlence amacıyla kullanılabilir. Daha ayrıntılı bilgi istiyorsanız, lütfen bu belgeye başvurmaktan çekinmeyin

(Https://arxiv.org/pdf/1802.00237.pdf)

3B nesne oluşturma, dikkat tahmini, metinden görüntüye çeviri, vb. Gibi üretken modellerin daha fazla uygulaması vardır. Öncelikle farklı türdeki üretken modelleri anlayalım.

3. Üretken model türleri

İki tür üretken model vardır:

1. Açık yoğunluk modeli

2. Örtük yoğunluk modeli

İlk olarak, ikisi arasındaki farkı anlamak için lütfen aşağıdaki tabloya bakın:

Açık yoğunluk modeli, açık bir yoğunluk işlevini tanımlarken, örtük yoğunluk modeli, doğrudan veri üretebilen rastgele bir işlemi tanımlar.

Bu, Ian Goodfellow'un farklı türdeki üretken modellerinin zihin haritasıdır:

Bu üretken modelleri daha ayrıntılı olarak anlayalım.

4. Açık yoğunluk modelini anlayın

Açık yoğunluk modelinin açık bir yoğunluk fonksiyonunu tanımladığını biliyoruz. Ardından, eğitim verilerinde işlevin olasılığını maksimize etmeye çalışır. Bu açık yoğunluk modellerinin kullanımının kolay olup olmadığına göre, bunları birkaç alt bölüme ayırabiliriz:

  • Yoğunluğu kaldırabilir
  • Yaklaşık yoğunluk

İşlenebilir, dağıtımı etkili bir şekilde yakalamak için parametrik bir işlev tanımlayabileceğimiz anlamına gelir. Bununla birlikte, görüntülerin dağıtımı veya ses dalgalarının dağıtımı gibi birçok dağıtım karmaşıktır ve bunları yakalamak için parametrik bir işlev tasarlamak zordur. Dağılımı yakalamak için bir parametre işlevi olmayan bu model yaklaşık bir yoğunluk modelidir.

Yoğunluk fonksiyonunu tanımlamak için, görüntünün (x) olasılığını tek boyutlu dağılımın ürününe ayırmak için zincir kuralını kullanırız:

Burada p (x), x görüntüsünün olasılığını temsil eder ve sağ taraf, önceki tüm pikseller verildiğinde i-inci pikselin değerinin olasılığını temsil eder. Bu işlevi tanımladıktan sonra, eğitim verisi olasılığını en üst düzeye çıkarıyoruz. İşlenebilir açık yoğunluk modeli bu şekilde çalışır.

Pixel RNN ve Pixel CNN, en yaygın kullanılan işlenebilir yoğunluk modelleridir. Bunları aşağıda daha detaylı tartışalım.

Piksel RNN

Pixel RNN, sırayla görüntü pikselleri oluşturan derin bir sinir ağıdır. Köşeden pikseller üretir ve ardından iki ardışık piksel oluşturur. Bunu bir örnekle açıklayayım.

5 × 5 bir görüntü oluşturmak istediğimizi varsayalım. Aşağıda gösterildiği gibi 25 piksel değerine sahip olacaktır:

Model ilk olarak bir köşeden pikseller oluşturacaktır:

Ardından, karşılık gelen iki pikseli oluşturmak için bu köşe pikselini kullanacaktır:

Ve bu işlem, son piksel oluşturulana kadar devam eder:

Piksellerin üretimi önceki tüm piksel değerlerine bağlıdır ve bağımlılık, tekrarlayan sinir ağı (RNN) veya uzun kısa süreli bellek (LSTM) kullanılarak modellenir.

Bu, Pixel RNN'nin nasıl çalıştığına dair kısa bir genel bakıştır. Daha derinlemesine okumak için resmi Pixel RNN dosyasını kontrol edebilirsiniz. (Https://arxiv.org/pdf/1601.06759.pdf)

Piexl RNN kullanmanın dezavantajı, üretimin sürekli olması nedeniyle hızın çok yavaş olmasıdır. Bu nedenle Piexl CNN tanıtıldı.

Piexl CNN

Pixel CNN kavramı, Pixel RNN'ye çok benzer. Ancak önceki piksellerin bağımlılıklarını modellemek için RNN kullanmak yerine, bağlam alanında CNN kullanılır. Tıpkı Pixel RNN'de olduğu gibi, köşeden başlıyoruz ve ardından iki ardışık piksel oluşturuyoruz.

Pikselleri oluşturmak için (xi varsayarak), model yalnızca önceden oluşturulmuş pikselleri, yani x1, x2, ..., xi-1 kullanabilir. Bunun olmasını sağlamak için engelleme filtreleri kullanıyoruz:

Oluşturulan pikselin değeri 1'dir ve geri kalanına 0 değeri atanır. Bu yalnızca oluşturulan piksel değerlerini dikkate alacaktır. Pixel RNN'nin eğitim süresiyle karşılaştırıldığında, Pixel CNN'in eğitim hızı daha hızlıdır, ancak piksel üretimi hala süreklidir, bu nedenle süreç daha yavaştır.

Özetle, hem Pixel RNN hem de Pixel CNN, modelin performansını ölçmek için bize iyi bir değerlendirme indeksi sağlayan p (x) olasılığını açıkça hesaplayabilir. Yukarıda üretilen örneğin iyi olduğunu görüyoruz. Öte yandan bu modellerden üretim, sürekli bir süreç olduğu için yavaştır.

Şimdiye kadar, işlenebilecek yoğunluk fonksiyonunu gördük. Bu işlevlerin olasılığını eğitim verileri üzerinde doğrudan optimize edebiliriz. Şimdi, Varyasyonel Otomatik Kodlayıcı (VA) adı verilen daha üretken bir modeli tartışacağız.

Otomatik kodlayıcının çalışma prensibinin kısa açıklaması

Bir otomatik kodlayıcının ne olduğunu hızlıca anlayalım ve ardından değişken otomatik kodlayıcı kavramını ve bunları görüntü oluşturmak için nasıl kullanabileceğimizi tartışacağız.

Otomatik kodlayıcı, düşük boyutlu özellik temsilini öğrenmenin denetimsiz bir yoludur.

Birbirine bağlı iki ağdan oluşurlar - kodlayıcı ve kod çözücü. Kodlayıcının amacı bir giriş (x) elde etmek ve bir özellik haritası (z) oluşturmaktır:

Bu özellik haritasının şekli (z) genellikle x'ten daha küçüktür. Neden böyle olduğunu düşünüyorsunuz?

Z'nin yalnızca girdi verilerindeki değişiklikleri tanımlayabilen anlamlı faktörleri yakalamasını istediğimizden, z'nin şekli genellikle x'ten daha küçüktür. Şimdi soru şu: Bu özellik temsilini (z) nasıl öğreneceğiz? Bu modeli nasıl eğitiyoruz? Bu amaçla, çıkarılan özelliklere dayalı bir kod çözücü ağı ekleyebilir ve modeli L2 kaybını kullanarak eğitebiliriz:

Otomatik kodlayıcı ağı böyle görünür. Ağ, orijinal giriş verilerini (x) yeniden yapılandırmak için özellikleri (z) kullanmak üzere eğitilmiştir. Çıktı () girişten (x) farklıysa, L2 kaybı onu cezalandıracak ve bu da giriş verilerinin yeniden yapılandırılmasına yardımcı olacaktır.

Şimdi, bu otomatik kodlayıcılardan nasıl yeni görüntüler oluşturabiliriz?

Varyasyonel otomatik kodlayıcı

Varyasyonel otomatik kodlayıcının kullanışlı olduğu yer burasıdır. Eğitim verilerinin bazı temeldeki gözlemlenmemiş temsillerden (z) geldiğini varsayarlar.

Basit bir otomatik kodlayıcı ile değişken otomatik kodlayıcı arasındaki temel fark, özellikleri doğrudan giriş verilerinden çıkarmak yerine, eğitim verilerinin olasılık dağılımını modellemeye çalışmamızdır.

Bu amaçla, kodlayıcının n boyutunda bir kodlama vektörü çıktısına izin vermek yerine, n-a ortalama vektör boyutunda iki vektör ve başka bir standart sapma vektörü çıkarıyoruz.

Varyasyonel otomatik kodlayıcının eksiksiz ağ yapısı aşağıdaki gibidir:

Buradaki ortalama değer, giriş kodunun merkez konumunu kontrol eder ve standart sapma, ortalama değer kodunun değişim aralığını kontrol eder. Bu değişken otomatik kodlayıcıyı eğitmek için kullanılan kayıp işlevi, Kullback-Leibler diverjansıdır (veya KL diverjansıdır). İki olasılık dağılımının farklı derecelerini ölçer:

KL farkını en aza indirmemiz gerekiyor. Bu, olasılık dağılımının parametrelerini (ortalama ve standart sapma) optimize eder. Model eğitimi tamamlandığında ondan yeni görüntüler oluşturabiliriz. Nasıl yapılacağını sana anlatayım.

Görüntü oluşturmak için değişken otomatik kodlayıcıları nasıl kullanıyoruz?

Modeli eğittikten sonra, kodlayıcı bölümünü sileceğiz ve aşağıdaki ağı alacağız:

Şimdi, ortalaması 0 ve standart sapması 1 olan basit bir olasılık dağılımı seçiyoruz ve bunu yukarıdaki ağa girdi olarak geçiriyoruz. Ardından bir çıktı oluşturun. Varyasyonel otomatik kodlayıcı, görüntüleri oluşturmamıza bu şekilde yardımcı olur.

Bu yöntem görüntü oluşturmak için çok kullanışlı olsa da bazı dezavantajları da vardır. Varyasyonel otomatik kodlayıcıların ana dezavantajlarından biri, üretilen örneklerin en gelişmiş GAN'lardan alınan örneklerden daha bulanık ve düşük kaliteli olmasıdır. Bu aktif bir araştırma alanıdır - umarım yakında iyileştirmeler görebiliriz!

Şimdiye kadar gördüğümüz tüm üretken modeller, açık bir yoğunluk işlevi tanımladı. Ya yoğunluğu açıkça modellemek istemiyorsak, ancak yalnızca eğitim setinden örtük olarak örneklemek istiyorsak? GAN'lar burada devreye girer. Eğitim setinden numune almaya yardımcı olan örtük bir yoğunluk işlevine sahiptirler.

5. Üretken Çekişmeli Ağlara (GAN) Giriş

Öncelikle GAN'ların anlaşılmasını kolaylaştıracak bir mimari göstermeme izin verin:

GAN iki farklı ağdan oluşur:

  • Jeneratör ağı
  • Ayrımcı ağ

Her ağı ayrıntılı olarak açıklamama izin verin.

Jeneratör ağı

Jeneratör ağının amacı, girdi olarak rastgele gürültü verilen bir görüntü oluşturmaktır:

Jeneratör ağı, bir sinir ağı veya bir evrişimli sinir ağıdır (CNN). Rastgele bir gürültü geçiyoruz ve ağ bu gürültüyü bir görüntü oluşturmak için kullanıyor.

Ayrımcı ağ

Ayrımcı ağın işi çok basit. Girdinin gerçek mi sahte mi olduğunu anlamalıdır:

Eğitim setindeki tüm görüntüler doğru (veya 1) olarak işaretlenir ve jeneratör ağında oluşturulan tüm görüntüler yanlış (veya 0) olarak işaretlenir. Ayırımcının görevi iki sınıflandırma yapmaktır ve girdiyi doğru veya yanlış (1 veya 0) olarak sınıflandırmalıdır.

Bu modelin avantajı, tamamen türetilebilir olmasıdır. Hem jeneratör hem de ayırıcı sinir ağları (veya evrişimli sinir ağları) olduğundan, tamamen türetilebilir bir ağımız var.

Modeli eğittik, ayırıcı ağın sonundaki kayıp fonksiyonunu hesapladık ve kaybı tekrar ayırıcı ve jeneratör modellerine yaydık.

Bu, iki ağın parametrelerini güncelleyecek ve ardından sonuçları iyileştirecektir. Jeneratör ve ayırt edici, bir minimax oyununda birlikte eğitilir:

burada:

  • p (veri) eğitim seti verilerinin dağılımını temsil eder
  • D (x), x'in eğitim verilerinden gelme olasılığıdır
  • p (z) giriş gürültü değişkenini temsil eder

Ayırıcı (D), D (x) 1'e yakın ve D (G (z)) 0'a yakın olacak şekilde amaç fonksiyonunu maksimize etmek ister. Bu sadece, ayırt edicinin eğitim setindeki tüm görüntüleri doğru (1) ve oluşturulan tüm görüntüleri yanlış (0) olarak tanıması gerektiği anlamına gelir.

Jeneratör (G), D (G (z)) 1'e eşit olacak şekilde amaç fonksiyonunu en aza indirmek ister. Bu, jeneratörün ayırıcı ağ tarafından gerçek (1) olarak sınıflandırılan bir görüntü oluşturmaya çalıştığı anlamına gelir.

Generative Adversarial Network (GAN) bu şekilde çalışır. Şimdi GAN'ların adım adım eğitim sürecini tartışalım.

6. GAN'ın adım adım eğitim süreci

GAN'ın eğitim yöntemi aşağıdaki gibidir:

1. Öncelikle, rastgele bir dağılımdan gürültü örnekleri alıyoruz, bunları Jeneratör (G) ağına besliyoruz ve bazı görüntüler oluşturuyoruz (sahte görüntüler, etiket = 0):

2. Ardından, jeneratör ağından oluşturulan sahte görüntüyü (etiket = 0) ve eğitim setinden gerçek görüntüyü (etiket = 1) elde ediyoruz ve bu çiftleri sınıflandırmak için ayırıcı (D) ağına giriyoruz. :

3. Daha önce gözlemlediğiniz gibi, ayırıcı bir ikili sınıflandırıcıdır. Kaybı hesaplar (ikili çapraz entropi olabilir)

4. Daha sonra bu kaybı diskriminatör ve jeneratör ağına geri yayar ve ağırlıklarını güncelleriz. Geri yayılım için Adam'ı veya başka bir optimize ediciyi seçebiliriz

Bu, GAN eğitim sürecidir.

Son not

GAN, aktif bir araştırma alanıdır. Neredeyse her hafta bir sonraki GAN sürümünde düzenli güncellemeler göreceğiz. Araştırmacılar tarafından yapılan çalışmaları buradan görüntüleyebilirsiniz.

https://github.com/zhangqianhui/AdversarialNetsPapers

Bir sonraki makalemde, bir vaka çalışması yapacağım ve yeni görüntüler oluşturmak için Generative Adversarial Networks (GAN) uygulamasını göstereceğim. Bizi çok eğlenceli bekliyor!

Orjinal başlık:

Üretken Modeller ve GAN'lar nelerdir? Bilgisayarla Görmenin Büyüsü

Orijinal bağlantı:

https://www.analyticsvidhya.com/blog/2020/01/generative-models-gans-computer-vision/

Editör: Wang Jing

Redaksiyon: Lin Yilin

Çevirmen Profili

Wu Jindi , Syracuse Üniversitesi Bilgisayar Bilimleri Yüksek Lisansının ilk yılı. Zorluklarla yüzleşmek benim için en rahat durumdur, yapamadığım şeylere katlanmaya meyilliyim. Amacım erken yatıp erken kalkan bir Havalı Kız olmak.

-Bitiş-

Tsinghua-Qingdao Veri Bilimi Enstitüsü'nün resmi WeChat kamu platformunu takip edin " THU Veri Pastası "Ve kız kardeş numarası" Veri Pastası THU "Daha fazla ders avantajı ve kaliteli içerik elde edin.

Yeni taç virüsü Ermenistan'da ortaya çıkarsa, programcılar simülasyon için Python kullanır (kod eklenmiştir)
önceki
Kaçak pangolinler koronavirüs taşır ve 2019-nCoV'a oldukça benzerdir
Sonraki
Wu Enda AI öğrenme rotası, ML, DL ve diğer kurslar ve kaynak önerileri! "Ekli bağlantı"
Sorumlu planlayıcı, elinde bir resim ve bir dip ile eski şehir için bir "önleme ve kontrol haritası" çizer.
Jiu San Society'nin Tai'an Belediye Partisi Komitesinin Gençlik Çalışma Komitesi, grup acil kan bağışı etkinlikleri düzenlemektedir.
Salgından sonra aşkı daha iyi anlıyoruz: Bahar çiçek açıyor, hadi evlenelim
En sevimli insanı önemsiyorum! Jining First People's Hospital'ın en yüksek nezaketi, Hubei kahramanlarının fiziksel muayenesidir.
Çiftçilerin çevrimiçi ve çevrimdışı birlikte çalışmasına yardımcı olmayı seviyorum, 100.000 kedi Laiyang armudu iki haftadan kısa bir süre içinde tükendi
Yayın+ Yeni Yıla Hoş Geldiniz ve Xi Jinpingin Forge'u dinleyin
Yeni Yıl özel olarak seçilen "Jiwufu", dijital ekonomi "Yeni Yıl tadı" nın daha uzun sürmesini sağlıyor
Sabah saat üçte ikinci doğan anne burada geçimini sağlıyor
Ülkenin dört bir yanındaki insanların sevgisini Wuhan aldı
Liderliği onaylamaya çağırın! Beyaz giysili askerler her yerde savaşı cepheye davet ediyor
Histogram, yığılmış histogram ve şelale grafiği arasındaki fark nedir? Python ile nasıl çizilir?
To Top