[논문리뷰] Unsupervised Pixel-level Domain Adaptation with GAN

2022. 2. 28. 20:00논문리뷰/GAN

GAN을 사용하여 unsupervised domain adaption을 한 논문이다. 조금 오래 전 논문임에도 불구하고 foreground에 대한 높은 reconstruction performance를 보여준다. 이제 자세하게 살펴보도록 하자!!

https://arxiv.org/abs/1612.05424

 

Unsupervised Pixel-Level Domain Adaptation with Generative Adversarial Networks

Collecting well-annotated image datasets to train modern machine learning algorithms is prohibitively expensive for many tasks. One appealing alternative is rendering synthetic data where ground-truth annotations are generated automatically. Unfortunately,

arxiv.org

 

1. Unsupervised domain adaptation

Computer vision 분야에서 large and well-anntotated datasets은 학습에 매우 중요하다. 하지만 그러한 데이터셋을 만드는 것은 시간적으로나 비용으로나 매우 비싼데, 이에 대한 대안으로 synthetic data를 쓰는 방법이 있다.

 

synthetic data for a car image

 

이미 game engine이나 rendering을 통해 이러한 synthetic datasets을 만들어서 학습하려는 시도가 있었는데, 이렇게 synthetic domains에서 학습한 모델을 real-world domain에서 사용하려면 매우 비싼 비용이 들거나 성능이 잘 나오지 않는 문제가 발생하였다. 

 

이러한 문제를 해결하기 위한 방법으로 "unsupervised domain adaption"이 등장하였다. unsupervised domain adaption이란, (label이 존재)source domain에서 배운 knowledge를 (label이 없음)target domain에 transfer하는 task를 말한다. 이렇게 학습된 모델은 source와 target 두 domain에서 모두 잘 동작하게 된다.

 

주요한 시도로는 두가지가 있는데, 첫번째는 source domain representation으로 부터 target domain representation으로의 mapping 함수를 찾는 것이다. 두번째는 domain-invariant representatinos을 찾아서 어떠한 한 domain에 제한되지 않도록 만드는 것이다. 이러한 시도들은 나름 좋은 성능을 보여주지만 supervised approches와 비교할 만한 수준은 못된다.

 

2. Couple of propertys for proposed methods

논문에서는 이전 방식들과 비교했을 때, proposed method가 가지는 이점들을 먼저 설명한다.

2.1 Decoupling from the task-specific Architecture

이전 방식들은 task-specific architecture와 domain-adaption이 통합되어있기 때문에, 다른 task에 적용하려면 전체 domain adaption process를 다시 학습시켜주어야 하는 문제가 있다. 하지만 PixelDA(proposed method)는 두 모델을 떼어놓았기 때문에 task-specific architecture를 바꾸더라도 domain adaption training을 다시 해줄 필요가 없다.

 

2.2 Generalization Across Label Spaces

위와 비슷하게, 이전 방식들은 specific task에 국한되도록 domain adaption이 학습되므로, 두 domain의 label space가 같아야한다는 제한이 있다. 하지만 pixelDA는 이러한 제한을 갖지 않는다.

 

2.3 Training Stability

domain adaption에서 사용되는 adversarial training form은 random initialization에 민감한 문제가 있다. 따라서 저자는 task-specific loss와 pixel similarity regularization을 이용해서 model collapse를 피하고 training stability를 높이는 방식을 사용한다. 위 방식을 사용하면, random initialization에 robust한 모델을 만들 수 있다고 한다.

 

2.4  Data Augmentation

이전 domain adpation은 finite set으로부터 학습한다는 제한이 있었는데, proposed method는 source images와 stochastic noise vector에 조건에 따라 무한한 stochastic samples를 만들어낼 수 있다. 결국 source image를 target domain의 다양한 조건에서 여러 새로운 이미지들을 만들어낼 수 있다는 말이다.

 

2.5 Interpretability

pixelDA는 이미지로써 output이 나오므로 이전 method의 adapted feature vector보다 쉽게 해석이 가능하다.

 

3. Model

 

