Deep Learning/CV

[paper review] Unsupervised pixel-level Domain Adaptation with GAN

zooyeonii 2021. 5. 28. 17:31

CVPR 2017

배경

large-scale, well-annotated 데이터를 모으는 것은 매우 많은 비용이 든다. 따라서 pre-train 된 모델에서 knowledge trasfer 하여 모델을 구성하는 방법이 제시되어왔다. 하지만 데이터의 분포가 다르기 때문에 실제 제대로 작동하지 않는 문제점이 있다. 이러한 데이터 간 분포의 차이를 domain shift라고 하며, domain adaptation은 이를 줄이기 위해 제시된 방법이다. Domain Adaptation에는 여러 가지 방법이 있는데, 전에 다루었던 Unsupervised DA by backpropagation (2021.03.29 - [DeepLearning] - [paper review] Unsupervised Domain Adaptation by Backpropagation) 은 Source domain(라벨링 된) 과 Target domain(해당 task에서 사용하는 데이터. 라벨 없음) 간 domain shift를 줄이기 위해, source representation과 target representation을 비슷한 곳으로 매핑되도록 하는 Encoder를 학습하였다. Gradient Reversal Layer를 사용하여 image classification은 잘하도록, domain 구별은 못하도록 학습시켰다. 
DSN ( 2021.04.03 - [DeepLearning] - [paper review] Domain Separation Networks )에서는 Source와 Target이 공통적으로 가지는 특징을 학습하는 Shared Encoder, domain-specific feature를 학습하는 Private Encoder 구조로 이루어진다. 이는 각 도메인의 고유한 특징을 덜어내서 domain shift를 줄일 수 있었다.
ADDA(2021.04.12 - [DeepLearning] - [paper review] Adversarial Discriminative Domain Adaptation)는 이전 방법론들을 일반화하는 framework를 제시했고, modified GAN loss function을 도입했다. 이 또한 image classifier와 domain classifier가 적대적으로 학습하는데, GAN loss는 gradient vanishing 문제가 생기기 쉽기 때문에 이를 수정한 형태의 손실 함수를 사용한다. 

이번에 다룰 논문(줄여서 PixelDA)의 가정은 다음과 같다. 
(1) large-scale, well-annotated data를 얻기 힘들기 때문에 대신 synthetic data를 사용한다. 하지만 synthetic data 와 real world data 간의 domain shift가 발생하여 모델의 성능이 떨어진다.
그러므로 synthetic data를 Source domain, real world data를 Target domain으로 하여 Domain Adaptation을 진행한다. 
(2) 목적은 기존 DA 와 동일하다. Source encoder의 knowldege를 trasfer 하여 Target domain에서 사용하는 것. 
여기서 Source domain이 synthetic data이기 때문에 이전 페이퍼들과는 달리, source domain을 최대한 target domain과 유사해지도록 adapt 한다. 

Architecture

Model Architecture (출처 : hyunmo-Ahn)

(1) G : Generator
synthetic data(Source)와 노이즈 벡터로 fake image(x_f)를 생성한다. 
(2) D : Discriminator (이전 페이퍼에서 domain classifier와 동일한 역할) 
fake image와 real image(Target)을 구별한다. 
(3) T : Task-specific classifier 
synthetic data(Source)와 fake image를 입력하면 predicted label를 출력한다. 

여기서 (3)을 보면, Discriminator, Target과 분리되어있음을 알 수 있다. 이 점이 굉장히 특이하다고 생각했다. 원래 Domain Adaptation 은, transductive transfer learning으로 분류된다. 이는 pre-train model과 동일한 task를 수행할 때만 knowledge transfer가 가능하단 의미인데, 그래서 기존 페이퍼를 살펴보면 모두 Target task에 맞춰서 Target encoder를 학습시킨다. 하지만 여기서는 Target을 분리하고, synthetic data와 fake image의 pixel 간 분포의 차이를 줄이도록 학습하기 때문에 task의 영향을 덜 받을 수 있다. 아예 다른 task에 쓰인다는 것은 아니고, label space 다르더라도(1,2,3 class에서 1,2,3,4 class 분류) knowledge transfer가 가능하다는 뜻이다. 예시는 추후에 추가하도록 하겠다..(><) 

Learning

여기서 제시하는 loss function 이다.

Objective

 

(1) Domain loss

(1) Domain loss : GAN loss function을 생각하면 이해하기 쉽다. Generator는 D(x_t)를 0으로, D(G(x_s, z))를 1로 만들어 loss를 최소화하려고 하고, Discriminator는 D(x_t)를 1, D(G(x_s,z))를 0으로 만들어 loss를 최대화하려고 한다.

(2) Task-specific loss

(2) Source(synthetic data)든, fake image든 들어왔을 때 label을 잘 분류하도록 학습한다. 기존 페이퍼에서 label predictor(classifier)와 동일한 역할. 

(3) content-similarity loss

(3) Content-similarity loss
Source data는 위 그림처럼 배경이 없는 이미지이고, Generated(fake) image는 그림처럼 Target image(real)와 유사한 모습이다. (그림은 훈련된 모델의 결과)
Content-similarity loss의 역할은 무엇일까. 우선 mask를 통해 물체의 foreground만 남긴다. 그리고 pair-wise mean squared error를 통해 Source와 Generated image의 foreground 사이의 에러를 줄여나간다.

PMSE 설명 (출처. zooyeonii)

pair-wise mean squared error의 효과는 무엇일까. 기존 MSE는 정답 distribution(검정)과 최대한 가까워지도록(노랑) error를 줄여나간다면, pair-wise MSE는 정답과 비슷한 분포, shift가 발생한 분포(파랑)를 만드는 것을 목표로 한다. 이때 각 x값은 pixel값을 의미한다. 
이 논문에서 Source는 synthetic data이고, 모델의 목적은 Target domain으로 adapt 하는 것이다. generated image는 target과 유사해야 하므로, MSE를 사용하게 되면 Source와 동일하게 임베딩 되는 문제점이 생길 것이다.