코딩하는 해맑은 거북이

[논문리뷰] PGGAN (Progressive Growing GAN) 본문

AI

[논문리뷰] PGGAN (Progressive Growing GAN)

#CJE 2023. 4. 26.

📌 PGGAN (Progressive Growing GAN)

: Nvidia에서 고해상도 이미지를 생성하는 새로운 방법을 제안(2018), 발표 당시 큰 이슈!

cf) 현재 GAN분야의 SOTA를 달성하고 있는 StyleGAN 시리즈의 기반이 되었음.

 

📌 기존 GAN의 문제점

1) 고해상도 이미지 일수록 D는 G가 생성한 이미지가 가짜 이미지인지 아닌지 판별하기 쉬워진다.

  → Unhealthy Competition

2) 고해상도 이미지를 생성하기 어렵다!

  - 더 깊은 신경망을 사용할 때, G와 D 사이의 기울기 문제가 증폭된다.

  - 메모리 제약으로 더 작은 minibatch를 사용해야하는데, 학습안정성이 떨어진다.

  → 불안정한 학습

 

📌 이를 개선하기 위해 PGGAN이 제안한 방법

* KEY POINT : 점진적으로 Generator와 Discriminator를 키우면서 학습하는 것.

▶ 저해상도부터 시작해서 점점 고해상도 디테일을 학습하는 새로운 레이어 추가한다.

▶ Large Scale(저해상도)의 정보를 학습하고, 점점 Finer Scale(고해상도)의 정보를 학습한다.

▶ G와 D는 서로 mirror 이며, 동시에 레이어를 추가하며 증가된다.

▶ 모든 레이어를 학습시 freeze 시키지 않고 학습시킨다.

 

Q. 그럼 점진적으로 레이어를 추가해서 학습할 때 장점은?

- Image Distribution에서 전반적인 얼굴의 형태(Large Scale)를 먼저 발견하도록 도움을 준다.

- 학습이 안정적으로 된다.

 

Q. 고해상도의 새로운 레이어를 추가할 때 문제점은 없을까?

있다! 전혀 학습되지 않은 새로운 레이어가 추가될 때, 이전의 저해상도를 학습했던 레이어에 영향이 갈 수 있다.

해결방법 : Smooth Fade-In

 

 

* Smooth Fade-In : G와 D에 둘다 적용

새로운 레이어를 추가할 때, Smooth하고, Fade-in 하게 넣어준다.

 

논문에서 가져온 아래 그림을 통해 말해보자. (G에 대한 설명위주, D는 반대로 생각!)

(a)에서 16x16 해상도 RGB 이미지를 학습시키고 나서

(b)에서 32x32 해상도 RGB 이미지를 학습시킬 때, 이전에 학습한 16x16에서 생성한 이미지의 크기를 2배로 만든다.

→ 여기서 2배란, 크기는 32x32로 커지지만, 해상도는 그대로이다.

 

2배로 만든 이미지를 32x32 해상도 이미지와 합치고 α를 곱해준다.

단순 2배로 만든 이미지 저해상도 이미지에는 1-α 를 곱하고, 이 둘을 더해준다.

 

여기서 α는 레이어가 추가될수록 지수적으로 0~1로 증가해서 새로운 레이어에 가중치를 더 준다.

(α : 0~1 사이의 값을 가지는 비율을 나타내는 값)

 

 

 

📌 기타 주요사항

- Normalization

▶ Batch Normalization (GAN) → Pixelwise Feature Vector Normalization (PGGAN) 로 변경

해당 Normalization은 Generator의 각 레이어 맨 뒷단에 적용하고, Escalation of signal magnitudes를 효과적으로 방지하기 때문에 사용한다.

해당 논문에서는 이를 Local Response Normalization 으로 변형해서 사용하였다.

* Pixelwise Feature Vector Normalization : 픽셀 단위 별로 normalization

feature vector를 위 방향으로 층층이 쌓은 모습이라고 생각하면, 각 층은 feature를 나타내는 수치값이다.

아래 그림과 같이 pixel 별로 feature vector를 단위 길이별로 normalize 해주는 것이다.

이 방법도 StyleGAN2 부터는 잘사용하지않는다고..

 

 

- Learning Rate

Equalized learning rate : 모든 layer의 learning speed가 같게 만드는 방식

gradient의 학습 속도가 parameter와 무관하도록 가중치를 Standard Norm Distribution = N(0, 1) 로 initialization 한 후, runtime시 scaling 해준다.

 

 

- 성능평가지표

해당 논문에서 Laplacian pyramid를 통한 SWD(Sliced Wasserstein Distance)MS-SSIM(Multi-Scale Structual SIMilarity)를 사용하였다.

SWD가 MS-SSIM로 측정한 것 보다 Color, Texture, Viewpoints등의 Variation을 더 잘 포착하는 것을 볼 수 있다.

cf) SWD : 두 이미지 간 분포 차이를 측정하는 지표

MS-SSIM : 두 이미지 간 구조적 유사성을 측정하는 지표 (밝기, 색상, 대비, 구조)

 

 

- Progressive Growing의 효과

Progressive Growing을 사용한 (b)의 경우를 보면 사용하지 않았을 때 (a)보다 학습시간이 단축되는 것을 볼 수 있고,

(c) 그래프를 보면, 해상도가 증가함에 따라 훨씬 빨라지는 것을 볼 수 있다.

Comments