딥 컨볼루셔널 GAN

PyTorch로 배우는 이미지 딥러닝

Michal Oleszak

Machine Learning Engineer

딥 컨볼루셔널 GAN 직관

  • 구분자에서는 선형층을 컨볼루션으로 대체
  • 생성기에서는 전치 컨볼루션 사용 가능
  • GAN 학습은 불안정하므로 추가 조정 필요
PyTorch로 배우는 이미지 딥러닝

DCGAN 가이드라인

  • 딥 컨볼루셔널 GAN(DCGAN)
  • DCGAN 가이드라인:
    • 스트라이드 컨볼루션만 사용
    • 선형층·풀링층 사용 금지
    • 배치 정규화 사용
    • 생성기: ReLU 사용(마지막 층은 tanh)
    • 구분자: Leaky ReLU 사용

활성화 함수 그래프

PyTorch로 배우는 이미지 딥러닝

스트라이드 컨볼루션

스트라이드 1 컨볼루션:

스트라이드 없는 컨볼루션 애니메이션.

nn.Conv2d(..., stride=1)

스트라이드 2 컨볼루션:

스트라이드 있는 컨볼루션 애니메이션.

nn.Conv2d(..., stride=2)
PyTorch로 배우는 이미지 딥러닝

컨볼루셔널 생성기 블록

def dc_gen_block(
    in_dim, out_dim, kernel_size, stride
):

return nn.Sequential( nn.ConvTranspose2d( in_dim, out_dim, kernel_size, stride=stride, ),
nn.BatchNorm2d(out_dim),
nn.ReLU() )

생성기 블록 구성:

  • 스트라이드 전치 컨볼루션
  • 배치 정규화
  • ReLU 활성화
PyTorch로 배우는 이미지 딥러닝

딥 컨볼루셔널 생성기

class DCGenerator(nn.Module):
    def __init__(self, in_dim, kernel_size=4, stride=2):
        super(Generator, self).__init__()
        self.in_dim = in_dim

self.gen = nn.Sequential( dc_gen_block(in_dim, 1024, kernel_size, stride), dc_gen_block(1024, 512, kernel_size, stride), dc_gen_block(512, 256, kernel_size, stride),
nn.ConvTranspose2d(256, 3, kernel_size, stride=stride),
nn.Tanh() )
def forward(self, x): x = x.view(len(x), self.in_dim, 1, 1) return self.gen(x)
PyTorch로 배우는 이미지 딥러닝

컨볼루셔널 구분자 블록

def dc_disc_block(
    in_dim, out_dim, kernel_size, stride
):

return nn.Sequential( nn.Conv2d( in_dim, out_dim, kernel_size, stride=stride, ),
nn.BatchNorm2d(out_dim),
nn.LeakyReLU(0.2), )

구분자 블록 구성:

  • 스트라이드 컨볼루션
  • 배치 정규화
  • Leaky ReLU 활성화
PyTorch로 배우는 이미지 딥러닝

딥 컨볼루셔널 구분자

class Discriminator(nn.Module):
    def __init__(self, kernel_size=4, stride=2):
        super(Discriminator, self).__init__()

self.disc = nn.Sequential( dc_disc_block(3, 512, kernel_size, stride), dc_disc_block(512, 1024, kernel_size, stride), nn.Conv2d(1024, 1, kernel_size, stride=stride), )
def forward(self, x): x = self.disc(x) return x.view(len(x), -1)
PyTorch로 배우는 이미지 딥러닝

Ayo berlatih!

PyTorch로 배우는 이미지 딥러닝

Preparing Video For Download...