본문 바로가기
딥러닝 with Python

[딥러닝 개념정리] ProGAN (Progressive Growing of GANs) / PGAN

by CodeCrafter 2024. 6. 5.
반응형

[본 포스팅은 "만들면서 배우는 생성 AI 2판" 참고 했습니다.]

 

이번에 알아본 모델은 ProGAN 입니다. 

 

Pro GAN(Progressive Growing of GANs) 2017년 NVIDIA Labs가 GAN 모델의 훈련 속도와 안정성을 향상하기 위해 개발한 기술입니다.

 

이는 고해상도의 이미지 생성을 보다 효율적으로 수행할 수 있도록 설계된 모델인데요. 해당 모델의 주요 특징은 아래와 같습니다.

 

 

ProGAN 모델의 주요 특징

 

 

1)  점진적 성장(Progressive Growing) 

 

 - ProGAN의 가장 큰 특징은 모델이 점진적으로 성장하면서 학습된다는 점입니다. 학습 초기에는 4x4 로 압축된 이미지부터 시작해서 점차 해상도를 높여 최종적으로는 고 해상도의 이미지까지 생성하는 방법을 적용하고 있는데요

 - 아래 그림처럼 최초에는 4x4의 낮은 수준만을 생성하도록 학습시키고, 그 이후에는 가로 세로를 2배씩 늘려가면서 이전단계의 학습 모델의 지식을 활용해 보다 안정적이고 효율적이며 성능좋은 결과를 만들게 됩니다.

 - 해상도가 낮은 이미지의 경우, 이미지의 큰 구조 부분을 주로 담고 있는데 이러한 Corase-grained 한 특징들을 우선학습하고, 점차 세밀한 fine-grained 한 특징들을 이어서 학습 하는 방법입니다.

 

- Generator와 Discriminator의 형태에 대해서 조금 더 세부적으로 알아보면 아래 그림처럼 전단계의 작은 이미지와 이번 단계의 큰 이미지를 비중을 조절(1-alpha vs alpha)하여 Element wise addition을 해준 뒤 이를 학습에 활용하고 있음을 알 수 있습니다. 

 

 

2) 학습 안정성(Training Stability)

- ProGAN은 위에서 설명드린 점진적인 성장 방법을 통해서 모델의 학습이 안정적이며 보다 복잡하고 세밀한 구조까지 학습하는 능력을 갖추었습니다.

 

3) 고품질 이미지 생성

- 보다 세밀한 정보까지 학습이 가능하기에 기존의 GAN 모델들보다 고품질의 세밀한 이미지 들을 생성해낼 수가 있습니다.

 

 

해당 논문은 미니 배치 표준 편차, 균등 학습률, 픽셀별 정규화라고 하는 기술들을 활용해서 성능을 향상시켰는데 각각에 대해서 알아보겠습니다.

 

a) 미니 배치 표준 편차(min-batch standard deviation) : 미니 배치표준편차 층은 특성값의 표준 편차를 모든 픽셀과 미니 배치에 걸쳐 평균하여 특성으로 판별자에 추가하는 층입니다. 

 이는 기존 GAN 모델들이 학습 이미지에서의 variation만을 포착하는 경향이 있었던 문제를 해결할 수 있었는데, 이를 활용하면 새성자가 출력에서 더 많은 다양성을 부여할 수 있습니다. 즉, 미니 배치에서 다양성이 낮으면 표준편차가 작아지고 판별자는 이특성을 사용하 가짜 배치와 진짜 배치를 구별하기에 생성자가 보다 다양한 형태를 만들도록 강제하기 때문입니다.

 

b) 균등학습률

 Pro GAN의 모든 Dense Layer와 Convolutional Layer는 균등학습률(equalized learning rate)를 사용합니다. 

 일반적으로 신경망의 가중치는 He 초기화(표준펴차가 층에 대한 입력 개수의 제곱근에 바비례한 가우스 분포)와 같은 방법으로 초기화 되는데 이를 활용하면 입력 개수가 많아질수록 0에 가까운 초기화 값이 나와서 안정적인 학습을 진행할 수 있습니다.

 하지만, 이는 Adam 또는 RMSProp과 같은 옵티마이저에 사용하기에는 제한된다는 점을 확인하였고, 층에 대한 입력 개수와 관계없이 간단한 표준 가우스 분포를 사용하여 초기화하는 방식으로 이러한 문제를 해결했습니다.

 

c) 픽셀별 정규화

 ProGAN의 생성자에서는 픽셀별 정규화를 사용하는데, 이를 사용하면 각 픽셀의 특성 벡터가 단위 길이로 정규화되고 신호가 신경망으로 전파될 때 제어 불능 상태가 되는 문제를 방지할 수 있습니다.

 

 

 

다음은 해당 논문에서 제안한 실험 결과 입니다. 

 

성능 평가를 위해서 SWD (Sliced Wasserstein distance)와 MS-SSIM(Multi-Scale Structural Similarity Index Measure)을 활용했습니다. 

 * SWD : 고차원 데이터 분포 간의 거리를 계산하는데 사용되며, WD는 두 확률 분포 간의 차이를 측정하는데 사용하여 주로 이미지의 품질 평가에 유용한 지표입니다. SWD는 WD를 고차원 공간에서 직접 계산하는 대신, 고차원 데이터를 여러 개의 1차원으로 투영하여 변환 계산하고, 각 투영에 대해 1차원 Wasserstein Distance 계산 값을 종합하여 최종 SWD를 산출합니다.

 * MS-SSIM : SSIM의 다중 스케일버전입니다. ProGAN이 다양한 스케일의 입력값을 사용하기에 이를 잘 반영한 지표일 수 있습니다. 

 

반응형

댓글