isPowerfulBlog
[논문리뷰] StyleGAN: A Style-Based Generator Architecture for GANs 본문
StyleGAN
PGGAN 구조에서 Style transfer 개념을 적용한 새로운 generator architecture
Style transfer
특정 이미지에서 style(나무)을 뽑아내고 다른 이미지에서 content(의자)를 뽑아내서 이를 합성(나무의자)하는 방식
PGGAN
학습을 진행하는 과정에서 점진적으로 layer를 추가해나가면서 점진적으로 해상도 증가시키는 generator architecture
의의
- 한 번에 고해상도 이미지를 만드는 것 보다 안정적으로 이미지 생성 가능
- 학습 속도가 많이 향상됨
한계
- 이미지의 특징 제어가 어려움
이러한 PGGAN의 한계를 극복하고자 StyleGAN에서는 image의 특징들을 disentangle시키는 구조로 특징 제어 성능을 향상시킴
Disentangle
본 논문에서는 이미지에 포함되어있는 각 특징들이 잘 분리되어있음을 disentangle로 나타냄
반면에 나이, 성별, 안경 유무 등의 정보들이 얽혀있다면 entangle한 상태
특징들이 entangle한 상태라면 특징들을 분리해서 컨트롤하기 어려움
예를 들어, 안경 유무를 조작하려고했는데 성별이 바뀌는 등 원하는 특징의 조작이 어려울 수 있음
예를 들어,
- 가로축 남자 <-> 여자
- 세로축 머리길이
라고 했을 때, "머리긴남자"에 대해서는 데이터가 없는 상황의 데이터의 형태를 변환시켜 학습 시키려고 할 때, - 두 번째 figure의 경우, 특징들이 entangle되어 있는 상태
"머리짧은남자"데이터에 대해 머리길이를 수정하고자할 때, 특징공간의 급격한 커브로 인해 성별이 변화할 수 있음("긴머리여자") - 세 번째 figure의 경우, 특징들이 disentangle되어 있는 상태
머리와 성별 특징이 더욱 linear한 형태로 분리되어있어 특징 변화를 줄 때 급격한 커브로 인한 예상치 못한 특징 변화를 막을 수 있음
Traditional vs StyleGAN Arichitecture 비교
Traditional
- latent vector인 z를 직접 input하여 start
- (4x4)에서 (1024x1024)까지 upsampling 및 convolution을 거쳐 이미지로 변환
StyleGAN
- latent vector인 z를 Mapping Network인 f에 통과시켜 intermadiate latent vector w로 변환
f는 FC layer 8개로 구성 - 학습된 상수 tensor로 Synthesis Network인 f를 start
- 위 과정에서 생성된 w를 Synthesis Network인 g의 각 블록(총 9개 블록)마다 두 번씩 input시켜(9x2 총 18번) 이미지를 생성하는 과정에서 style을 입힘
- 중간중간에 noise를 추가하여 이미지의 stochastic variation을 컨트롤
Style(w) / Noise
Style(w)
- high-level gloabl attributes
- 얼굴형, 포즈, 안경 유무 등
Noise
- stochastic variation
- 주근깨, 피부 모공 등
- Coarse noise: 큰 크기의 곱슬거림, 배경 등
- Fine noise: 세밀한 곱슬거림, 배경 등
Style Mixing
인접한 layer간의 상관관계를 줄이는 테크닉
다양한 특징들이 더 잘 분리될 수 있도록 함
- 두 개의 latent input vector(w1, w2) 준비
- 크로스오버(cross over) 포인트 설정
- 크로스오버 포인트 이전은 w1 벡터, 이후는 w2 벡터 사용
이를 통해 style은 각 layer에 대하여 localization됨
위 이미지는 source B로 부터 style을 가져와 각각 source A의 Coarse, Middle, Fine에 대입한 예시
Synthesis network를 세 파트로 구분할 수 있음
- Coarse
처음 4개의 layer에 style을 적용한 경우, 이후 많은 layer들을 거치기 때문에 이미지의 큰 변화에 영향을 미침 - Middel styles
중간 4개의 layer에 style을 적용한 경우, Coarse 보단 더, Fine 보단 덜 세밀한 부분의 변화 - Fine styles
마지막 10개의 layer에 style을 적용한 경우, 미세한 detail들에 변화
References
[원문] https://arxiv.org/abs/1812.04948
https://www.youtube.com/watch?v=HXgfw3Z5zRo
https://blog.lunit.io/2019/02/25/a-style-based-generator-architecture-for-generative-adversarial-networks/
https://velog.io/@ghgh5317/StyleGAN-v1-%EA%B0%84%EB%8B%A8%ED%95%98%EA%B2%8C-%EC%A0%95%EB%A6%AC#style-mixing
https://www.notion.so/AdaIN-Arbitrary-Style-Transfer-in-Real-Time-With-Adaptive-Instance-Normalization-9fe8b5fb60154380b6fbe3147e0afe9e
'AI' 카테고리의 다른 글
[환경구축] StyleGAN2 | Setting up StyleGAN2 TensorFlow in GoogleColab (0) | 2023.01.06 |
---|---|
[GoogleColab] How to Downgrade to an Older Version of TensorFlow (0) | 2023.01.03 |
[논문리뷰] GANSpace: Discovering Interpretable GAN Controls (0) | 2022.11.28 |
[OCR] 개념 (0) | 2022.09.18 |
[GoogleColab] Runtime: 연결 끊김 방지 (1) | 2022.09.10 |