z StyleGAN3 : Alias-Free Generative Adversarial Networks (1)
본문 바로가기

Generative Model

StyleGAN3 : Alias-Free Generative Adversarial Networks (1)

728x90

 

현재 기준 StyleGAN 시리즈의 마지막이네요. 다른 두 논문에 비해 훨씬 어려웠던 논문입니다. 신호처리를 잘 모르는 저에게는 힘들었던 논문 리딩이네요..

그래도 이미지를 신호로써 바라보는 것, 평소에 알아채지 못했던 CNN에서 일어나는 이상 현상 등 배워가는 점이 많았던 시간이었습니다 :)

 

StyleGAN3

현실에 기반해서 상식적으로 어떤 물질의 형태에는 계층적 구조가 존재합니다. 예를 들어 사람의 얼굴을 보면 얼굴이 있고 눈의 형태, 그리고 그 위에 눈알이 위치합니다.

 

근데 사실 GAN에서 CNN 기반으로 이미지를 생성할 때도 이런 계층적 성질을 만족하는게 자연스럽습니다.

 

보통 CNN으로 이미지를 만들어 낼때 서서히 upsampling 하게 되는데 처음에는 전체적인 얼굴의 형태, 마지막 층으로 갈 수록 세밀한 특징들을 생성하게 됩니다.

 

예를 들어 StyleGAN1에서의 style mixing을 생각해보면 처음 부분에서 crossover point를 잡았을 때는 전체적인 shape이 변화하고 마지막 부분에서 crossover point를 지정하면 얼굴 색이나 세밀한 표정같은 detail이 변화하게 됩니다.

 

하지만 본 논문에서는 다소 특이한 점을 발견하게 됩니다.

움직임 요소와 같은 interpolation을 진행할 때 머릿결과 같은 texture에 해당하는 요소가 좌표 위치를 기억하고 있다는 듯이 해당 위치에 고정되어 버리는 현상이 발생합니다. Texture Sticking

 

 

위의 figure가 이를 잘 나타내주는데요, central latent에서 조금씩 흔든 후 여러번 생성한 이미지의 average 결과입니다.

왼쪽 고양이 사진을 보면 StyleGAN2의 경우 눈 주위 털의 결과 같은 texture가 고정되어 있음을 알 수 있습니다.

 

 

https://nvlabs.github.io/stylegan3/

 

Alias-Free Generative Adversarial Networks (StyleGAN3)

We eliminate “texture sticking” in GANs through a comprehensive overhaul of all signal processing aspects of the generator, paving the way for better synthesis of video and animation.

nvlabs.github.io

 

사실 계층적인 구조로 생성하게 된다면 detail에 대한 요소는 전체적인 shape에 영향을 받을텐데 말이죠.. 전체적인 얼굴의 위치가 움직인다면 머릿결 또한 종속적으로 움직이는게 당연합니다. 하지만 왜 이런 현상이 일어나는 걸까요?

 

본 논문에서는 여러가지 문제점을 제시합니다.

 

  • Image Border (Padding)
  • per-pixel noise inputs
  • positional encoding
  • aliasing

 

이전 연구에서 CNN의 padding으로부터 생기는 border를 통해 위치정보를 implicit하게 부여함을 보인 적이 있습니다. 이러한 위치정보 부여가 본 논문에서 안좋은 영향을 미칠 수 있다고 합니다.

 

StyleGAN1 부터 사용된 per-pixel noise inputs은 위치정보에 독립적이고 무작위적인 노이즈가 중간중간마다 pixel 단위로 삽입되기 때문에 자연스러운 위치정보 학습에 안좋은 영향을 미칩니다.

 

Positional Encoding은 직관적으로 그냥 계층적 훈련 외의 위치정보를 부여하기 때문에 안좋을 수 있습니다.

 

이러한 의도하지 않은 positional information을 제거함으로써 equivariance을 기대할 수 있습니다. (texture sticking 해결!)

 

근데 Aliasing은 뭘까요?..

저도 신호처리를 제대로 공부하지 않았어서 이해하기 어려웠는데 한번 알아봅시다 ,,

 

 

Aliasing

Continuous한 신호를 컴퓨터 상에서 사용하려면 Sampling을 해줘야합니다.

근데 Sampling을 한다는 것은 정보 삭제의 위험도 동반한다는 뜻입니다.

신호의 가장 큰 frequency에 따라 sampling rate 또한 일정 수준 이상이 되어야합니다.

 

주어진 신호에 이런 식으로 샘플링하면 완전한 복원이 불가능하겠죠 ㅎㅎ..

 

그래서 Continuous한 신호의 max frequency의 2배 이상의 sampling frequency로 샘플링 해야 나중에 복원 할 때 원상태로 복원이 가능합니다. 이를 Nyquist Shannon Sampling Theorem 이라고 합니다.

 

이 때 Nyquist Shannon Sampling Theorem을 위배하면 Aliasing이 일어나게 됩니다. 어떻게 보면 high frequency 정보를 제대로 복원해주지 못하는거죠.

 

Whittaker-Shannon interpolation formula에 따르면 ideal interpolation filter를 convolving해서 discrete -> continuous 복원이 가능하다고 합니다.

 

본 논문에서는 ideal interpolation filter로 sinc function을 사용합니다. 이 때 image에 대한 filter 이기 때문에 horizontal, vertical dimensions에 대해 bandlimit이 sampling rate / 2 이어야합니다.

 

