본문 바로가기

Data-science/논문 읽기

[논문 읽기] Unsupervised Image to Image translation via pretrained stylegan2 network

728x90

Abstract

새로운 I2I 방법!

- pretrained stylegan2를 이용 (소스 도메인)

- 역변환 방법 (이미지 -> latent vector)

Introduction

 

Generator가 2개인데 하나는 domain X에서 무언가를 만든다. 이를

$G_{X}$라하자. Generator는 domain Y에서 이미지를 생성한다. 이를 $G_{Y}$라고 하자.

z라는 latent code 가 주어졌을 때 이미지 X를 생성할 수 있다. 즉

$G_{X}(z)$, $G_{Y}(z)$를 생성하는데 이 둘의 이미지는 뭔가 유사하지만 domain만 다른 것이 되도록 해야 한다.

이 방법은?? $G_{X}$ 를 Y 도메인 데이터로 파인 튜닝하는 것이다. 구체적으로는 FreezeFC라고 한다.

Style Fully connected Layer 8개를 freezing하는 방식이기 때문이다.

이를 얼리고 학습한 결과 $G_{Y}$를 만들 수 있다.

이 과정을 논문에선 T라고 표현한다.

$G_{Y}$ = $T_{X\rightarrow Y}(G_{X})$

 

CycleGAN, MUNIT , DRIT 등은 모두 cycle loss를 활용하는데 X->Y , Y->X 둘다 학습시켜야 한다. 만약 한 쪽 데이터가 부족하거나 균형이 맞지 않으면 mode collapse가 일어난다. 즉 한쪽 도메인의 데이터가 부족하면 적절한 결과를 얻지 못한다. 그런데 이 방법은 한쪽 데이터 만으로도 가능하기에 이런 문제가 없다.

 

위 이미지를 보면 이해가 쉽다. 

1. Inv? 이미지가 입력되면 이를 역변환 한다. 보라색은 Source domain(여기선 사진)이고 진한 초록색은 Source domain의 pretrained network다. 여기서 latent code를 추출한다. 

2. F? Source domain에서 학습된 network를 fine tuning 한다. z에서 w로 style을 맵핑시키는 부분을 얼린다.(freezing) 이렇게 하면 두 모델간의 거리를 낮게 유지할 수 있다고 한다.(추후 설명) 분홍색 상자에 들어가 있는 건 Target Domain(여기선 초상화)에서 이루어진다. 그 중에 첫 번째 주황색 상자는 F(Fine tuning)을 거친 네트워크다. 파인튜닝을 거치면 저렇게 이미지를 생성할 수 있다.  

3. S? 두번째 주황색 상자에서 초록색 부분의 네트워크 가중치를 그대로 가져온다. 저 부분은 Stylegan2 Generator에서 특정한 부분이다. 즉 Target domain에서 학습한 저 layer를 대체하는 것이다.(Swap) Source domain에서 학습한 가중치로 대체! 그렇게 하면 Final Output이 나온다. 보듯이 실제 photo의 표정을 더 생생히 잡아낸다. l이 커질수록 더 많은 layer를 Source domain 것으로 대체했다는 말이다.

이 논문이 기여한 점

1.

1. 모델간의 의미 유사도를 측정하기 위한 거리를 정의. 두 모델 사이에 생성된 이미지 사이의 거리를 측정한다. 단, 입력되는 latent vector가 동일할 때 생성되는 두 이미지다. 모델 거리는 두 도메인 사이의 I2I 변환을 분석하는 데 도움을 준다! (가령 일반 얼굴 사진과 애니메이션 얼굴 사이에는 모델 거리가 크다고 한다. 그래서 I2I가 좀 부자연스럽다.)

2. unsupervise I2I 방식을 제안. 멀티-모달, 멀티-도메인 방식이라고 한다. 

3. 역변환 방법을 소개하는데, 이전 방법에 비해 퀄리티카 높다.

4. 다양한 데이터셋에서 state-of-the-art한 성능을 냈다.

방법론

A. 모델 거리와 변형



소스 도메인과 타겟 도멘인 사이에 거리가 작아야지만 I2I가 제대로 이루어진다.