이제 PixelDA 모델에 대해서 자세히 살펴보자. 먼저 이전 method들은 task-specific classification과 domain adpation이 합쳐져 있는 경우가 많았는데, pixelDA는 이 둘을 따로 분리한다. 따라서 한번 domain adaption이 학습되었다면, 따로 이를 재학습하지 않더라도 다른 classifier를 바꾸어 넣을 수 있다.

 

labeled dataset을 $X^s = {x^s_i, y^s_i}^{N^s}_{i=0}$이라하고, $X^t = {x^t_i}^{N^T}_{i=0}$를 unlabeled dataset이라 하자. 먼저 source domain image와 noise vector z를 사용하여 Generated fake image $x^f$를 만들어내고($G(x^s, z; \theta_G)\rightarrow x^f$), Generated 이미지를 새로운 데이터셋으로 구성하게 된다($X^f = {G(x^s, z), y^s}$). 마지막으로 adapted dataset $X^f$ 에 대해서 task-specific classifier는 마치 training data와 test data가 같은 distribution(domain)에서 온 것처럼 학습할 수 있게 된다.

**일반적인 Generator와 다르게, input으로 noise vector와 source domain image가 들어간다.

 

discriminator D는 이렇게 만들어진 Generated image가 target domain의 "real" image인지 아니면 G에서 만들어진 "fake" 이미지인지를 구별하는 역할을 한다.

 

구조가 조금 복잡하기 때문에 loss를 통해서 어떠한 식으로 학습이 되는지 수식으로 보는게 더 쉽게 이해할 수 있다.

3.1 Objective function

objective function은 다음과 같이 min max optimize를 사용한다.

$$min_{\theta_G, \theta_T} max_{\theta_D} \ \alpha L_d(D, G) + \beta L_t(G, T)$$

** $\alpha$와 $\beta$는 각 term의 가중치 parameter

 

domain adaption loss

$$L_d(D, G) = \mathbb{E}_{x^t} [logD(x^t; \theta_D)] + \mathbb{E}_{x^s, z}[log(1-D(G(x^s, z; \theta_G); \theta_D))]$$

domain adpation loss인 $L_d(D, G)$를 먼저 뜯어보자.

첫번째 term인 $\mathbb{E}_{X^t}[logD(x^t; \theta_D)]$은 maximize term이므로, target domain image $x^t$의 target domain에서 나왔을 likelihood를 높이는 방식으로 학습이 진행된다.

 

두번째 term인 $\mathbb{E}_{x^s, z}[log(1-D(G(x^s, z; \theta_G); \theta_D))]$는 Generator G에 대해서는 target domain에서 나왔을 likelihood가 높은 이미지를 만들도록 학습을 유도하고, Discriminator D는 반대로 Generated image에 대한 likelihood가 낮아지도록 유도한다. 즉, Generated image와 target domain image $x^t$가 같은 distribution(domain)에서 나온 것처럼 만들기 위한 Loss이다.

task-specific loss

다음으로 task-specific loss인 $L_t(G, T)$를 분석해보면,

$$L_t(G, T) = \mathbb{E}_{x^s, y^s, z}[-y^{s^T} log T(G(x^s, z; \theta_G); \theta_T) - y^{s^T} log T(x^s); \theta_T]$$

결국 이는 Generated image $G_s$와 source image $x^s$ 모두 label y로 잘 분류되도록 학습시키라는 loss term이 된다.

 

여기서 adapted image $G_s$만 가지고 학습을 시켜도 비슷한 performance를 얻을 수 있는데, model의 instability 때문에 다른 initialization에서 training이 더 오래걸릴 수 있다고 한다.

 

3.2 Content-similarity loss

특정 경우에 adaption process와 관련된 prior knowledge를 알고 있을 수 있다. 예를 들어, source image와 adapted image가 같은 hues를 가져야할 수도 있다. 논문에서는 관련된 실험으로 single objects를 검은 배경에 rendering함으로써, source image와 adapted image가 비슷한 foreground를 가지면서 다른 background를 가져야 한다는 prior를 만들어 낸다.

 

이러한 prior knowledge는 흔히 regularization term으로 loss에 추가된다.

$$min_{\theta_G, \theta_T} max_{\theta_D} \ \alpha L_d(D, G) + \beta L_t(G, T) + \gamma L_c(G)$$

 

