본문 바로가기

연구실 공부

[논문] DynaGAN: Dynamic Few-shot Adaptation of GANs to Multiple Domains

728x90

https://arxiv.org/pdf/2211.14554.pdf

해당 논문을 보고 작성했습니다.

 

Abstract

Few-shot domain을 다중 도메인에 adaptation 하는 것은 적은 train image로 다중 도메인의 복잡한 이미지 분포를 학습하는 걸 목표로 합니다. 일반적인 방법은 few-shot domain adaptation 방식을 이용해 각각 domain에 대해 별도의 model을 학습시키는 것입니다. 하지만 이 방식은 메모리가 많이 필요하고 계산 시간도 오래걸립니다. 그리고 이런 분리된 모델은 target domain의 공유되는 knowledge를 사용할 수 없습니다. 이 논문에서는 다중 domain을 위한 few-shot domain adaptation 방법인 DynaGAN을 제안합니다. DynaGAN은 학습된 GAN model을 다중 target domain으로 adapt하는 hyper-network인 adaptataion module을 가지고 있습니다. 따라서, 다른 target domain에 대한 knowledge를 공유할 수 있고 연산량 증가를 막을 수 있습니다. 크기가 큰 GAN model의 경우 여전히 연산량에 대한 문제가 있기 때문에 rank-1 tensor decomposition을 이용해 adaptation module을 경량화했습니다.

 

Introduction

GAN의 등장으로 이미지 합성은 다양한 방법으로 사용되고 성공적이였습니다. 하지만 GAN을 학습하기 위해서는 매우 많은 train image가 필요합니다. 최근 연구에서는 이를 해결하기 위해 새로운 방식들을 제시했지만 여전히 몇백 장의 이미지가 필요합니다.

많은 data를 모으는 것을 피하기 위해 domain adaptation 방식이 제안되었습니다. 이 방식의 주된 아이디어는 충분한 데이터가 있는 domain에서 학습된 GAN model을 활용해, data양이 적지만 일반적인 지식을 공유하는 domain에 finetuning되도록 하는 것입니다. 최근 few-shot domain adaptation 방식은 10개 보다 더 적은 train image로 성공적인 결과를 보였습니다. 하지만, 이 방식은 train image가 비슷한 형태라고 가정을 하고, 다양한 domain을 가진 train image을 다루는 것은 실패했습니다(다중 domain의 평균 style을 보여준다).

각각의 target domain을 위해 분리된 model을 학습함으로써 이러한 실패를 우회할 순 있지만, 많은 계산량과 시간이 걸리고 공유되는 지식을 사용할 수 없습니다(예, 서로 다른 작가들이 그린 유화의 공통적인 구조적 구성).

그래서 저자들은 DynaGAN을 제시하는데, seperate model 이론에서 벗어나, 충분한 data가 있는 domain으로 학습된 하나의 GAN model을 사용합니다. 이를 위해 adaptation module인 hyper-network를 제안하며, 각 target domain에 GAN model이 동적으로 adapt합니다. 이런 방식은 공유되는 지식을 사용할 수 있고 계산량이 증가하는 문제도 해결할 수 있습니다. 자세히 말하면, adaptation module은 target domain의 condition vector를 input으로 받아 target domain으로 동적으로 adapt 할 수 있도록 GAN model의 가중치를 변조합니다.

저자들은 adaptation module을 다중 target domain으로 구성된 train dataset을 이용해 학습합니다. 각 domain의 train dataset은 적은 상태(예를 들어 한장)로 학습을 진행합니다. 각 target domain의 유니크한 스타일을 유지하기 위해 contrastive-adaptation loss를 사용합니다. 

DynaGAN은 추가적인 이점이 존재합니다. 첫째, adaptation module을 사용해서 domain adaptation을 수행하는데, GAN model의 convolution layer의 weight만 수정합니다. 이를 통해 원래 GAN model의 semantic editability(이미지를 원하는 결과로 수정하는 기능)을 DynaGAN에도 유지할 수 있으며, adapt의 정도는 adaptation module의 가중치를 조절함으로써 쉽게 다룰 수 있습니다. 둘째, 다중 domain으로 학습을 한번에 할 수 있고, 서로 다른 domain에 공유하는 지식을 효과적으로 학습할 수 있습니다. 이를 통해 overfitting을 막을 수 있습니다. 셋째, target domain의 condition vector의 보간을 허용하는데, 이는 새로운 target domain으로 image를 쉽게 합성할 수 있다는 것을 의미합니다.

 

DYNAGAN

