StarGAN v2 — 하나의 모델로 여러 스타일의 이미지를 생성한다?
StarGAN v2: Diverse Image Synthesis for Multiple Domains
이유정 Sogang Univ. BaSE LAB, CURG
lkitty0302@gmail.com
이번 포스팅에서는 StarGan을 발전시킨 StarGan v2논문에 대해 소개하고자 한다.
본 글은 StarGAN v2에 대한 설명으로,지난주 포스팅 StarGan에 대한 내용을 읽고오는 것을 추천한다.
StarGAN — 단일 모델로 다중 도메인 이미지 변환기 만들기
1. Introduction
StarGAN에 대해 간단하게 소개하자면, 기존 모델의 경우 변경하고자 하는 도메인 갯수 만큼의 모델이 필요했다면, 하나의 모델로 여러 도메인(multi-domain)의 이미지를 생성할 수 있는 모델이 바로 StarGAN이다.
StarGAN 에서는 각각의 도메인에 대해 동일한 변형만 가능했다면 StarGAN v2는 domain-specific style code로 변경하여 이미지생성 뿐만 아니라 image to image translation이 가능하도록 하며, 단일 스타일 인코더, 단일 생성기를 사용하여 다양한 도메인에 대한 style transfer가 가능하도록 발전시켰다. 이를 위해 mapping network와 style encoder모듈을 추가하였으며 다양한 도메인의 다양한 이미지를 합성할 수 있다는 결과를 도출했다. 본 논문에서 좋은 image-to-image 는1) 다양한 이미지를 생성할 수 있으며, 2) 다양한 도메인으로 확장이 가능해야 한다는 두가지 특성을 가져야 한다고 말한다. StarGAN v2는 하나의 모델로 두가지 특성을 모두 만족하며 다른 GAN모델 보다 우수한 성능을 보인다.
그림1은 본 논문의 가장 첫페이지에 실려 있는 그림으로 StarGAN v2를 사용하여 이미지를 합성한 결과이다. 위쪽 이미지는 사람 이미지를 input image로 넣어 여성과, 남성으로 변환한 결과이며, 아래는 고양이와 사자를 input image로 넣었을 때 고양이와 강아지, 야생동물로 변환한 결과이다. 위 그림에서 이목구비는 비슷한데 전체적인 스타일과 특징만 변경된 것을 확인할 수 있다.
2. StarGAN v2 Network model
아래 그림2는 StarGAN v2의 네트워크 구성이며, 전반적인 흐름을 나타낸다. (a) Generator, (b) Mapping network (c) Style encoder와 (d) Discriminator로 구성되어 있다. 기존 StarGAN과 달리 StarGAN v2에서는 mapping network와 style encoder가 추가되었다.
먼저 Generator는 입력 이미지 x를 mapping network와 style encoder로 부터 생성된 output domain s를 반영하는 이미지 G(x,s)를 생성한다. Generator는 기존 starGAN과 유사하다.
Mapping network는 도메인 y와 잠재 벡터 z가 주어질 경우 mapping network F는 style code s = F_y(z)를 생성한다 . 가능한 모든 도메인의 style code를 제공하기 위해 여러 output branch와 함께 MLP로 구성되며, z와 y를 샘플링하여 다양한 style code를 생성할 수 있다.
F_y(.) : 도메인 y에 대응하는 F
Style encoder는 이미지 x와 대응하는 도메인 y에 대해 S = E_y(x)를 생성하며 Generator가 image x에 대한 style을 반영하여 생성할 수 있게 도와준다.
E_y(.) : 도메인 y에 대응하는 E
Discriminator는 여러 output branches를 가지고 있는 multitask discriminator이다. 이미지가 real image인지 fake image인지를 판별하며, D_y는 해당 y도메인의 이미지인지 판별한다.
3. Training objectives
StarGAN v2에서는 Adversarial loss, Style reconstruction loss, diversity sensitive loss, cycle consistency loss 총 4가지의 손실함수로 구성되어 있다. L_D는 Discriminator의 손실함수를, L_G는 Generator의 손실함수를 의미한다.
x : 원본 이미지
y : 이미지x의 도메인
y~: 타깃 도메인
s~: F_y~(z), 타깃 도메인에 대한 스타일 벡터
s^: E_y(x), 이미지 x에서 도메인 y에 대해 추출한 스타일 벡터
D_y : 도메인 y에 대한 Discriminator
먼저 adversarial loss는 GAN의 핵심이 되는 loss함수이다. G는 s~와 이미지 x를 input으로 받아서 output 이미지 G(x,s~)를 adversarial loss를 통해 학습한다. Mapping network F는 target domain y에 있을 법한 스타일 코드 s를 생성하는 것을 학습하는 것을 목표로 하며, G는 s를 통해 도메인y와 구분되지 않는 이미지를 만들어 내는 것을 목표로 한다.
Style reconstruction loss는 G가 이미지를 생성할 때 S~를 이용하도록 강제하기 위해 이용한다. 단일 Encoder를 통해 여러 도메인에 대해 다양한 출력을 뽑아낼 수 있다.
Diversity sensitive loss는 G가 다양한 스타일의 이미지를 생성할 수 있도록 한다. s~_1,과 s~_2는 랜덤 잠재 벡터 z_1과 z_2가 mapping network F가 만들어낸 스타일 벡터이다. s~_i = F_y~(z_i)를 최대화 하여 G가 다양한 이미지를 생성하기 위해 다양하고 의미있는 스타일 벡터를 찾을 수 있도록 한다.
Cycle consistency loss는 x를 새로운 스타일 코드로 바꾼 이미지를 원본 스타일 코드로 다시 바꿔 원본 이미지와 차이를 비교하여 원본 이미지의 특징을 잘 유지할 수 있도록 한다.
위 수식은 StarGAN v2의 최종 손실함수이다. λ는 하이퍼 파라미터로 본 논문에서 CelebA-HQ dataset에서는 λ_sty = 1, λ_ds = 1, λ_cyc = 1을 사용하였고 AFHQ dataset에서는 λ_sty = 1, λ_ds = 2, λ_cyc = 1을 사용했다.
4. Experiments
본 논문에서 실험의 basic setup은 StarGAN으로 WGAN-GP, ACGAN discriminator, depth-wise concatenation이 적용되었으며, Dataset은 CelebA-HQ와 AFHQ를 사용하여 StartGAN v2와 성능을 비교한다.
위 표1은 정량적으로 비교한 수치이다. FID는 실제 이미지와 생성된 이미지의 특징 벡터간의 거리를 계산한 값이다. 수치가 낮을수록 생성된 이미지와 실제 이미지가 유사하다. LPIPS는 이미지 패치 유사성으로, FID와 LPIPS를 사용하여 생성된 이미지의 품질과 다양성을 평가한다. 실험 결과 여러 method를 거쳐갈수록 수치가 낮아져 실제 이미지와 유사해 진다는 결과를 얻을 수 있다.
그림 5는 Latent-guided 방법에 대해 MUNIT, DRIT, MSGAN과 StarGAN v2를 비교한 결과이다. 랜덤한 noise를 사용하여 여러개의 출력을 생성하며 다른 baseline image에 비해 훨씬 자연스럽게 이미지가 생성 된 것을 확인할 수 있다.
그림 6은 reference-guided방법으로 source 이미지를 reference의 스타일로 변경하는 실험이다. 생성된 이미지를 MUNIT, DRIT, MSGAN과 StarGAN v2를 비교한 결과 다른 방법들에 비해 StarGAN v2가 자연스러운 결과를 도출해 내며, 오른쪽 동물 사진에서 귀 생성 등 다소 어려운 부분도 StarGAN v2에서는 자연스럽게 이미지를 합성할 수 있음을 보여준다.
5. 결론
이번 포스팅에서는 StarGAN v2에 대해 소개했다. 기존 StarGAN과 StarGAN v2의 가장 큰 차이점은 2개의 모듈이 추가되었으며 추가된 mapping network와 style encoder에서 style code를 생성하기 때문에 generator는 오직 style code를 사용하는데에만 집중할 수 있어 더욱 좋은 퀄리티의 이미지를 생성할 수 있다. 또한 모듈의 공유하는 부분은 정규화 효과를 유도한다. StarGAN v2역시 github에 구현한 코드를 공개했다[2]. 따라서 StarGAN v2의 코드나 더 자세한 내용이 궁금하다면 논문 저자의 깃허브를 참고하면 좋을 것 같다.
Reference
[1] https://arxiv.org/pdf/1912.01865.pdf
[2] https://github.com/clovaai/stargan-v2
[3] https://wingnim.tistory.com/96
[4] https://sysyn.tistory.com/29