본문 바로가기

컴린이 탈출기/Vision

진짜 같은 고화질 가짜 이미지 생성하기, StyleGAN

반응형

https://towardsdatascience.com/explained-a-style-based-generator-architecture-for-gans-generating-and-tuning-realistic-6cb2be0f431

 

Explained: A Style-Based Generator Architecture for GANs - Generating and Tuning Realistic…

NVIDIA’s novel architecture for Generative Adversarial Networks

towardsdatascience.com

towards data science의 위 글을 번역한 글입니다!
오역한 부분이나 자연스러운 표현을 위해 의역한 부분이 있을 수 있습니다.
별(*)로 시작하는 문장, 문단은 제가 추가한 해설입니다.
잘못된 내용에 대한 지적은 댓글로 부탁드립니다. :)



적대적 생성 모델(GAN)은 2014년에 처음 도입된, 머신러닝 분야에서 상대적으로 새로운 개념입니다. GAN의 목표는 인위적인 샘플을 합성(synthesize)하는 것입니다. 이미지를 예로 들면 진짜 이미지와 구분할 수 없는 이미지를 생성하는 것이죠. GAN을 적용하는 대표적인 예로는 유명인의 얼굴 데이터셋을 학습해 인공적인 얼굴 이미지를 생성하는 태스크가 있습니다. 시간이 흐르면서 GAN 이미지는 점점 사실적이 되었습니다. 하지만 GAN의 주요 과제 중 한 가지는 포즈, 얼굴형, 머리 스타일과 같은 구체적인 특징을 바꿀 수 있도록 아웃풋을 컨트롤하는 것입니다.

NVDIA에서 발표한 새로운 논문, 'A Style-Based Generator Architecture for GANs(StyleGAN)'은 이 과제를 해결하는 새로운 모델을 제시합니다. StyleGAN은 매우 낮은 화질에서 시작해 높은 화질(1024x1024)로, 인위적인 이미지를 점진적으로 생성합니다. 각 단계(화질)에서 인풋을 수정함으로써 포즈나 얼굴형과 같은 굵직한 특징부터 머리색과 같은 디테일까지 해당 단계에서 표현되는 특징을 조절합니다. 이때, 다른 단계에 영향을 주지 않습니다.

* StyleGAN의 baseline이 되는 모델은 PGGAN입니다. PGGAN의 가장 큰 특징은 저화질에서 시작해 점점 레이어를 쌓아가며, 고화질 이미지를 생성한다는 점입니다. 

 

이러한 기술은 생성되는 아웃풋에 대해 더 잘 이해할 수 있게 할 뿐 아니라, 또한 이전에 (다른 모델들로) 생성된 이미지들보다 더 진짜 같아 보이는 고해상도의 이미지를 만들어냅니다. 

StyleGAN

 

Background

모든 GAN의 기본 구성요소는 두 개의 뉴럴 넷입니다. Generator(G)는 새로운 샘플을 합성하는 모델입니다. 그리고 Discriminator(D)는 학습 데이터와 G의 아웃풋을 인풋으로, 그 사진들이 '진짜'일지 혹은 '가짜'일지를 예측합니다. 

G의 인풋은 랜덤 벡터(노이즈)로, 따라서 초기의 아웃풋도 노이즈가 됩니다. 시간을 거듭하면서 D의 피드백을 받으며 G는 좀 더 '리얼'한 이미지를 합성하는 법을 학습하게 됩니다. D 역시 생성된 샘플과 실제 이미지를 비교하며 성장해 G가 D를 속이기 어렵게 만듭니다. 

GANs overview

NVDIA가 ProGAN과 함께 처음으로 과제에 도전장을 내민 2018년 이전까지, 연구자들은 고화질의 큰 이미지를 만드는 데에 어려움을 겪었습니다. ProGAN의 핵심 아이디어는 progressive training이다. Progressive training은 G와 D를 아주 낮은 화질(4x4)의 이미지로부터 학습하며 시작합니다. 그리고 점점 높은 화질의 레이어를 추가해갑니다. 

이 기술은 낮은 화질의 이미지에서도 나타나는 기본적인(base) 특징을 학습해 이미지의 토대를 먼저 만들고, 화질을 점점 높여가며 디테일을 학습합니다. 저화질의 이미지를 학습하는 것은 쉽고 빠를 뿐만 아니라, 고화질 사진의 학습을 돕고 결과적으로 전체적인 학습 또한 빨라집니다.

ProGAN overview

