v1은 latent를 층별 style로 바꿨습니다
기존 GAN은 무작위 latent z를 generator에 바로 넣는 경우가 많았습니다. StyleGAN v1은 mapping network로 z를 중간 latent w로 바꾸고, synthesis network의 여러 층에 style을 주입합니다. 이 구조는 학습 데이터의 얽힌 분포에서 표현을 떼어 내고, 서로 다른 해상도 층이 다른 시각 속성을 맡도록 유도합니다.
낮은 해상도 층은 얼굴의 pose와 큰 형태 같은 coarse style, 중간 층은 눈과 머리 형태, 높은 해상도 층은 색과 미세 질감을 주로 바꿉니다. 두 latent의 style을 층 구간별로 섞는 style mixing이 가능한 이유입니다. 각 층의 독립적인 noise는 머리카락 가닥이나 주근깨처럼 정체성을 결정하지 않는 stochastic detail을 담당합니다.
v1의 style 적용에는 AdaIN이 쓰입니다.
\[\operatorname{AdaIN}(x_i,y)=y_{s,i}\frac{x_i-\mu(x_i)}{\sigma(x_i)}+y_{b,i}\]
feature를 정규화한 뒤 style에서 얻은 scale과 bias를 적용하는 방식입니다. 제어는 쉬워졌지만 강한 정규화가 물방울처럼 보이는 droplet artifact를 만드는 원인도 됐습니다.
Style mixing 실험은 두 latent를 섞었다는 사실보다 어느 층까지 첫 번째 style을 쓰고 어디서 두 번째 style로 바꿨는지가 핵심입니다. 낮은 해상도 구간만 바꾸었는데 자세와 얼굴 윤곽이 함께 움직이고, 높은 해상도 구간만 바꾸었는데 색조와 머리카락 결이 달라진다면 층별 역할을 관찰할 수 있습니다. 하지만 이 경계를 고정된 의미 사전처럼 쓰면 실패합니다. 학습 해상도, 데이터 정렬, 네트워크 구성에 따라 같은 층 번호가 담당하는 속성이 달라질 수 있기 때문입니다.
독립 noise도 style과 구별해야 합니다. 같은 w를 유지한 채 noise만 바꿨을 때 주근깨나 잔머리 같은 국소 변화가 나타나는지 보고, 얼굴 방향이나 정체성까지 크게 바뀐다면 학습된 역할 분리가 기대와 다르다고 판단할 수 있습니다. 이렇게 입력 요인을 하나씩 고정해야 latent 편집이 불안정한 원인을 찾기 쉽습니다.