본문 바로가기

인공지능/이론

(22) PGGAN (Progressive Growing of GAN)

PGGAN(ProGAN)은 고해상도 이미지를 생성하기 위해 제안된 획기적인 기술입니다.

이미지를 해상도별로 학습시켜 비교적 고해상도에서도 안정적인 학습이 가능합니다.

 

PGGAN에는 크게 네가지 아이디어가 존재합니다.

1. Progressive Growing

 - 점진적으로 해상도를 높여가며 학습합니다.

2. PixelNorm

 - 기존에 많이 쓰이는 BatchNorm과는 달리 픽셀별로 Normalization 작업을 수행합니다.

3. Equalized Learning Rate

 - 가중치를 sqrt(2/입력개수)로 나누어 모든 가중치가 동일한 속도로 학습될 수 있도록 합니다.

4. Minibatch Std

 - Discriminator의 마지막 블록에 해당 레이어를 추가하여 모드 붕괴 현상을 완화합니다.

 

 

차근차근 하나씩 살펴보도록 하겠습니다.

Progressive Growing

각 resolution으로 데이터셋을 downsampling하여 학습합니다.

그 전 resolution에서의 모델 파라미터 상태를 가져와 학습합니다.

그리고 좀 더 부드럽게 해상도를 높힐 수 있도록 fade in 레이어를 사용하게 됩니다.

PGGAN에서는 (b)의 구조를 사용하였습니다. alpha값은 학습 도중에 선형적으로 0 to 1로 증가합니다.

 

 

Pixel Norm

이미지가 고해상도인만큼 batch_size를 저해상도 이미지만큼 늘리기가 힘듭니다.

N의 feature map의 개수입니다. a는 원본벡터이고, b는 정규화된 벡터입니다.

이는 활성화 값이 폭주되는 것을 막습니다.

 

 

Equalized Learning Rate

모든 가중치를 평균이 0이고 표준편차가 1인 정규분포로 초기화합니다.

그 후에 각 층이 실행될 때마다 가중치를 sqrt(2/입력개수)로 나눕니다. (입력개수 = k * k * c)

RMSProp, Adam 등의 옵티마이저를 사용했을 때 이 기법이 GAN의 성능을 크게 향상한다는 것을 논문에서 입증하였습니다. 이로서 모든 가중치가 동일한 속도로 학습될 수 있도록 도와줍니다.

 

 

Minibatch Standard Deviation

이 레이어는 Discriminator의 마지막 블록에서만 사용되고, 모드 붕괴 현상을 완화하기 위해 사용된 기법입니다.

minibatch의 표준편차의 평균을 입력의 마지막 층에 추가하여줍니다.

 

만약 생성이미지의 다양성이 부족하다면, 판별자의 특성맵 간의 표준편차는 적을 것입니다. 통계적 수치를 마지막 층에 추가해줌으로서, 판별자가 통계적 수치를 사용할 수 있도록 하고 다양성이 부족한 생성이미지에 속지 않도록 도와줍니다. (데이터셋 이미지의 다양성이 충분하다면, 진짜 이미지와 가짜 이미지를 구별할 때 이런 통계적 수치를 사용할 수 있기 때문입니다. 가짜이미지가 진짜같더라도 다양성이 부족하다면 판별자의 마지막 층을 통해 구별됩니다.)

 

PGGAN은 위의 네가지 핵심 아이디어를 사용하여 훌륭한 고해상도 이미지 생성 모델을 만들어내었습니다.

다음 글부터는 실제로 PGGAN을 실습해보도록 하겠습니다.

 

(paper - https://arxiv.org/pdf/1710.10196.pdf)

'인공지능 > 이론' 카테고리의 다른 글

(21) 오토인코더와 GAN  (0) 2022.01.08
(20) 어텐션과 트랜스포머  (0) 2022.01.06
(19) RNN 구조  (0) 2022.01.02
(18) 컴퓨터 비전  (0) 2021.11.12
(17) 심층 신경망  (0) 2021.10.26