A Style-Based Generator Architecture for Generative Adversarial Networks review

ghgh5317·2021년 9월 1일
1

본 리뷰는 https://arxiv.org/pdf/1812.04948v3.pdf 논문을 참고 했습니다. [StyleGAN]

[Abstract]

본 논문에서는 GAN에서 style transfer의 아이디어를 활용하여 새로운 generator architecture를 제안한다.
이 구조를 활용한다면, high-level attribute 분류를 잘 할수록 도와주고 (= 이를 잘 분리할 수 있게 된다면 사용자가 원하는 세부적인 특징들만 변경하여 다양한 이미지를 만들어낼 수 있다.) stochastic variation을 다양하게 적용할 수 있다.

참고
High-level attribute : human pose or identity on human face
stochastic variation : 동일한 사람의 사진이어도, 사람을 구성하는 요소(skin or hair)을 확률적으로 다양한 방식으로 달라질 수 있다.

이 generator는 Traditional distribution quality metrics(기존의 GAN 평가 지표)를 사용했을 때도 더 좋은 결과를 얻었다.

또한 훨씬 좋은 disentangle한 부분을 보여준다는 것이다.

참고
Disentangle : 여러개의 feature가 서로 얽혀있지 않고 linear하게 분포가 되어있는 것을 의미 => 만약 다양한 특징들이 연관관계를 가지고 있으면(Disentangle이 부족하다면) 요소를 변경해서 Image를 만들고 싶을 때 다른 요소까지 변경될 수 있다.

본 논문은 2개의 새로운 method를 제시하고, 또한 새로운 Dataset을 배포했다. (1024*1024의 고해상도의 사람 얼굴 데이터 : FFHQ)

[Introduction]

최근 GAN 기반의 이미지 합성 기술은 PGGAN, BEGAN 등 발전해가고 있지만 Generator의 과정은 아직도 black box로 작동되고, 이미지를 생성할 때 stochastic feature를 control하는 방법과 latent spce에 대한 연구 역시 더 필요했다.

본 논문에선 style transfer에 대해 영향을 받았고 이를 토대로 StyleGAN이 나오게 된 것이다. (Style transfer를 수행하는 method에서 Feed-forward 방식으로 된 논문 : AdaIN 구조를 적용했다.)

실제로 본 network에서는 학습된 상수값으로부터 각각의 convolution layer를 거치면서 style값을 조절, 추가해간다.
[본 논문은 이미지를 여러 style의 조합으로 보기 때문에 각각의 layer를 거쳐가며 style정보를 입히는 방식으로 이미지를 합성하는 것이다.]

또한 discriminator나 loss function은 수정하지 않고, generator를 더욱 효과적으로 만들었다.

latent code를 intermediate latent space로 보내준 다음에 사용한다.
(단순하게 가우시안 분포에서 noise를 sampling한 뒤에 input으로 넣게 된다면 어느정도의 entanglement가 발생하기 때문에 이를 한번 mapping해준 뒤 사용한다면 restriction이 사라지기 때문에 disentanglement에 대해 효과가 좋다.)

또한 StyleGAN에서는 새로운 2가지의 metric [perceptual path length & linear separability] 을 제안한다.
이는 뒷부분에 다시 설명할 예정이다.

이 두가지의 평가 지표를 사용했을 때 기존의 generator architecture보다 StyleGAN은 조금 더 linear하게 동작하면서 특징들을 control하기에 간편했다고 주장한다.

마지막으로 FFHQ라는 1024*1024 size의 고해상도 image dataset을 배포했다.

[Style-based generator]


일반적인 Traditional한 method를 본다면, latent vector가 입력값으로 들어가 이에 따라 다양한 이미지가 생성되도록 진행이 된다. [그림a]
이와는 다르게 본 style-based generator는 별도의 style 정보를 layer를 거칠 때마다 넣어주기 때문에 latent code로부터 출발하지 않아도 된다. [그림b]

[그림 b와 같이 보면 이해가 더 잘된다.]
별도의 non linear mapping을 통해서 z를 w vector(전부 512차원)로 바꿔주고, 이를 실제 input값이 되는 것이다.
또한 한명의 사람 이미지에서 조금씩 바뀔 수 있는 것들(ex: face skin or hair=stochastic variation)을 처리할 수 있도록 별도의 noise에 대한 vetor역시 추가로 넣어준다.