ProGAN은 고품질의 이미지를 생성하지만, 대부분의 모델과 같이 생성된 이미지의 구체적인 특징을 컨트롤하는 능력은 매우 제한적입니다. 다시 말해, 특징들이 얽혀있고(entangled) 따라서 인풋을 조금이라도 조정하게 되면 동시에 여러 특징에 영향을 미치게 된다. 하나의 유전자를 바꾸어도 여러 특성에 영향을 주는 상황이 좋은 비유가 될 것이다.

ProGAN progressive training from low to high res layers

 

How StyleGAN works

StyleGAN 논문은 Generator 네트워크에 초점을 맞추어, ProGAN의 이미지 generator의 업그레이드된 버전을 제안합니다. 저자는 ProGAN의 progressive 레이어를 적절히 활용할 경우, 이미지의 다양한 시각적 특징을 컨트롤할 수 있음을 알아냈습니다. 레이어 단계(곧 화질)가 낮을수록, ~. 논문은 특징들을 세 가지 종류로 분류했다.:

1. Coarse(굵직한 특징) - 8 해상도까지 (* 4x4 layer ~ 8x8 layer)- 포즈, 일반적인 헤어스타일, 얼굴형 등에 영향

2. Middle(중간 특징) - 16부터 32 해상도까지 (* 16x16 layer ~ 32x32 layer) - 자세한 얼굴 특징, 헤어스타일, 눈 뜨고/감음 등에 영향

3. Fine(자세한 특징) - 64부터 1024(* 64x64 layer ~ 1024x1024 layer) 해상도까지 - 눈, 머리, 피부 등의 색 조합과 미세한 특징 등에 영향

새로운 G(* StyleGAN의 G)는 ProGAN의 G에 몇 가지 추가사항을 포함한다. :

 

Mapping Network

매핑 네트워크의 목표는 인풋 벡터를 각기 다른 시각적 특징을 다른 요소로 컨트롤할 수 있는 중간(intermediate) 벡터로 인코딩하는 것입니다. 학습 데이터의 확률 밀도를 따라야 하기 때문에, 인풋 벡터로 시각적 특징을 컨트롤하는 것은 제한적입니다. 따라서 이 과정은 사소한 과정이 아닙니다. 

* 학습 데이터의 확률 밀도를 따른다는 게 무슨 말이지? 궁금하신 분은 제가 이전에 작성한 이 포스트를 참고해주세요.

* 기존 GAN의 generative 모델의 문제점은 아래 그림과 같이 특징들이 서로 얽혀있어서 벡터를 조절하면 얽힌 여러 특징이 동시에 변하게 된다는 것입니다. StyleGAN 논문에서는 이러한 문제를 'entanglement'라고 부릅니다. ('entanglement'를 그대로 번역하면 '얽혀있음'이라는 뜻이랍니다.) Mapping network는 StyleGAN팀에서 제안한 'entanglement' 문제를 해결하는 방법입니다. 따라서 사소한 과정이 아니다, 즉 아주 의미 있는 과정이다!라고 표현한 게 아닐까 싶어요.🤔 이 글에서 disentanglement 방식과 측정지표에 대해서 자세히 다루고 있지 않기 때문에, 이와 관련해 논문에 실린 내용을 좀 더 확인하고 싶으신 분들은 이 포스트를 추천드립니다. 

https://www.slideshare.net/ssuser06e0c5/infogan-interpretable-representation-learning-by-information-maximizing-generative-adversarial-nets-72268213

 

 만약 데이터셋에 검은 머리의 사람이 많을 경우, 더 많은 인풋 값들이 그러한 특성에 매핑되게 됩니다. 결과적으로 모델은 일부 인풋의 일부분(벡터의 요소)을 특징과 제대로 매핑하지 못하게 됩니다. 이러한 현상을 우리는 feature entanglement라고 부릅니다. 하지만 또 다른 뉴럴 네트워크를 이용함으로써 모델은 학습 데이터의 분포를 따를 필요가 없는 벡터를 만들게 되고 특징 간의 상관관계를 줄일 수 있게 됩니다. 

매핑 네트워크는 8개의 fully connected 레이어로 구성되어있고, 아웃풋 w는 인풋 레이어(512x1)와 같은 사이즈가 됩니다.

The generator with the Mapping Network (in addition to the ProGAN synthesis network)

 

Style Modules(AdaIN)

AdaIN(Adaptive Instance Normalization) 모듈은 매핑 네트워크에서 생성된, 인코딩 된 정보 w를 생성된 이미지로 전달(transfer)합니다. 이 모듈은 합성 네트워크의 각각의 단계에 더해지고 해당 단계에서의 시각적인 표현을 정의합니다.: 

