บทนำสู่ GANs

Deep Learning สำหรับภาพด้วย PyTorch

Michal Oleszak

Machine Learning Engineer

General Adversarial Networks

ภาพแมวที่สร้างขึ้น

  • https://thesecatsdonotexist.com
  • Generative Adversarial Networks (GANs)
  • สร้างตัวอย่างใหม่จากข้อมูลที่ใช้ฝึก
Deep Learning สำหรับภาพด้วย PyTorch

ชุดข้อมูล Pokemon Sprites

ตัวอย่างภาพจากชุดข้อมูล Pokemon Sprites

  • ชุดข้อมูล Pokemon Sprites จาก PokeAPI
  • สไปรต์ของสัตว์ประหลาดในเกม Pokemon ประมาณ 1,300 ภาพ
  • เป้าหมาย: สร้าง Pokemon ใหม่!
Deep Learning สำหรับภาพด้วย PyTorch

สถาปัตยกรรม GANs

ไดอะแกรมขั้นตอนการทำงานของ GAN

Deep Learning สำหรับภาพด้วย PyTorch

สถาปัตยกรรม GANs

ไดอะแกรมขั้นตอนการทำงานของ GAN

Deep Learning สำหรับภาพด้วย PyTorch

สถาปัตยกรรม GANs

ไดอะแกรมขั้นตอนการทำงานของ GAN

Deep Learning สำหรับภาพด้วย PyTorch

สถาปัตยกรรม GANs

ไดอะแกรมขั้นตอนการทำงานของ GAN

Deep Learning สำหรับภาพด้วย PyTorch

กระบวนการเรียนรู้ของ GANs

 

 

ไดอะแกรมขั้นตอนการทำงานของ GAN

  • Generator: เรียนรู้การสร้างภาพที่ดูสมจริง
  • Discriminator: เรียนรู้การแยกแยะภาพปลอมจากภาพจริง
  • เป้าหมายที่ขัดแย้งกันช่วยให้แต่ละเครือข่ายพัฒนาได้ดีขึ้น
  • ในที่สุด Generator จะสร้างภาพที่สมจริงได้
Deep Learning สำหรับภาพด้วย PyTorch

Generator พื้นฐาน

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)
  • กำหนดคลาส Generator
  • ลำดับของ generator block, linear layer และ sigmoid activation
    def gen_block(in_dim, out_dim):
      return nn.Sequential(
          nn.Linear(in_dim, out_dim),
          nn.BatchNorm1d(out_dim),
          nn.ReLU(inplace=True)
      )
    
  • ส่งข้อมูลผ่านทุก layer
  • Input: noise ขนาด in_dim
  • Output: ภาพขนาด out_dim
Deep Learning สำหรับภาพด้วย PyTorch

Discriminator พื้นฐาน

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)
  • กำหนดคลาส Discriminator
  • ลำดับของ discriminator block และ linear layer
    def disc_block(in_dim, out_dim):
      return nn.Sequential(
          nn.Linear(in_dim, out_dim),
          nn.LeakyReLU(0.2)
      )
    
  • ส่งข้อมูลผ่านทุก layer
  • Input: ภาพขนาด in_dim
  • Output: ผลการจำแนกขนาด 1
Deep Learning สำหรับภาพด้วย PyTorch

มาฝึกกันเถอะ!

Deep Learning สำหรับภาพด้วย PyTorch

Preparing Video For Download...