GAN 소개

PyTorch로 배우는 이미지 딥러닝

Michal Oleszak

Machine Learning Engineer

생성적 적대 신경망

생성된 고양이 이미지.

PyTorch로 배우는 이미지 딥러닝

Pokemon Sprites 데이터셋

Pokemon Sprites 데이터셋의 이미지 샘플

  • PokeAPI 의 Pokemon Sprites 데이터셋
  • 포켓몬 비디오게임의 동물형 캐릭터 스프라이트 약 1300개
  • 목표: 새로운 포켓몬 생성!
PyTorch로 배우는 이미지 딥러닝

GAN 아키텍처

GAN 워크플로 다이어그램.

PyTorch로 배우는 이미지 딥러닝

GAN 아키텍처

GAN 워크플로 다이어그램.

PyTorch로 배우는 이미지 딥러닝

GAN 아키텍처

GAN 워크플로 다이어그램.

PyTorch로 배우는 이미지 딥러닝

GAN 아키텍처

GAN 워크플로 다이어그램.

PyTorch로 배우는 이미지 딥러닝

GAN 학습 과정

 

 

GAN 워크플로 다이어그램.

  • 생성기: 실제처럼 보이는 이미지를 학습해 생성합니다
  • 판별기: 가짜와 진짜 이미지를 구분하도록 학습합니다
  • 상반된 목표로 두 네트워크가 각자 더 향상됩니다
  • 최종적으로 생성기는 현실적인 이미지를 만듭니다
PyTorch로 배우는 이미지 딥러닝

기본 생성기

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 클래스를 정의합니다
  • 생성 블록들, 선형 계층, 시그모이드 활성화의 시퀀스
    def gen_block(in_dim, out_dim):
      return nn.Sequential(
          nn.Linear(in_dim, out_dim),
          nn.BatchNorm1d(out_dim),
          nn.ReLU(inplace=True)
      )
    
  • 입력을 모든 계층에 통과시킵니다
  • 입력: 크기 in_dim의 노이즈
  • 출력: 크기 out_dim의 이미지
PyTorch로 배우는 이미지 딥러닝

기본 판별기

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 클래스를 정의합니다
  • 판별 블록들과 선형 계층의 시퀀스
    def disc_block(in_dim, out_dim):
      return nn.Sequential(
          nn.Linear(in_dim, out_dim),
          nn.LeakyReLU(0.2)
      )
    
  • 입력을 모든 계층에 통과시킵니다
  • 입력: 크기 in_dim의 이미지
  • 출력: 크기 1의 분류값
PyTorch로 배우는 이미지 딥러닝

연습해 봅시다!

PyTorch로 배우는 이미지 딥러닝

Preparing Video For Download...