이미지 생성을 위한 Generative Adversarial Networks(GANs)의 latent space에서 다수의 interpretable dimensions이 존재한다.
image editing 관련하여 , 이전 방법에서는 synthesized smaple과 train linear classifier을 이용하거나 linear classifier를 latent space에서 학습시킨다.
위 경우에는 확실한 target attribute의 정의가 필요하다. <- 이러한 경우에는 학습의 한계가 발생하게 된다.(왜?)
본 논문에서
GANs의 학습된 내부 묘사를 보기 위해 여러 중요한 요소들을 시험한다.
GANs의 generation mechanism을 더 자세히 들여다 보고 latent semantic discovery를 위한 closed-form factorization algorithm을 소개한다.
이 접근방식은 semantically meaningful dimension을 가장 잘 찾아줄 뿐 아니라, 학습된 다양한 GAN models에서도 좋은 결과를 보인다.
1. Introduction
배경
GANs은 image synthesis에 있어서 좋은 결과를 냈다. 최근 GAN이 학습할 때 스스로 latent space에 다양한 특성을 나열한다는 것을 알아내었다.(gender, lighting condition ...)
image generation process으로 학습된 GAN을 다시 사용하여 editing application에 적용 가능하다.(like face manipulation, scene editing)
GAN latent space의 의미있는 방향을 찾기 위한 요점은 human-understandable concept을 적용하는 것이다.
latent code를 identifited direction으로 움직임으로서 semantic occurring을 output image에 발생시킬 수 있다.
그러나 latent space의 높은 dimensionality 때문에 latent code변화 시 이미지 여러 semantics에 변화가 발생한다. 그렇기에 latent spcae 내 적절한 방향을 찾는 것이 주요 도전과제이다.
과거 연구 방법(Supervised Learning)
supervised approache로 latent space를 classifier하는 방법이 있다. 많은 latent code를 랜덤하게 샘플링하고, 특성을 labeling한 데이터도 같이 전달하여 classifier를 학습시킨다.
학습시킬 label을 얻기 위해서, pre-trained attribute predictor이나 이미 특성 정보가 있는 이미지를 준비해야 한다.
그러나 supervised training 과정은 몇가지 한계점이 존재한다.
pre-defined classifier의 경우 classifier가 안되는 경우이거나 학습하기 어려운 상태이면 적용하기 어렵다는 단점이 있다.
sampling 시간이 걸린다는 점과 불안정 하다는 단점이 존재한다.(아마 랜덤 샘플링시 원하지 않는 모형이 나올 수 있는걸 말하는 모양.)
최근 연구에서는 interpretable GAN semantics를 unsupervised discovery방식으로 찾는 방법이 존재하나, 이것 또한 model training이나 data sampling이 필요하다.
본 논문에서는...
GANs으로 학습된 latent semantic direction을 찾는 알고리즘을 소개한다. 이건 어떤 학습이나 샘플링에서도 사용가능하다.
이 알고리즘을 SeFA(Semantic Factorization) 라 부른다. synthesized sample들을 intermediate step에 의존하는 것 대신, SeFa는 GANs의 generation mechanism 내부를 보고 image variation과 internal representation의 관계를 살펴본다.
사실상, GANs에 실제적인 사진을 latent code를 projection을 단계별로 할때, 각 단계는 다른 space로 projection하는 방법을 학습하게 된다.
진행과정 중에 많은 설명이 필요하다. 따라서 원하는 latent space에서 첫번째 projection step을 조사하게 된다.
closed-form 방법으로 latent space에서 변하기 쉬운 특성을 찾아낸다.(사전 훈련된 generator만 준비되면 가능하다.)
더 중요한 것은, 이 variation factor들은 unsupervisedly하게 SeFa에 의해서 찾아진다. 이로써 supervised approache형식보다 더 정확한 결과를 얻을 수 있다.
1.1. Related Work
Generative Adversarial Networks(GAN)
Latent Semantic Interpretation
2. Method
SeFa는 closed-from 방식으로 GANs의 latent interpretable direction을 찾아준다.
GANs의 generation mechanism을 깊게 살펴보고, 모델 가중치를 분해하여 latent space에서 의미있는 방향을 찾아준다.
2.1. Preliminaries
Generation Mechanism of GANs
generator G()는 d-dimensional latent space Z에서 Image space I로 mapping하는 방법을 학습한다. z와 i 는 input latent code(z)와 output 예측 image(i)를 의미한다.
최신 GAN 모델들은 보통 convolutional neural networks가 generator에 사용된다. G()는 multiple layer를 거치며 latent space에서 image space로 단계별로 project한다. 각 단계는 Z -> I space로 변환하는 과정을 학습하게 된다.
첫번째 step에 집중해서, latent space에서 우리가 원하는 사진의 latent vector를 찾도록 한다. 이건 affine transformation으로 수식화할 수 있다.
y : m-dimensional projected code
A : m*d dimensional weight / b : m-dimensional bias
G1 : first transformation step
Manipulation Model in GAN Latent Space
최근에 GAN의 latent space는 많은 semantic knowledge를 encoding 하고 있다는 것을 알아내었다.
semanics들은 vector arithmetic property를 이용하여 image editing에 적용될 수 있다.
이전 논문들은 n차원의 latent space에서 semantic concept을 다시 보여주는 시도를 하였다. 이 시도로 의미있는 방향을 찾은 뒤에 다음 방법을 적용하였다.
edit() : editing operation이다. z latent code를 linearly하게 움직여서 target semantic을 만들어 낼 수 있다.
2.2. Unsupervised Semantic Factorization
first projection in Generation
주 목적은 GANs latent space로 부터 n 방향 요소를 찾아내는 것이다.
GANs의 생성기는 여러 layer의 step으로 구성되어 있고, 각 layer마다 다른 latent space로 project하는 역할을 지닌다. 먼저 첫번째 project 하는 과정을 자세히 살피기로 한다.
manipulation process가 독립적으로 실행된다는 것을 알 수 있다.
다르게 이야기하면, 어떤 latent code z이던 간에 latent direction n도 포함되어 있다는 점, editing은 aAn을 더함으로서 얻을 수 있다는 점이 보인다.
식으로 보았을 때 필요한 사항은 다음과 같다. weight parameter A는 image variation을 필수적으로 알고 있어야 한다. 게다가 A의 latent directions을 알아내는 것이 중요하다.
Unsupervised approach
마지막으로 semantic factorization을 위한 최적화 문제를 해결하기 위해 unsupervised 접근을 언급한다.
|| ||2 : L2 normalization을 의미한다. 이 식은 A를 projection한 뒤 방향을 찾을 때 large variations을 발생시킬 수 있어서 이를 막고자 추가되었음
editing operation중 n' 방향이 zero-norm vector로 project되는 경우가 있다. (An' = 0) 앞의 수식에서 y' = y가 되어 editing이 안되는 경우가 발생한다.
이를 해결하기 위해서 여러 clone을 만들어 editing을 수행한다. 위의 식을 k개의 가장 중요한 방향 벡터로 만들어서 다음의 식으로 만든다.
k개의 semantics에 대응되는 N 벡터
위 식에다가 Lagrange multipliers를 적용한다.
위 괄호 안의 각 항에 ni를 곱하게 되면
위 식이 나오게 된다. 이를 통하여 {ni}의 최고 값을 얻어 k개의 n을 서로 구분할 수 있고, N개의 column을 얻어 AtA에 적용 가능하다.
2.3 Implementation on GAN models
2.2에서 closed-form algorithm을 살펴보았다. (SeFa) 이 알고리즘은 unsupervised fashion by efficiently investigating the weights of a pre-trained GAN generator에 이용 가능하다. 이 파트에서는 GAN model에서 어떻게 쓰이는지 확인해 본다. 적용 대상은 PGGAN, StyleGAN, BigGAN이다.
이러한 generator 구조에 SeFa는 latent code에서 feature map으로 변환하는 것을 학습한다.
StyleGAN
style-based generator이다. latent code를 각 convolution layer에 주는 형식이다.
latent code는 style code로 변환되고 AdaIN을 통하여 채널 단위로 mean, variance의 feature map을 형성하게 된다.
이 GAN type으로 우리는 latent code에서 style code로 바꾸는 과정을 학습한다.
SeFa가 유연하고 어떤 타입의 layer 경우에도 적용 가능하다는 점을 보인다.
BigGAN
BigGAN은 조건부 생성을 위해 설계된 대규모 GAN모델이다.
각 latnet code는 feature map으로 mapping 되고, 각 convolution layer의 입력으로 들어간다.
3. Experiments
많은 model의 interpretable directions을 통해closed-form algorithm을 평가한다. 또한 SeFa가 supervised & unsupervised에서 보이는 효과를 증명할 것이다.
3.1. Results on Diverse Models and Datasets
StyleGAN, BigGAN, StyleGAN2에서 테스트 해본다. 이 model들은 다른 dataset을 대상으로 학습하였다. FF-HQ, anime faces, scenes and objects(LSUN), streetscapes, and ImageNet이 그 대상이다.
Interavtive Editing by Tuning Interpretable Directions
우리의 알고리즘은 완전 unsupervise한 경우에도 돌아간다. model weight를 분해하여 important direction을 찾아낸 뒤, content editing을 위하여 GAN model과 상호작용 시킨다. 게다가 우리는 human-model interaction을 가능하게 하는 interface를 만들었다.
Result on StyleGAN
우리의 알고리즘은 style-based generator에서도 작동한다. 다양한 dataset을 학습한 모델에서 SeFa를 평가하였고(anime face, objects, scenes, and streetscapes).
낮은 레벨/ 중간 레벨/ 높은 레벨의 layer에 target model을 interpret시켰다. 그랬더니, 이전의 관찰과 비슷하게 낮은 레벨에서는 큰 범위의 특성을 조절하고(pose) 높은 레벨에서는 세세한 특성을 조절(color)하는 것을 확인하였다.
또한 SeFa가 발견한 variation factors가 인간의 인식과 어떻게 일치하는지 확인하기 위해 사용자 연구를 추가로 수행합니다.
user study를 통한 결과이다. 2K image를 각 데이터셋에서 생성하고, 각 layer의 레벨 당 top50의 direction을 이미지에서 manipulate시켰다.
괄호 안의 의미는 SeFa를 적용한 레이어의 범위이다.
12/12 에서 : 앞의 12는 사람이 보았을 때 content가 변한 개수를 의미하고, 뒤의 12는 실제 semantically meaningful의 방향이 변한 개수를 의미한다.
Result on BigGAN
large-scale의 BigGAN에 대해서도 조사해 보았다.
BigGAN은 category-derived embedding vector를 latent code로 확장하여 conditional synthesis를 수행한다.
여기서 SeFa는 semantic discovery에 집중한다. semantic에서 우리의 알고리즘은 다른 카테고리에서 manipulating image을 실행하였음을 보인다.
3.2 Comparison with Supervised Approach
supervised mothod인 InterFaceGAN과 SeFa 알고리즘을 비교함
generator는 PGGAN, StyleGAN 이용
Qualitative Results
SeFa가 editing pose, gender, eyeglasses, expression을 표현하는데 InterFaceGAN과 비슷하게 결과를 나타내었다.
InterFaceGAN은 pre-trained attribute predictor를 필요로 하지만, SeFa는 그런것 없이도 잘 된다.
Re-scoring Analysis
랜덤하게 2K의 이미지 샘플링 후 manipulate를 실시했다.
아래 표에서는 3가지를 명시한다.
1) SeFa는 attribute를 적절하게 control 가능하다.
2) 하나의 semantic을 조절할때, InterFaceGAN은 다른 attribute에도 영향을 미친다.
3) SeFa는 eyeglasses의 direction을 찾지 못했다.
Diversity Comparison
SeFa를 이용해서 더 다양한 semantic를 latent space에서 찾아내었다.
3.3 Comparison with Unsupervised Baselines
Comparison with Sampling-based Baseline
GANSpace는 샘플링된 데이터에서 latent space에서 중요한 방향을 찾는데 이용된다. 이 파트에서는 GANSpace를 이용한 SeFa와 FF-HQ를 학습한 StyleGAN을 비교한다.
SeFa가 더 정확한 조절이 가능하다.
Comparison with Learning-based Baseline
SeFa 방법이 더 정확하게 조절하는 모습을 볼 수 있다.
3.4 Real Image Editing
SeFa에 의해서 나타난 semantic들을 가지고 image editing을 수행해 보았다. real image를 input 으로 받고 그대로 만들어 내는 generator가 부족하기 때문에, 우리는 SeFa알고리즘에 GAN inversion을 포함시켰다.
4. Conclusion
이 논문에서 우리는 GAN에 의해 학습된 latent semantics을 인수분해하는 closed-form solution을 제안한다. 광범위한 실험을 통해 unsupervised 형식으로 다양한 유형의 GAN 모델에서 다양한 의미 체계를 식별하는 알고리즘의 강력한 힘을 보여줍니다.
5. 재 정리
(이건 대화 내용을 그대로 가져온 겁니다)
학습 없이 pre-train된 model의 style 가중치를 가지고 바로 editing할 수 있는 방법 이래
generator 과정을 진행하면 latent vector space에서 image space로 mapping하는 과정을 가지고 있는데
conv layer를 거치고 나온 결과에 벡터를 더해줘서 이미지 편집을 한다고 적혀있음
라그랑주 승수법을 이용해서 더해줄 벡터를 구한다는데 이 부분은 이해를 못함;;
원하는 attribute를 지정해서 바꾸지는 못해
SeFa에서는 이미지에 가장 많이 변화를 줄 수 있는 방향으로 latent vector가 이동하는데
그것이 특정 attribute를 변하게 하기 위해서 vector가 움직이는 게 아니라 말 그대로 많은 변화를 주는 것을 목적으로 변화를 주기 때문에 특정 attribute만을 바꾸지는 못해
입력 옵션 중에서 '--num_semantics'라는 옵션이 있는데, 이건 변화를 주는 정도의 크기를 기준으로 --num_semantics 만큼 벡터 값을 뽑아내서 latent vector에 변화를 줘
만약 --num_semantics = 3 이라면
1 = 가장 많이 영향을 주는 벡터를 conv output에 적용
2 = 두번 째로 많이 영향을 주는 벡터를 conv output에 적용
3 = 세번 째 ""
이러한 방식으로 되어있어
입력 옵션 중에서 '--num_semantics'라는 옵션이 있는데, 이건 변화를 주는 정도의 크기를 기준으로 --num_semantics 만큼 벡터 값을 뽑아내서 latent vector에 변화를 줘
만약 --num_semantics = 3 이라면
1 = 가장 많이 영향을 주는 벡터를 conv output에 적용
2 = 두번 째로 많이 영향을 주는 벡터를 conv output에 적용
3 = 세번 째 ""
이러한 방식으로 되어있어
어떻게 계산되는지는 잘 모르겠지만, 영향을 줄 벡터들의 저장 방식은 다음과 같음
'boundary'라는 변수의 2차원 array(512x512)로 저장되는데, 영향을 많이 주는 벡터 순으로 array(1x512size)가 형성되어 있었음.
Abstract
본 논문에서
1. Introduction
배경
과거 연구 방법(Supervised Learning)
본 논문에서는...
1.1. Related Work
Generative Adversarial Networks(GAN)
Latent Semantic Interpretation
2. Method
2.1. Preliminaries
Generation Mechanism of GANs
Manipulation Model in GAN Latent Space
2.2. Unsupervised Semantic Factorization
first projection in Generation
주 목적은 GANs latent space로 부터 n 방향 요소를 찾아내는 것이다.
GANs의 생성기는 여러 layer의 step으로 구성되어 있고, 각 layer마다 다른 latent space로 project하는 역할을 지닌다. 먼저 첫번째 project 하는 과정을 자세히 살피기로 한다.![2](https://user-images.githubusercontent.com/54474501/133869088-40cb7a76-6b66-421c-a681-029a9ea658af.png)
다르게 이야기하면, 어떤 latent code z이던 간에 latent direction n도 포함되어 있다는 점, editing은 aAn을 더함으로서 얻을 수 있다는 점이 보인다.
식으로 보았을 때 필요한 사항은 다음과 같다. weight parameter A는 image variation을 필수적으로 알고 있어야 한다. 게다가 A의 latent directions을 알아내는 것이 중요하다.
Unsupervised approach
2.3 Implementation on GAN models
2.2에서 closed-form algorithm을 살펴보았다. (SeFa) 이 알고리즘은 unsupervised fashion by efficiently investigating the weights of a pre-trained GAN generator에 이용 가능하다. 이 파트에서는 GAN model에서 어떻게 쓰이는지 확인해 본다. 적용 대상은 PGGAN, StyleGAN, BigGAN이다.
PGGAN
StyleGAN
BigGAN
3. Experiments
많은 model의 interpretable directions을 통해closed-form algorithm을 평가한다. 또한 SeFa가 supervised & unsupervised에서 보이는 효과를 증명할 것이다.
3.1. Results on Diverse Models and Datasets
StyleGAN, BigGAN, StyleGAN2에서 테스트 해본다. 이 model들은 다른 dataset을 대상으로 학습하였다. FF-HQ, anime faces, scenes and objects(LSUN), streetscapes, and ImageNet이 그 대상이다.
Interavtive Editing by Tuning Interpretable Directions
우리의 알고리즘은 완전 unsupervise한 경우에도 돌아간다. model weight를 분해하여 important direction을 찾아낸 뒤, content editing을 위하여 GAN model과 상호작용 시킨다. 게다가 우리는 human-model interaction을 가능하게 하는 interface를 만들었다.![5](https://user-images.githubusercontent.com/54474501/133872072-15b515d8-2419-4e31-99a3-6d839d18a85e.png)
Result on StyleGAN
우리의 알고리즘은 style-based generator에서도 작동한다. 다양한 dataset을 학습한 모델에서 SeFa를 평가하였고(anime face, objects, scenes, and streetscapes).
Result on BigGAN
large-scale의 BigGAN에 대해서도 조사해 보았다.
3.2 Comparison with Supervised Approach
Qualitative Results
Re-scoring Analysis
Diversity Comparison
3.3 Comparison with Unsupervised Baselines
Comparison with Sampling-based Baseline
GANSpace는 샘플링된 데이터에서 latent space에서 중요한 방향을 찾는데 이용된다. 이 파트에서는 GANSpace를 이용한 SeFa와 FF-HQ를 학습한 StyleGAN을 비교한다.![1](https://user-images.githubusercontent.com/54474501/133873149-e81ddc88-2f5c-4363-b046-bcbfedfeb19c.png)
Comparison with Learning-based Baseline
3.4 Real Image Editing
SeFa에 의해서 나타난 semantic들을 가지고 image editing을 수행해 보았다. real image를 input 으로 받고 그대로 만들어 내는 generator가 부족하기 때문에, 우리는 SeFa알고리즘에 GAN inversion을 포함시켰다.![1](https://user-images.githubusercontent.com/54474501/133873037-929ded0d-81c5-4e51-81cb-cc3751829b2b.png)
4. Conclusion
이 논문에서 우리는 GAN에 의해 학습된 latent semantics을 인수분해하는 closed-form solution을 제안한다. 광범위한 실험을 통해 unsupervised 형식으로 다양한 유형의 GAN 모델에서 다양한 의미 체계를 식별하는 알고리즘의 강력한 힘을 보여줍니다.
5. 재 정리
(이건 대화 내용을 그대로 가져온 겁니다) 학습 없이 pre-train된 model의 style 가중치를 가지고 바로 editing할 수 있는 방법 이래 generator 과정을 진행하면 latent vector space에서 image space로 mapping하는 과정을 가지고 있는데 conv layer를 거치고 나온 결과에 벡터를 더해줘서 이미지 편집을 한다고 적혀있음
원하는 attribute를 지정해서 바꾸지는 못해 SeFa에서는 이미지에 가장 많이 변화를 줄 수 있는 방향으로 latent vector가 이동하는데 그것이 특정 attribute를 변하게 하기 위해서 vector가 움직이는 게 아니라 말 그대로 많은 변화를 주는 것을 목적으로 변화를 주기 때문에 특정 attribute만을 바꾸지는 못해
입력 옵션 중에서 '--num_semantics'라는 옵션이 있는데, 이건 변화를 주는 정도의 크기를 기준으로 --num_semantics 만큼 벡터 값을 뽑아내서 latent vector에 변화를 줘
입력 옵션 중에서 '--num_semantics'라는 옵션이 있는데, 이건 변화를 주는 정도의 크기를 기준으로 --num_semantics 만큼 벡터 값을 뽑아내서 latent vector에 변화를 줘
어떻게 계산되는지는 잘 모르겠지만, 영향을 줄 벡터들의 저장 방식은 다음과 같음 'boundary'라는 변수의 2차원 array(512x512)로 저장되는데, 영향을 많이 주는 벡터 순으로 array(1x512size)가 형성되어 있었음.
6. Reference
1. 수식 설명 2. 코드 설명