Úvod do GAN

Deep Learning pro obrázky s PyTorchem

Michal Oleszak

Machine Learning Engineer

Generativní soupeřivé sítě

Vygenerovaný obrázek kočky.

Deep Learning pro obrázky s PyTorchem

Datová sada Pokemon Sprites

Ukázka obrázků z datové sady Pokemon Sprites

  • Datová sada Pokemon Sprites od PokeAPI
  • Přibližně 1 300 sprite obrázků tvorů z videohry Pokemon
  • Cíl: Generování nových Pokémonů!
Deep Learning pro obrázky s PyTorchem

Architektura GAN

Diagram pracovního postupu GAN.

Deep Learning pro obrázky s PyTorchem

Architektura GAN

Diagram pracovního postupu GAN.

Deep Learning pro obrázky s PyTorchem

Architektura GAN

Diagram pracovního postupu GAN.

Deep Learning pro obrázky s PyTorchem

Architektura GAN

Diagram pracovního postupu GAN.

Deep Learning pro obrázky s PyTorchem

Proces učení GAN

 

 

Diagram pracovního postupu GAN.

  • Generátor: učí se vytvářet realisticky vypadající obrázky
  • Diskriminátor: učí se rozlišovat falešné obrázky od skutečných
  • Protichůdné cíle zajišťují, že každá síť se ve své úloze zlepšuje
  • Na konci by měl generátor produkovat realistické obrázky
Deep Learning pro obrázky s PyTorchem

Základní generátor

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)
  • Definice třídy Generator
  • Sekvence bloků generátoru, lineární vrstva a sigmoida
    def gen_block(in_dim, out_dim):
      return nn.Sequential(
          nn.Linear(in_dim, out_dim),
          nn.BatchNorm1d(out_dim),
          nn.ReLU(inplace=True)
      )
    
  • Vstup prochází všemi vrstvami
  • Vstup: šum velikosti in_dim
  • Výstup: obrázek velikosti out_dim
Deep Learning pro obrázky s PyTorchem

Základní diskriminátor

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)
  • Definice třídy Discriminator
  • Sekvence bloků diskriminátoru a lineární vrstva
    def disc_block(in_dim, out_dim):
      return nn.Sequential(
          nn.Linear(in_dim, out_dim),
          nn.LeakyReLU(0.2)
      )
    
  • Vstup prochází všemi vrstvami
  • Vstup: obrázek velikosti in_dim
  • Výstup: klasifikace velikosti 1
Deep Learning pro obrázky s PyTorchem

Pojďme procvičovat!

Deep Learning pro obrázky s PyTorchem

Preparing Video For Download...