[그림 b]에서 사용되는 AdaIN은 style transfer network를 사용한다.

참고

AdaIN이란 ?

feed forward방식의 style transfer network methods에서 효과적으로 사용할 수 있는 Normalization 방법 중 하나이다.

다음의 그림은 AdaIN Network의 구조이다.
AdaIN의 특징은 녹색의 pre-trained model을 통해서 encoding을 실행한다. 이 model은 feature를 encoding할때, loss function을 구할 때 사용하기 때문에 encoder는 학습시키지 않는다는 특징이 있다.
또한 AdaIN 내에는 learnable parameter가 없다.

여기서 AdaIN을 거치게 된다면, 하나의 feature에 대한 정보를 scaling과 bias를 적용하면서 입력받은 스타일의 statistics를 이용하여 하나의 feature에 대한 statistics를 바꿀 수 있도록 만든다.

수식을 보면 먼저 x에 대해서 평균값을 빼주고 표준편차로 나누어 주는 것은 일반적인 정규화 방법이다. 이후 추가적으로 s(=scaling)과 b(bias)를 적용함으로써 feature space에서의 statistics를 변경할 수 있게 되는 것이다.

여기서의 x는 AdaIN network를 거치기 전의 input 값이고, 거친 후 매번 style이 바뀌는 것은 Y에 의해서 변경되는 것이다.

또한 그림 b의 B(Noise)를 추가해서 stochastic한 detail를 변경할 수 있다. 이때 noise는 feature map과 비례한 크기를 가져야한다.

다음의 표는 PGGAN Baseline에서 부터 점차적으로 추가해가면서 FID를 비교한 표이며, C는 AdaIN Network를 적용하였을 때이고 E는 noise를 추가해주었을 때이다.
마지막으로 F는 모든 method를 적용한 결과이다.

[Properties of the style-based generator]

[Style mixing]

이 부분은 간단히 말하면 인접한 layer간의 style 상관관계를 줄여가는 것이다.

본 논문에서는 각각의 style이 잘 localize되어서 다른 layer에 관여하지 않도록 만들기 위해 style mixing을 제안하고 있다.

하는 방법은 2개의 latent vector가 있을 때 서로 섞어서 이미지를 만들 수 있도록 하는 것이다. 여기서는 crossover point를 설정하여 이전은 w1으로 이후는 w2로 사용을 하게 된다.
=> 이렇게 함으로써 인접한 layer간의 style 상관관계를 줄여가게 되는 것이다.

다음의 그림은 style mixing을 사용한 것이다.
그림의 윗부분 (Coarse style)은 앞쪽 4개의 layer에 적용한 것이며 결과 이미지를 보았을 때 이미지의 큼직한 변화들(like 포즈나 안경)이 생겼다.
그림의 중간 부분(Middle style)의 경우에는 중간 부분의 4개 layer에 적용시킨 부분이며 결과를 확인했을 때 hair나 눈의 모양(뜨고 감은 부분)들의 조금 더 세밀해진 변화를 볼 수 있으며
마지막으로 그림의 아랫부분(Fine)의 경우는 마지막 10개의 layer를 변경했을 때의 결과를 본다면 색상이나 그림의 미세한 detail(like 배경)들이 변한 것을 볼 수 있다.
이는 convolution layer측면에서 뒤로 갈수록 다루는 patch의 크기가 작아지기 때문에 세밀한 변화가 가능해지는 것이다.

[Stochasric variation]

먼저 본 논문에서 나오는 style은 high-level global attribute를 말하며 얼굴형이나 포즈, 안경 등을 말하는 것이며 noise는 stochastic variation을 말하는 것이며 머릿결, 주근깨나 피부 모공등의 부분들을 말하는 것이다. 그림 예시는 밑의 그림과 같다. noise vector의 변화를 준다면 아래의 그림과 같이 세밀한 부분들이 변경되는 것을 볼 수 있다.

