본문 바로가기
스터디/논문

[논문] StyleGAN : A Style-Based Generator Architecture for Generative Adversarial Networks(IVPR 2019) 1편

by onecosm 2022. 10. 6.
반응형

https://arxiv.org/abs/1812.04948

 

A Style-Based Generator Architecture for Generative Adversarial Networks

We propose an alternative generator architecture for generative adversarial networks, borrowing from style transfer literature. The new architecture leads to an automatically learned, unsupervised separation of high-level attributes (e.g., pose and identit

arxiv.org

 

  • 사전 지식
    • GAN
    • DCGAN
    • WGAN-GP
    • PG-GAN
    • AdaIN

엔디비아에서 IVPR 2019에 A Style-Based Generator Architecture for Generative Adversarial Networks 논문에서 StyleGAN을 발표했습니다.


StyleGAN은 2019년에 발표된 것으로 고해상도 이미지 생성에 적합한 기술입니다.


PGGAN을 베이스라인으로 잡고 성능을 향상시킨 것이라 보면 되는데 PGGAN에서 특징 제어를 하지 못한다는 단점을 개선하였습니다.

여기서 특징 제어라 하면 하나의 특징을 움직였을 때 정해진 하나의 특성이 변하도록 하는 것이고
성별 머리카락의 길이와 같은 세부적인 것을 컨트롤이 가능해진다는 것입니다.

StyleGAN을 이해하려면 GAN을 알아야해서 간단히 설명하도록 하겠습니다

GAN은 2014년에 발표된 것으로 서로 다른 역할을 가진 두 모델을 통해 적대적 학습 한마디로 서로 싸우면서
진짜 같은 가짜를 생성해 내는 능력을 키워주는 것입니다.

 


서로 다른 역할을 가진 두 모델은 하나는 생성기이고 하나는 판별기입니다.

그림으로 설명하자면 생성기는 위조지폐범이고 판별기는 경찰입니다
위조지폐범이 위조 지폐를 만들어 내는데에 집중하고
경찰을 그것을 판별해서 검거하는 것에 집중합니다

이러한 과정을 반복하면서 결국 GAN은 경찰이 위조지폐를 구분하지 못하는 것을 목표로 둡니다

다음은 16년에 발표된 것으로 DC 간입니다.


DCGAN은 간에 컨볼루션 레이어를 적용하여 학습을 안정화했다는 점과 판별자와 생성자의 컨볼루션 필터를 소개했습니다.

판별자는 안쪽 레이어로 가면서 너비와 높이는 감소하고 즉 해상도는 감소하고 채널은 증가하는 방식을 가졌고
생성자는 안쪽 레이어로 가면서 너비와 높이는 증가하고 채널을 감소하는 방식을 가집니다.

이런 방식으로 성능을 향상시켰다고 주장했습니다.

다음은 스타일 간에 베이스를 하고 있는 PGGAN입니다.

 


PGGAN은 학습하는 과정에서 점진적으로 레이어를 붙여 나간다는 특징이 있습니다.
우선 이 슬라이드에서는 4x4 저해상도 이미지부터 시작하여 최종적으로 1024x1024 고해상도 이미지 레이어를 추가하여 학습합니다


이러한 방식으로 안정적이고 빠른 고해상도 이미지 학습이 가능해졌다하고 있지만
특징 제어가 어렵다는 한계가 있습니다.


자세히 들어다보면 생성자를 통해 4x4 해상도 이미지가 생성이 되고 판별자가 생성된 이미지를 진짜 데이터라고 판별하면 다음 레이어로 16x16 해상도 레이어를 붙여나가며 해상도를 높여가는 방식입니다.
이러한 방식떄문에 생성자와 판별자는 거울과 같다라고 표현을 할 수 있습니다.

이렇게 점진적으로 새로운 레이어를 추가할 때 바로 추가하게 되면 학습이 안된 고해상도 이미지가 학습 시킨 저해상도 이미지까지 영향을 미쳐 간섭이 일어나게 되어 스무스하게 패이드인 시켜줍니다
레이어를 붙일 때 이미 학습시킨 저해상도 이미지를 2배로 스케일만 늘려서 대략적인 이미지를 생성하고
다음 레이어에 붙일 이미지와 2배로 늘린 저해상도 이미지를 합쳐서 이전 학습된 결과를 반영하게끔 했습니다.

이때 고해상도 이미지 각 픽셀 값에 1 ~ 0 사이의 비율을 나타내는 a를 곱하고, 저해상도 픽셀에는 1-a 값을 곱해주어서 서로 더해주는 방식으로 합쳤는데
점차적으로 이전 레이어의 영향력을 줄이는 방향으로 a값이 정해지게 했습니다.



PGGAN에서 특징 제어가 어렵다는 한계가 있었는데 이 부분을 해결하기 위한 아이디어는 매핑 네트워크 입니다.

매핑 네트워크는 특정 스페이스의 백터를 다른 스페이스의 벡터로 매핑시켜주는 것을 의미합니다.
512차원의 z 도메인을 바로 사용하는 것이 아닌 w 도메인으로 매핑을 하여 사용하자는 것입니다.

매핑 네트워크를 통해 나온 w 도메인을 이용하면 더욱 리니어하게 특징들이 얽히지 않는다는 아이디어를 냈습니다



스타일 간에서는 AdaIN이라는 스타일 모듈을 통해 원하는 데이터에서 스타일 정보를 가져와 적용할 수 있게 하였습니다.

4x4 저해상도 부터 1024x1024 레이어까지 총 9개의 블록으로 이루어졌고,
9개의 블럭인 이유는 4x4부터 1024x1024까지 2배를 증가하니 9개의 블록이 존재하는 것입니다

하나의 블록에는 2개의 컨볼루션 레이어와 2개의 아다인 레이어가 존재하는데
아다인 레이어는 컨볼루션 레이어에서 나온 결과를 처리하기 위해 사용하므로
컨불루션 레이어 이후에 존재합니다

1 x 512 w 벡터를 아핀 변환을 통해 각각의 채널마다 2개씩 스타일 정보를 만들어내는 것인데
각각의 피쳐맵에 대해서 값에 대해 얼만큼 스케일링하고 바이어스를 더할지 설정해주는 방식으로 동작합니다
이떄 y 값이 스타일 정보를 의미합니다

 

반응형

댓글