Pengantar GAN

Deep Learning untuk Gambar dengan PyTorch

Michal Oleszak

Machine Learning Engineer

Generative Adversarial Networks

Gambar kucing hasil generasi.

Deep Learning untuk Gambar dengan PyTorch

Dataset Pokemon Sprites

Contoh gambar dari dataset Pokemon Sprites

  • Dataset Pokemon Sprites dari PokeAPI
  • Sekitar 1300 sprite makhluk mirip hewan dari gim Pokemon
  • Tujuan: menghasilkan Pokemon baru!
Deep Learning untuk Gambar dengan PyTorch

Arsitektur GAN

Diagram alur GAN.

Deep Learning untuk Gambar dengan PyTorch

Arsitektur GAN

Diagram alur GAN.

Deep Learning untuk Gambar dengan PyTorch

Arsitektur GAN

Diagram alur GAN.

Deep Learning untuk Gambar dengan PyTorch

Arsitektur GAN

Diagram alur GAN.

Deep Learning untuk Gambar dengan PyTorch

Proses belajar GAN

 

 

Diagram alur GAN.

  • Generator: belajar menghasilkan gambar yang realistis
  • Discriminator: belajar membedakan gambar palsu dari asli
  • Tujuan yang saling berlawanan membuat keduanya makin mahir
  • Akhirnya, generator seharusnya membuat gambar realistis
Deep Learning untuk Gambar dengan PyTorch

Generator dasar

class Generator(nn.Module):
    def __init__(self, in_dim, out_dim):
        super(Generator, self).__init__()

self.generator = nn.Sequential( gen_block(in_dim, 256), gen_block(256, 512), gen_block(512, 1024), nn.Linear(1024, out_dim), nn.Sigmoid(), )
def forward(self, x): return self.generator(x)
  • Definisikan kelas Generator
  • Rangkaian blok generator, layer linear, dan aktivasi sigmoid
    def gen_block(in_dim, out_dim):
      return nn.Sequential(
          nn.Linear(in_dim, out_dim),
          nn.BatchNorm1d(out_dim),
          nn.ReLU(inplace=True)
      )
    
  • Lewatkan input melalui semua layer
  • Input: noise ukuran in_dim
  • Output: gambar ukuran out_dim
Deep Learning untuk Gambar dengan PyTorch

Discriminator dasar

class Discriminator(nn.Module):
    def __init__(self, im_dim):
        super(Discriminator, self).__init__()

self.disc = nn.Sequential( disc_block(im_dim, 1024), disc_block(1024, 512), disc_block(512, 256), nn.Linear(256, 1), )
def forward(self, x): return self.disc(x)
  • Definisikan kelas Discriminator
  • Rangkaian blok discriminator dan satu layer linear
    def disc_block(in_dim, out_dim):
      return nn.Sequential(
          nn.Linear(in_dim, out_dim),
          nn.LeakyReLU(0.2)
      )
    
  • Lewatkan input melalui semua layer
  • Input: gambar ukuran in_dim
  • Output: klasifikasi ukuran 1
Deep Learning untuk Gambar dengan PyTorch

Ayo berlatih!

Deep Learning untuk Gambar dengan PyTorch

Preparing Video For Download...