Fully connected layer마 freezing 해서 fine tuning 이유

- 기본 모델과의 거리가 더 작은 모델을 얻을 수 있기 때문에

- 기본 모델과 같은 임베딩 공간을 갖기 때문이에

fine tuning을 한 $G_{D_{t}}$의 경우 Source Domain으로 부터 학습한 특정 특징들을 잊어 버린다. 그래서 Swap 연산이 등장. Source domain에서 higher conv layer를 $G_{D_{t}}$에 넣는다. 

 

 

fine tuning 하고 layer swap 까지 한 걸 Transformation으로 정의!

 

 

이 때 Source 도메인에서 이미지 역변환 연산에 대해 얘기를 한다. 기존과 달라진 점은 무엇?

 

기존 연산의 경우 이미지와 생성이미지 사이의 $L_{1}$ distance가 첫번째 항이다. 그리고 여기에 pre-trained VGG에서 추출한 feature 간의 $L_{2}$ distance를 더한 항을 loss로 한다. (VGG network에 들어가는 건 첫번째 항의 입력과 같다. 이미지와 w로 생성된 이미지다.) 그리고 이를 최소화하는 w를 찾는 방식이었다. 

SeFa를 참고해서 이를 inversion 연산에 응용한다. w 자리에 sefa를 통해 알게된 점. $V=A^{T}A$라는 metrix를 고유값 분해하고, 고유벡터를 찾아내면 그 녀석이 이미지의 특성 변화를 최대화하는 방향이란 것이다. 그래서  w대신 $v^{T}V$를 넣어 저 loss항을 최소화 시키는 v를 찾는 걸로 문제를 변형한다! 이 부분은 좀 더 이해가 필요

기발한 아이디어다. sefa와 inversion 연산을 함께 고려하다니!!

study-grow.tistory.com/entry/Closed-Form-Factorization-of-Latent-Semantics-in-GANs-%EB%85%BC%EB%AC%B8-%EC%84%A4%EB%AA%85?category=702426

 

Closed-Form Factorization of Latent Semantics in GANs 논문 설명

latent space를 조절해서 이미지를 편집하는 종전의 기술은 지도 학습 기반으로 시행됐다. 이 논문에선 비지도학습 기반으로 이걸 가능하게 한다. pretrained weights를 분해하는 걸로 closed-from factorizatio

study-grow.tistory.com

C. Multi-Modal and Multi-domain I2I translation

w를 콘텐츠를 담는 $w_{c}$ 와 외형을 담는 $w_{a}$ 두 부분으로 분리했다. $w_{c}$는 앞서 설명한 inversion 연산을 통해 얻어진다. $w_{a}$는 normal distribution으로 부터 임의 샘플링 한다. 대부분의 layer에는 콘텐츠 latent를 적용하고 마지막 몇몇 layer에만 외형 latent를 사용한다.

그래서 마지막 수식이 위와 같다. $w_{c}$를 inversion으로 표현한 걸 보시라.

실험 및 기타 기억할만한 내용

- 사람 얼굴과 애니메이션 데이터 사이의 거리가 꽤 커서 I2I 과제로 어려웠다.

- A 데이터로 학습한  모델 A를 얼려서 B 데이터로 파인튜닝했다.

- 한 도메인내 주요한 이미지 콘텐츠를 조절할 수 있는 레이어를 찾았다. 8x8 ~ 32x32 

FC를 얼리고 Fine tuning하고 Layer Swap을 하는 변형 과정을 거치지 않은 것. 즉 독립적으로 학습하고 Layer를 Swap하면 결과는 망한다.

앞에서 저자가 말한 것처럼 source model과 target model의 style의 embedding space가 달라져서 이런 결과가 나온 거 같다.

 

 

FID도 낮게 나온걸로 보아 성능도 좋다.

 

github.com/HideUnderBush/UI2I_via_StyleGAN2

 

HideUnderBush/UI2I_via_StyleGAN2

Unsupervised image-to-image translation method via pre-trained StyleGAN2 network - HideUnderBush/UI2I_via_StyleGAN2

github.com