또한 위의 그림은 각 layer에 대해서 noise input를 다르게 준 결과이다. a는 모든 layer에 noise를 적용한 결과이며 b는 noise를 적용하지 않은 것이다. c는 fine layer에 대해서만 적용한 것이고 d는 coarse layer에만 적용한 것인데, 그림으로 보았을 때 fine에만 적용한 부분을 보면 조금 더 세밀한 머릿결을 볼 수 있고, coarse에만 적용한 부분을 보면 큼직한 컬이 들어간 것을 확인할 수 있다.

[Disentanglement studies]

이 부분에서 2가지의 성능 측정 metric을 제안한다.
1. Perceptual path length
2. Linear separability

Disentanglement되었다라고 하는 것은 latent space가 linear한 subspace로 구성되어 있을 때를 뜻하며, latent space에 존재하는 벡터를 두 개를 뽑고, 두 벡터 사이에 interpolation을 수행했을 때 우리가 의도했던 특정 feature만 변경될 수 있는 확률이 높아지는 것을 의미한다.

특정한 factor만 잘 control할 수만 있다면 여러개의 factor들이 분류되어있다고 할 수 있다.

a에서 세로축은 성별이며 가로축은 머리가 길고 짧은 것에 대한 특징이라고 했을 때, 머리가 긴 남성의 dataset이 없다고 가정해봤다.
b는 가우시안 distribution으로 mapping 시킨 것이고, 이러한 경우에서는 필연적으로 feature들이 entangle하게 될 수 밖에 없다. 그림 b에서 중간값으로 interpolation하는 과정에서 급격하게 이미지의 semantic한 정보가 많이 변경될 수 있다.

하지만 w space로 mapping 시키고 나서 한다면 상대적으로 덜 급격하게 변경되게 된다.
상대적으로 다양한 factor들이 linear하게 subspace를 갖도록 만들 수 있게 되는 것이다.
이를 증명하는 새로운 평가 지표를 제안한다.

먼저 Perceptual path length는 두 vector를 interpolation할 때 얼마나 급격하게 이미지 특징이 바뀌는지에 대한 지표이며 이것의 성능이 잘 나온다면 서서히 바뀌게 되는 것임을 증명한다.

pre-trained VGG16 network를 통해서 perceptual loss를 계산한다.
식은 다음과 같다.

latent z에 대해서는 interpolation을 진행할 때는 spherical interpolation을 사용하는데, 이는 구면선형보간이라고 하며 구면을 따라 중간 위치에 잡을 수 있도록 하는 방법이다. (위의 식)

또한 w vector끼리의 interpolation에 대해서 진행할 때는 단순하게 linear 방법으로 수행한다. (위의 식)
W space에서 interpolation을 수행했을 때가 훨씬 좋은 것을 확인할 수 있는데, 이는 아래의 표로 확인할 수 있다.

다음으로 linear separability이다.
간단히 말하면 이는 latent space에서 attribute가 얼마나 선형적으로 분류될 수 있는지를 판단하는 것이다.

이를 위해 간단한 선형 분류기를 학습한 뒤 엔트로피를 계산해서 latent vector가 얼마나 linear한 subspace에 존재하는지를 확인하는 것이다.

(보조선형 분류기를 통해 dataset을 제작한다.)
latent space point를 분류할 수 있는 하나의 선형 분류기(SVM)을 학습한다.그 후 latent vector가 선형 분류기에서 얼마나 떨어져있는지 알 수 있고 conditional entropy 값을 구할 수 있다.
여기서 entropy 값은 하나의 입력 벡터 X가 주어졌을 때 그때의 true class에 대한 entropy 값을 측정할 수 있다.

다시 말해 하나의 이미지 data가 특정 클래스로 정확히 분류되기 위해 해당하는 feature가 얼마나 부족한지에 대한 정보를 알 수 있으며 이는 값이 낮을수록 이상적인 image임을 나타낸다.

Conclusion

StyleGAN은 Traditional GAN보다 월등히 좋은 result를 낼 수 있으며
high level attribute를 잘 분리되며 stochastic effect가 잘 control된다는 것이 본 논문의 장점이다.

profile
instagram @sjoo_0709

0개의 댓글