source domain에서 학습된 GAN model을 이미지가 몇 장 없는 다중 target domain으로 adapt시키는 걸 목적으로 합니다. 예를 들어 사람 얼굴을 만화, 동물, 그림 domain으로 변경시키는 것이 목적입니다. 먼저, 논문이 제시하는 모델은 target domain의 평균이 아닌 각 domain의 구분되는 특징들을 반영하는 다양한 이미지를 합성할 수 있어야 합니다.  그리고 각각 target domain에 맞게 분리된 model을 사용하는 것보다 더 작은 size를 갖기 위해 저자들의 model의 size를 줄여야 합니다. 마지막으로, image 합성을 위해 target domain을 선택할 수 있도록 controllable해야 합니다.

 

Framework

 

FIg 2.

DynaGAN은 generator network와 adaptation model로 구성됩니다. generator network로는 source domain으로 학습된 StyleGAN2의 generator를 사용합니다. generator는 latent vector z를 image로 합성하고, 합성된 이미지의 style은 adaptation module을 통해 target domain condition c에 의해 제어됩니다. 여기서 adaptation module은 hyper-network로 동작하는데, 이를 이용하면 주어진 target domain condition c를 통해 generator의 가중치를 동적으로 변경할 수 있습니다. adaptation module을 사용해 domain adaptation을 하면서 generator를 유지하기 때문에 generator는 adaptation module이 

조절하는 것을 끄면 original source domain의 image를 합성할 수 있습니다.

 

  • Modulation-aware Generator

Fig 3.

generator network로 StyleGAN2의 generator를 사용했는데, 이 network는 mapping network와 합성 network로 이루어져있습니다. 저자들은 이 generator를 약간 수정해 사용합니다.

먼저 StyleGAN2의 generator를 보겠습니다.

mapping network M_G는 latent vector z를 중간 latent vector w로 변환하고, w는 합성 network의 convolutional layer에 들어갑니다. Fig 3처럼, 합성 network는 여러 층의 convolution layer가 존재합니다. l번째 convolutional layer의 filter 가중치를 𝜑 ∈ R^(𝐶_in×𝐶_out×𝑘) 처럼 나타내는데 𝐶_in은 input channel size, 𝐶_out은 output filter의 수, 𝑘는 filter의 크기를 의미합니다. StyleGAN2의 original 구조에서 l번째 convolutional layer는 input feature  𝑋_(𝑙−1)을 output feature 𝑋_(𝑙)로 변환하는데,

 

StyleGAN2 generator의 convolutional layer

식은 위와 같습니다. 위 식에서 *은 convolution 연산자을 의미하고 b는 l번째 convolutional layer의 bias를 의미합니다. 𝑓 (·) 는 𝑓 = Demod ◦ Mod(·)로 이루어진 함수입니다. Mod(·)(각 채널의 feature map 크기를 조절하기 위해 사용)와 DeMod(·)(각 채널의 feature map을 sampling하기 위해 사용)는 조절과 조절을 해제 연산입니다. A(·) 는 affine 변환 layer(AdalN layer에서 사용되는 scale과 shfit 매개변수를 생성하기 위해 사용)입니다.

저자들은 추가적인 modulation parameter를 추가해 convolutional layer의 구조를 변경했습니다.

 

𝛿 ∈ R^(𝐶_out)는 filter-wise scaling factor인데 이는 함수 f의 output에 적용되는 값입니다.

(𝛿 ·𝜑)𝑖𝑗𝑘 = 𝛿_𝑗𝜑_𝑖𝑗𝑘 형태로 되고 i, j, k는 위에서 설명한 것과 같습니다. Δ𝜑는 filter weight에 추가되는 weight입니다. 𝛿, Δ𝜑는 기본적으로 convolution layer의 weight를 shift하고 scale을 변경하는데 사용됩니다. generator의 다른 부분을 건드리지 않으면서 convolution weight를 조절합니다. 이는 최근 연구들에서 convolution weight를 변경하는 것이 domain adaptation에 효과적이라고 하는데, 저자들이 제시한 방법은 이와 일치합니다. 

저자들의 접근법은 또한 일반적인 linear transformation을 사용하는 것이 아니라 filter-wise scaling을 사용하는데, 다른 논문에서 generator의 중간 feature map의 scale을 channel 별로 변경해 좋은 이미지를 만든다는 연구에서 관찰한 것에 기인한다고 합니다. filter-wise scaling은 parameter 수를 크게 줄이면서 효과적인 domain adaptation이 가능합니다.

 

  • Efficient Adaptation Module

𝛿, Δ𝜑을 추정하는 adaptation module을 소개합니다. Fig3를 보면, target domain의 one-hot vector c가 주어집니다. vector c를 latent vector v로 변환합니다. 이때 사용되는 것은 multi-layer pereptron(MLP)를 기반으로 한 mapping network입니다. latent vector v는 adaptation module의 affine layer로 들어가고, 결과는 modulation parameter인 𝛿, Δ𝜑을 생성합니다. 각각의 affine layer는 single fully connected layer로 구성됩니다.