1. 단계 3에서의 스케일링 및 시프팅이 예상되는 효과가 나타나도록, 컨볼루션 레이어 아웃풋의 각 채널이 먼저 정규화됩니다. 

2. 중간 벡터 w는 A로 표시된 또 다른 fully connected 레이어를 거쳐 각 채널의 scale과 bias로 변환됩니다.

3. scale과 bias는 각 채널의 컨볼루션 아웃풋을 시프트(shift)시켜 컨볼루션에서 각 필터의 중요성을 정의합니다. 이러한 튜닝은 w로부터의 정보를 시각적인 표현으로 변환합니다.

The generator`s Adaptive Instance Normalization (AdaIN)

 

Removing traditional input

ProGAN을 포함한 대부분의 모델은 G가 초기의 이미지를 생성하는 데에 있어 랜덤 한 인풋을 사용했습니다. StyleGAN 팀은 w와 AdaIN에 의해 이미지의 특징을 컨트롤 할 수 있음을 알아내었고, 그에 따라 초기 인풋을 생략고 이를 상수 값으로 대체하였습니다.  논문에서는 왜 이것이 성능을 향상시키는지에 대해서는 설명하지 않았으나 feature entanglement  네트워크가 문제를 감소시켰다고 보는 것이 안전한 가정일 것 같습니다. (Entangled 인풋 벡터에 의지하지 않고 w만을 이용해 학습하는 것이 네트워크에게는 쉽습니다.)

The Synthesis Network input is replaced with a constant input

 

Stochastic variation

사람의 얼굴에는 주근깨나 머리카락의 위치, 주름, 얼굴 이미지를 좀 더 사실적이고 다양하게 만드는 작고 확률적인(stochastic)한 부분들이 있습니다. GAN 이미지에 이러한 작은 특징을 넣는 일반적인 방법은 인풋 벡터에 랜덤한 노이즈를 더하는 것입니다. 하지만 위에 언급한 entanglment 현상으로 인해 다른 여러 특징에 영향을 주게 되면서 노이즈 효과를 조절하는 것이 까다로운 경우가 많았습니다.

StyleGAN에서의 노이즈는 AdaIN 메커니즘과 비슷한 방식으로 더해집니다. 스케일 된 노이즈가 AdaIN 모듈 이전에 각 채널에 더해지고 해당 해상도 레벨에서 다루는 특징의 시각적 표현에 약간의 변화를 주게 됩니다. 

Adding scaled noise to each resolution level of the synthesis network

 

Style mixing

StyleGAN generator는 합성 네트워크의 각 단계에서 중간 벡터를 이용하는데, 이로 인해 네트워크는 각 단계가 상관관계가 있음을 학습한다. 이러한 상관관계를 줄이기 위해, 모델은 랜덤 하게 두 개의 인풋 벡터를 선택한 후 각각에 대한 중간 벡터 w를 생성한다. 그리고 초기 단계에서는 첫번째 벡터를 통해 학습하고, 랜덤한 포인트 이후의 나머지 레벨에서는 다른 벡터를 통해 학습하게 된다. 랜덤하게 벡터를 바꾸는 것은 네트워크가 레벨 간 상관관계를 학습하고 의지하지 않도록 보장한다. 

이 방식은 모든 데이터셋에서 성능 향상을 보이지 않지만, 매우 흥미로운 예상치 못한 효과를 보입니다. 아래 비디오에서 보이는 것처럼 여러 이미지를 논리적으로 조합하는 능력입니다.  이 모델은 A에서 낮은 수준의 특징을, B에서 높은 수준의 특징을 가져와 조합해 이미지를 생성합니다. 

* 왼쪽의 세 사진를 생성할 때 사용한 서로 다른 w 벡터를, style mixing(해상도 별로 스타일 벡터를 다르게 주어서)하면 세 이미지의 스타일을 모두 가진 오른쪽과 같은 사진이 탄생하게 됩니다. 

 

Truncation trick in W

생성 모델에 있어서 과제 중 하나는 훈련 데이터에 잘 표현되지 않은 부분을 다루는 것입니다. G는 그런 것들(* 훈련 데이터에 적게 나타난 특징들)을 학습할 수 없고 그와 닮은 이미지를 생성할 수 없습니다. (대신 나쁜 품질의 이미지를 생성합니다.) 이상한 이미지를 생성하는 것을 피하기 위해, styleGAN은 중간 벡터 w를 잘라(truncate) '평균적인' 중간 벡터에 가까이 가도록 강제합니다.

모델을 학습한 후, '평균적인' w_avg는 많은 인풋 벡터를 선택해 생성됩니다. ; 매핑 네트워크를 통해 그들의 중간 벡터를 생성하고 ; 이 벡터들의 평균을 구합니다. 새로운 이미지를 생성할 때에는 곧바로 매핑 네트워크의 아웃풋을 이용하지 않고, w를 w_new = w_avg + $\psi$(w-w_avg)로 변환해 사용합니다.  (w-w_avg) 값은 평균적인 이미지로부터 얼마나 거리가 먼 이미지를 생성할지를 결정합니다. 흥미롭게도, 아핀 변환 이전에 각 레벨에서 다른 값을 이용하자 모델은 각각의 특징들이 평균으로부터 얼마나 멀리 떨어질지를 결정할 수 있었습니다. 

 

Fine-tuning

StyleGAN은 ProGAN에서 학습 시간, 손실 함수와 같은 네트워크 하이퍼 파라미터를 업데이트하고, 근접한 이웃으로부터의 업/다운 스케일링을 bilinear sampling으로 대체했습니다. 

모델의 성능에 있어 중요한 부분을 차지하는 단계이지만 덜 혁신적이기 때문에 이곳에는 자세히 서술하지 않겠습니다. 이에 대한 부분은 논문의 Appendix C에 자세히 실려있습니다.

An overview of StyleGAN

 

 

Results

이 논문은 유명인의 이미지로 구성된 CelebA-HQ 데이터셋과 일반인들의 얼굴로 더 다양하게 구성된 Flickr-Faces-HQ(FFHQ) 데이터셋에서 SOTA(State-Of-The-Art)를 기록했습니다. 아래의 차트는 모델 구성별 FID(Frèchet inception distance ) 스코어를 나타냅니다

The performance(FID score) of the model in the different configurations compared to ProGAN. The lower score the better the model.

이 결과에 더해, 논문은 침실 이미지와 차 이미지 데이터 셋에 대한 결과를 제시해 모델이 오직 얼굴에 국한되지 않고 다양한 분야에 적용될 수 있음을 보였습니다.

 

Feature disentanglement

변수 분리에 대해 양적인 논의를 하기 위해 논문은 disentanglement 정도를 측정할 수 있는 두 가지 새로운 방안을 제시합니다.:

1. Perceptual path length - 두 랜덤 인풋 벡터를 interpolating 할 때 VGG15의 임베딩을 이용해 연속적인 이미지 간의 차이를 측정합니다. 급격한 변화는 동시에 여러 특징이 변하는 것을 의미하고 그것은 곧 특징들이 entangle 함을 의미합니다. 

2. Linear separability - 남성/여성과 같이 인풋을 이진 분류하는 능력입니다. 구분을 잘할수록 특징을 더 잘 구분했다고 볼 수 있습니다.

인풋 벡터 z와 중간 벡터 w를 이러한 지표로 비교해 저자들은 w가 더 특징을 잘 구분해냄을 보였습니다. 이러한 지표는 또한 매핑 네트워크가 1 혹은 2 레이어일 때보다 8 레이어인 것이 성능이 우수함을 보였습니다.

 

Implementation Details

StyleGAN은 한 주동안 8개의 Tesla V100 GPU를 이용해, CelebA-HQ와 FFHQ 데이터셋으로 학습되었다. 텐서 플로우로 실행되었으며 소스가 공개될 예정이다.

* https://github.com/NVlabs/stylegan

 

NVlabs/stylegan

StyleGAN - Official TensorFlow Implementation. Contribute to NVlabs/stylegan development by creating an account on GitHub.

github.com

 

Conclusion

StyleGAN은 높은 품질의 사실적인 이미지를 만들어낼 뿐만 아니라 생성된 이미지에 대해 이해하고 조절할 수 있게 해 이전보다 가짜 이미지를 쉽게 만들 수 있게 했다. StyleGAN에 쓰인 매핑 네트워크와 AdaIN기술은 앞으로의 많은 혁신적인 GAN 모델에 있어서 기초가 될 것이다.  

 

* StyleGAN의 핵심을 아주 명쾌하고, 읽기 쉽게 정리한 글이었습니다. 혼자 며칠을 끙끙대며 논문을 정리해보려고 했으나, 이렇게 착착 정리해서 글을 쓰기가 쉽지 않더라고요.😂  앗 그리고 작년에 StyleGAN2가 나왔더라고요. → 코드 ← 기술은 정말 빠르게 발전하는 것 같습니다. GPU라고는 오로지 코랩에 의존하는 저에게는 1024x1024 이미지도 아주 과분한 해상도인데 말이죠,, 이번 포스팅은 여기서 마무리하도록 하겠습니다. 잘못된 부분에 대한 지적은 언제나 환영입니다. :) 

반응형