[요약] PGGAN

front

paper, code, demo

Problems

training distribution과 generated distribution간의 substantial overlap이 없다면 gradient가 random direction을 가리킬 수도 있다. High resolution image를 생성하는 경우에는 training image와 generated image를 구분하기가 더 쉬워지는 경향이 있어서 이러한 문제가 더 심화된다. (학습이 불안정)

Assumptions

학습과정에서 low resolution image에 대한 generator와 discriminator로부터 시작하여 layer를 차츰차츰 키워나가면 안정성과 고화질 이미지 두 마리 토끼를 잡을 수 있지 않을까?

Going further

Progressive growing of GANs

fig1

Generator와 discriminator의 layer를 대칭적으로 하나씩 쌓아가며 학습하게 되면 이는 large-scale structure를 먼저 파악한 뒤에 finer scale detail로 점점 학습의 주안을 옮겨가는 것과 같다. Layer를 늘리는 시점에 갑작스러운 충격을 막기위해 Highway network의 구조를 사용한다. 이 방법을 이용하면 학습의 안정성 외에도 학습 속도를 획기적으로 올릴수 있다는 장점이 있다. (아주 좋은 품질의 결과물이 2~6배 빠르게 나오기도 한다.) - 아래 Fig2 참고

fig2

code1, code2

def lerp(a, b, t): return a + (b - a) * t
def lerp_clip(a, b, t): return a + (b - a) * tf.clip_by_value(t, 0.0, 1.0)

## omitted
if structure == 'linear':
    img = images_in
    x = fromrgb(img, resolution_log2)
    for res in range(resolution_log2, 2, -1):
        lod = resolution_log2 - res # lod: levels-of-details
        x = block(x, res)
        img = downscale2d(img)
        y = fromrgb(img, res - 1)
        with tf.variable_scope('Grow_lod%d' % lod):
            x = lerp_clip(x, y, lod_in - lod)

Increasing variation using minibatch standard deviation

GAN은 training data의 variation에 대한 subset만을 학습하는 경향이 있다. Salimans et al. (2016)은 minibatch discriminator 라는 기법을 통해 각 이미지와 minibatch에 대한 통계정보를 discriminator에 같이 제공함으로써 variation에 대한 학습효과를 증진시키려는 시도를 했다. 이 연구에서는 learnable parameter나 새로운 hyperparameter없이 비슷한 접근을 시도해본다. 절차는 다음과 같다.

이를 discriminator의 feature map 중 어딘가에 넣어준다. 실험적으로 마지막 downsample layer 뒤에 넣는 것이 가장 효과가 좋았다. - 아래 Table 2 참고

tab2

Normalization in generator and discriminator

GAN은 generator와 discriminator간의 unhealthy competition으로 인해 signal magnitude가 점차 증가되기 쉽다. 이에 대한 해결책으로 이전의 연구들에서 변형된 batch normalization의 사용이 제안되었으나, GAN에서는 이슈는 (BN에서 제기된 문제상황이었던) covariate shift가 아니므로 이 연구에서는 signal magnitude와 competition에 대해 적절히 제한하는 것에 초점을 맞춘다.

Multi-scale statistical similarity for assessing GAN results

서로 다른 GAN 간의 성능을 비교하기 위해서는 굉장히 많은 수의 이미지에 대한 평가가 필요하다. 이때 자동화된 성능평가 방법이 있다면 좋을 것이다. MS-SSIM은 large-scale mode collapse를 잡아내는데는 잘 동작하지만, 색이나 질감에 대한 variation이나 training set과 생성 이미지에 대한 유사도까지는 평가하지 못한다는 단점이 있다. 이 논문에서의 전제는 잘 학습된 generator가 생성한 이미지는 모든 스케일에서 training set과 유사한 local image structure를 가질 것이라는 것. Training set과 generated samples에서 Laplacian pyramide를 통해 local image patch를 얻고, sliced Wasserstein distance(이하 SWD)를 이용하여 둘 사이의 유사도를 측정한다.

Experiments

Discussion

이미지의 micro-structure 향상에 대해서는 아직 갈 길이 멀다. 그래도 이제 CELEBA-HQ같은 경우에는 꽤 설득력있는 결과물 산출이 가능한듯.