추가된 loss $L_c(G)$는 source image와 adapted image의 foreground pixels이 차이가 커지지 않도록 하는 regularization term이 된다. 이 때 차이를 계산하기 위한 방식으로 "masked pairwise mean squared error"를 사용한다.

 

$$L_c(G) = \mathbb{E}_{x^s, z}[\frac{1}{k} || x^s - G(x^s, z ; \theta_G)) \circ m||^2_2$$

$$ -\frac{1}{k^2} (( x^s - G(x^s, z;\theta_G))^T m)^2]$$

 

첫번째 term은 mse이고, 두번째 term은 단순 픽셀간 뺄셈을 하고 이를 제곱하여 이를 첫번째 term에서 빼주게 된다. 즉, 첫번째 term에서는 전체적인 absolute 크기 차이를 구하고, 두번째 term에서는 픽셀 간의 차이를 구해서 이를 빼줌으로써 pairs of pixels간 차이가 클수록 더 penalize되도록 만드는 것이다.

**이때 k는 픽셀의 개수이므로 각 term을 평균화를 해준다고 생각하면 된다. 

**image generation에서 absolute차이는 averaging한 효과를 주기 때문에, pixels간의 차이를 penalize하는 것이 더 delicate한 이미지를 만들어낼 수 있다.

 

이러한 추가적인 regularization term(prior information)을 줌으로써 모델이 object의 전체적인 shape를 쉽게 만들어낼 수 있게 함과 동시에, adversarial training에서도 object를 일관되게 잘 바꿀 수 있도록 만들어준다.

4. Evaluation

실제로 PixelDA를 사용하여 domain adaption결과가 어떻게 나오는지 보여주고 있다. 

 

4.1 Qualitative Results

(a) source image, (b) adapted image, (c) nearest neighbors in the MNIST-M

 

위 이미지는 MNIST와 MNIST-M 데이터셋에 pixelDA를 적용한 결과이다. 완벽하진 않지만 어느정도 reasonable한 결과물들을 보여주고 있다. 특히 foreground는 domain adapation이 잘 되었다고 생각한다.

 

아래 이미지는 Synth Cropped Linemod를 Cropped linemod로 adapation한 결과이다. 아까 설명했듯이, synthetic image의 background를 검정색으로 주고 content-similarity loss를 추가하여 학습한 모델을 사용하였다. 마찬가지로 꽤 괜찮은 결과가 있는 반면 아예 이상한 결과도 종 종 보여주고 있다(맨 왼쪽). 또한, foreground에 비해 background의 distortion이 심한 단점을 보여준다.

 

4.2 Quantitative Result

이번엔 다른 domain adaption methods와 비교한 표를 살펴보자. MNIST-M에서는 매우 높은 차이의 classification accuracy(심지어 target-only 모델의 성능을 뛰어넘는다)를 보여주고, "synth cropped linemod to cropped linemod"에서는 높은 accuracy와 낮은 mean angle error를 가지는 것을 볼 수 있다. 

**여기서 source only와 target only란, 해당 datasets을 사용하여 학습한 모델의 accuracy를 말한다. 

 

4.3 Additional Experiments

Sensitivity to Used Backgrounds

추가적으로 실험을 몇 개 진행하였는데, 그 중 하나가 꼭 black background를 써야만 하냐는 것이다. 이에 저자들은 background를 랜덤으로 주어서도 실험을 하고, 이는 이전 보다 더 좋은 성능을 보이는 것을 볼 수 있다. 단, 여기서는 depth 이미지를 제외한 rgb 이미지만 사용하였다.

 


오래전 논문임에도 불구하고 좋은 성능을 보여준 논문이었다. 개인적으로 foreground에 비해서 background가 매우 낮은 quality를 보여주어서 perceptuality로는 별로였지만, 어차피 domain adaption이라는 task는 Neural Network가 domain-invariant하게 예측하도록 하는 것이 목표이기 때문에 필요없는 옵션이다라는 생각도 들었다. 최근에 나오는 GAN을 사용한 image-to-image generation 방식들도 background에 신경쓰기보다는 foreground를 high quality로 만들려는 경향이 큰 것 같다.