본문 바로가기
Computer Science/AL, ML

[Generative Model] 다양한 GAN

by Gofo 2022. 6. 16.

DCGAN

GAN의 변형으로 그림을 만드는데 주로 이용한다.

 

구조

  • Generator
    • transposed convolution으로 구성
    • convolution operation 뒤에 batch norm 적용
    • hidden layer - ReLU / output layer - tanh
  •  Discriminator
    • strided convolution으로 구성
    • convolution operation 뒤에 batch norm 적용
    •  hidden layer - LeakyRelu

 

 

천천히 변하는 이미지

Z가 조금 바뀌면 결과물도 조금 바뀌는 특성을 이용한다.

 

Random noise를 2개 생성하고 그 2개에 대한 interpolation을 input으로 넣는다.

Image에 대한 interpolation이 아닌 z(input)에 대한 interpolation을 함으로써 천천히 변하는 결과물을 얻을 수 있다.

 

 

두 이미지 합치기

두 z를 더하고 뺌으로써 원하는 결과물을 만들어낼 수 있다.

 


Laplacian Pyramid GAN

Scale을 조금씩 키워나가면서 이미지의 quality를 높인다.

한번에 확 키우는 것보다 더 수월하게 quality를 높일 수 있다.

 

다만 과정의 architecture가 복잡하고 시간이 더 오래 걸릴 수 있다.

 

예시

 


Conditional GAN (cGAN)

특정 condition의 더 다양한 이미지를 생성할 수 있다.

 

Input으로 random noise Z 외에도 추가적인 정보를 넣는다.

만들어진 이미지와 class가 동일한 이미지와 비교함으로써 해당 class(condition)의 이미지를 생성할 수 있다.

 

Objective function에 하나의 input이 더 들어간다.

$min_G max_D V(D, G) = E_{x \sim p_{data}}[log(D(x, y))] + E_{x \sim p_G}[log(1-D(G(x, y)))]$

 

 

Pix2Pix Image

이미지 변환을 위해 주로 사용되는 cGAN의 변형이다.

예를 들어 지도 → 항공뷰로의 변환을 하거나 스케치 → 컬러가 입혀진 이미지로의 변환 등의 작업을 할 수 있다.

 

Condition으로 이미지를 넣는다.

단, x와 y가 pair로 데이터셋에 존재해야 한다.

 

$min_G max_D L_{cGAN}(G, D) + \lambda L_{L1}(G)$

 

$L_{cGAN}(G, D) = E_{x \sim p_{data}}[log(D(x, y)))] + E_{x \sim p_G}[log(1-D(x, G(x, y)))]$

$L_{L1}(G) = E_{x, y, z}[|| y - G(x, z) || _1 ]$ → 얼마나 realistic한가

$\lambda = 100$

 

 

 

결과

L1만 이용하면 realistic하기만하면 되고 input과 유사하지는 않아도 된다.

반면 cGAN만 이용하면 input과 유사하기만 하면 되고 realistic하지는 않아도 된다.

그런데 cGAN + L1을 같이 사용하면 input과 유사하면서도 realistic한 결과를 얻을 수 있다.

 

Pix2Pix의 단점

Pix2Pix에서 x와 y가 pair로 데이터셋에 존재해야한다.

그런데 pair로 데이터셋을 준비하기는 쉽지 않다.

 

Cycle GAN

(x, y)가 pair로 데이터셋에 존재해야하는 문제를 해결한다.

 

X → Y, Y → X를 만드는 2개의 generator를 둔다.

이를 통해 서로가 서로를 만들도록 함으로써 (x, y) 중 하나만 데이터셋에 존재하면 된다.

 

원래대로 같게 돌아가기를 목적으로 하기 때문에 원본의 정보가 최대한 유지되어야 한다.

따라서 바뀌는 부분(오브젝트)을 제외한 나머지 부분(잔디, 하늘 등)은 거의 바뀌지 않는다.

 

 


SRGAN (Super-Resolution GAN)

GAN을 이용하여 이미지의 quality를 높이는 task를 수행한다.

 

GAN의 결과가 다른 것에서부터 나온 것에 비해 더 그럴듯 해 보이지만 실제 결과와는 다를 수 있다.

어디까지나 fake image를 만들어낸 것이기 때문이다.

 

실제로 ground truth(SSIM)의 값은 다른 방법으로 만들어낸 값보다 좋지 않을 수 있다.

그러나 사람이 자연스럽다고 느끼는 수치(MOS)는 다른 방법에 비해 높은 편이다.

 


Style GAN

훨씬 더 크고 그럴듯한 결과물을 만들어낸다.

 

기존에는 random noise를 CNN에 넣어서 G를 구성했다.

그러나 style GAN은 앞에 DNN을 넣어서 gaussian distribution이 좋아하는 noise로 바꾸고 이를 CNN에 넣는다.

 

 

 

댓글