모든 layer에서 Δ𝜑를 추정하는 것은 메모리와 resource에 상당한 부담이 됩니다. 그래서 Δ𝜑를 rank-1 tensor decomposition로 표현합니다.

 

𝛾 ∈ R^𝐶_out , 𝜙 ∈ R^𝐶_in and 𝜓 ∈ R^𝑘는 분해된 1D vector입니다. rank-1 분해를 통해 나온 vector를 사용하는 것은

고차원의 tensor를 사용하는 대신 3개의 1D vector를 사용하기 때문에 adaptation network 부담을 크게 줄일 수 있습니다.

 

Training

  • Initialization

저자들은 adaptation module을 rank-1 분해를 통해 구해진 modulation parameter 𝛾, 𝜙, 𝜓와 filter-wise scaling factor 𝛿를 추정하도록 학습합니다. generator network는 학습하는 동안 고정됩니다. warm start(pretrain된 model의 값을 초기값으로 사용)를 하기 위해, adaptation module의 modulation parameter가 pretrain된 generator network의 weights를 크게 변경하지 않도록 초기화합니다. 구체적으로, adaptation module의 affine layer의 가중치를 linear scalar 0.01로 감쇠시킨 random initialization로 이용해 초기화합니다. 게다가, 𝛿를 추정하는 affine layer의 bias parameter는 1로 설정해 𝛿가 1에 가깝도록 만듭니다. 𝛾, 𝜙, 𝜓에 해당하는 affine layer의 bias parameter는 1, 1, 0으로 초기화하여, Δ𝜑이 0에 가까워지도록 합니다.

  • Multi-domain Adaptation Loss

training loss를 위와 같이 세 가지 loss function의 가중합으로 정의합니다. λ_contra, λ_MTG, λ_ID는 가중치입니다. L_contra, L_MTG, L_ID는 contrastive-adpatation loss, MTG loss, identity loss입니다. 저자들은 실험에서 source domain과 target domain 모두 얼굴을 포함하고 있다면 λ_contra = 1, λ_MTG = 1, λ_ID = 3으로 설정하고 다른 경우 λ_ID = 0으로 설정한다고 합니다.

먼저, contrastive-adaptation loss는 서로 다른 target domain의 고유한 특성을 유지하도록 촉진합니다. 이 contrastive-adaptation loss의 key idea는 same/different target domain을 의미하는 positive/negative 쌍에 대해 합성된 이미지가 target training image와 비슷한/다른 것을 만들도록 하는 것입니다. target domain c의 training image와 합성된 image를 I_c와 I^c(w)로 표현하고 여기서 w는 StyleGAN2의 latent vector입니다.

저자들은 최근에 제안된 CLIP 임베딩 공간에서 cosine 유사도를 사용해 두 이미지의 유사도를 평가합니다. 구체적으로

 

위 식과 같이 작성됩니다. τ는 temperature parameter이고, 이 값은 1로 설정합니다. l_pos랑 l_neg ^j는  positive, negative 쌍의 유사도를 의미합니다.

 

유사도는 위와 같이 정의됩니다. sim(·)는 cosine 유사도, E_CLIP은 CLIP encoder, Aug(·)는 안정적인 학습을 위해 수평 반전, 색상 변형 augmentation 함수입니다.

L_MTG로 저자들은 MTG의 train loss를 사용하는데, 이는 재구성 손실과 CLIP-based loss(범위 밖으로 벗어난 값들에 대한 loss)의 조합으로 정의됩니다. adaptation module을 학습하기 위해 원래의 MTG loss를 약간 수정해 수정해 domain 의존성을 주입합니다. identity loss L_ID는 얼굴의 유사도를 face recognition network의 표현 공간에서 합성된 이미지와 source domain image를 비교해 측정합니다.

 

EXPERIMENTS

 

위 결과와 같이 논문에서 제시한 model이 다른 model에 비해 다양한 domain에 대한 synthesize image의 결과가 더 좋은 것을 볼 수 있습니다.

 

또한 Identity loss를 사용해 사람 얼굴의 identity를 유지하는 것을 볼 수 있습니다.

 

이번에는 수치를 보겠습니다. FID(Frechet Inception Distance, generate된 image와 original image의 feature map를 추출해 비교한 수치, 낮을 수록 유사함을 의미)값이 가장 낮은 것을 볼 수 있습니다. KID(Kernel Inception Distance, generate된 이미지들의 분포와 original 이미지들의 분포의 차이를 측정, 낮을 수록 유사함을 의미)값 또한 가장 낮은 것을 볼 수 있습니다. IS(Inception Score, 생성한 이미지가 얼마나 높은 확신도를 가지고 다양한 class로 인식할수록 높은 값을 가짐)도 꽤나 높은 값을 보입니다.

728x90