이미지에서 high frequency란 무엇일까요?

 

 

이미지에서 intensity가 짧은 간격 내로 자주 변화하는 경우가 있습니다. 위의 사진이 예시가 되겠네요.

이러한 이미지의 경우 subsampling, downsampling과 같은 방법으로 새로운 이미지를 가져왔을 때 우측과 같은 aliasing 현상이 일어나게 됩니다. 

 

이러한 현상을 방지하기 위해서는 본 이미지의 High frequency 요소를 제거해주면 됩니다. LPF 같은걸로!

Ideal 한 LPF 를 적용하고 operation을 적용하는거죠. 나중에 downsampling 할 때 사용하게 됩니다 ㅎㅎ..

 

어쨌든 이러한 지식으로 저희는 ideal interpolation filter, ideal LPF 를 통해 aliasing을 억제할 수 있음을 알았습니다 !

 

Equivariant network layers

이제 Texture Sticking을 확실히 방지하기 위해 continuous, discrete domain에서 ideal LPF를 사용할 때 equivariant가 보장되는지 확인해봅시다.

 

translation equivariant는 t ◦ f = f ◦ t 를 만족해야합니다. t는 translation 입니다.

 

 

위 식은 discrete 혹은 continuous domain에서 하나의 function에 대한 정의를 내릴 수 있는 경우 다른 도메인에서도 정의할 수 있게 하는 식 입니다. 두 도메인 간의 관계에 대해 말하고 있습니다.

 

이 부분은 사견입니다.

두 도메인 간의 관계에 대해 확인하는 이유는 뭘까요?


PGGAN을 예로 들어봅시다. 각 resolution에서 만들어내는 image는 discrete한 형태입니다. 하지만 Generator에서 이미지를 만들어내는 순서를 보면 더 작은 resolution의 coarse feature map에서 일종의 연산들을 통해 image를 만들어내게 됩니다.

즉, 더 작은 resolution 단계에서 더 큰 resolution으로 만드는 과정이라는거죠.

이것도 일종의 interpolation을 필요로 하고 discrete -> continuous의 복원 과정이라고도 생각 할 수 있습니다.

그냥 더 작은 resolution 단계에서 그다음 resolution 단계롤 넘어가는 것 또한 discrete -> continuous 관계라고 생각 할 수 있는거죠.

과감하게 말하면 CNN 자체가 discrete - continuous 를 넘나드는 네트워크라고 할 수 있으려나요...


그래서 continuous와 discrete 사이의 관계를 확인하는게 아닌가 싶습니다 ㅎㅎ

혹시 이런 이유가 아니라면, 의견남겨주세요!

 

Convolution

K : kernel

 

- Discrete Domain \(F_{conv}(Z) = K \ast Z\) -> discrete domain에서는 interpolation, sampling 없이 kernel K를 단순히 convolving -> translation equivariant 만족.

 

- Continuous Domain 

Discrete Domain에 해당하는 식을 이용해서 continuous domain의 function을 생각해볼 수 있습니다.

 

Convolution의 Commutativity로 만족.

 

이와 같이 translation equivariant는 만족합니다. 하지만 rotation equivariance하려면 kernel K 가 radially symmetric 해야합니다. 이는 1x1 convolution을 사용함으로써 해결이 가능합니다.

 

Upsampling

 

- Continuous Domain : \(f_{up}(z) = z\) 연속 도메인에서는 upsampling은 문제가 없습니다.

 

Discrete Domain : continuous domain의 식으로 아래와 같은 식을 도출해낼 수 있습니다. (s' = ns)

 

 

 

Downsampling

앞에서 언급했듯이, downsampling 시 Ideal low-pass filter로 high frequency 요소를 삭제해서 bandlimit 정도를 지켜줄 필요가 있습니다.

 

- Continuous Domain : \(f_{down}(z) = \psi_{s'} \ast z \). ideal low passs filter \(\psi_s = s^2\phi_s\)

 

- Discrete Domain

Low pass filter 이기 때문에 \(\psi_s \ast \psi_{s'} = \psi_{min(s, s')}\)가 됩니다.

 

upsampling과 같이 integer scale factor로 downsampling 하는 경우 translation equivariance는 자연스럽게 만족됩니다.

 

하지만, rotation equivariance 하기 위해서는 radially symmetric filter를 사용해야하기 때문에 sinc function 대신 jinc function을 사용합니다.

 

Nonlinearlity

 

 

Nonlinear function은 elementwise하게 적용됩니다.

 

위 Figure는 ReLU와 같이 nonlinear function을 적용할 때 high frequency 를 띄는 edge가 나타나게 됨을 보여줍니다.

이 결과에 대해 이러한 high frequency 요소를 없애주기 위해 smoothing 하는 과정이 필요한데, 이를 위해 higher resolution으로 upsampling하고 nonlinear function을 적용한 후 다시 downsampling을 해줍니다.

 

..

 

포스트 기록하면서 다시 한번 복습하는 시간을 가지게 되었네요 ㅎㅎ..

이전 시리즈들보다 좀 더 세밀한 문제를 가지고 해결하는게 인상 깊었습니다. 전체 시리즈들 중 본 편이 제일 기억에 남네요,,

다음 포스트는 해당 모델의 구조에 대해 기록하겠습니다.

감사합니다 !

728x90