1. Abstract
이 논문은 single domain generalization에 관한 논문입니다. 새로운 도메인의 데이터를 만드는 모델과 domain invariant한 부분을 학습하는 task model 두 가지로 이루어져 있습니다.
unseen domain의 다양한 데이터를 progressive하게 만들어냅니다. domain invariant representation을 학습하기 위해서 contrastive learning을 이용합니다.
2. Method
2.1 The Unseen Domain Generator G
G는 원래 이미지를 새로운 도메인의 데이터로 바꾸는 네트워크입니다. 이 논문에서 G는 Autoencoder와 spatial transform network(STN)에 관해서 설명합니다.
autoencoder는 AdaIN을 이용합니다. n ~ N(0,1)이고, G_E는 encoder D는 decoder입니다. L_fc1은 과 2는 fully connected layer를 뜻합니다. AdaIN은 normal Instance를 이용하고, style transfer에 관한 논문입니다.
autoencoder대신에 STN을 이용할 수도 있다고 이야기합니다.
2.2 Progressive Domain Expansion
여기서 M은 task model, G는 generator, S^은 만들어진 데이터 입니다. Sall은 만들어진 데이터와 현재 데이터 모드 저장합니다.
2.3 Domain Alignment and Classification
우선 L_ce는 cross entropy 입니다. F,C는 feature extractor, classifier head를 의미합니다. 즉, task model을 학습하는 loss입니다. z는 P(F(x))입니다. F는 feature extractor이고 P는 projection head입니다. L_NCE는 InfoNCE loss라고 해서 intra class끼리의 거리는 좁혀주고, 다른 class와의 거리는 늘려주는 역할을 합니다.
2.4 Unseen Domain Generation
Unseen domain을 만들 때, domain invariant 한 정보가 있어야 하고(Safety), 다양한 domin-specific 정보(Effectiveness)가 있어야 된다고 합니다.
Safety
task model이 모든 unseen domain 데이터에 대해서 잘 예측을 한다면, safe하다고 이야기 합니다.
이는 cycle consistency loss라고합니다. 바뀐 이미지를 다시 원래대로 되돌리도록 합니다. cycleGAN이랑 유사한 것 같습니다.
Effectiveness
task model은 domain share representation을 학습해야하기 때문에, L_nce를 최소화합니다. generator는 반대로 최대화해야지 효과적은 domain을 만들 수 있습니다.
이 식은 converge가 어렵다고 합니다. loss 값이 작아지면, gradient가 커진다고 합니다.
그렇기 때문에,
이 식을 이용합니다.
Generator가 다양한 샘플들을 만들기 위해서 이 식을 이용합니다. 앞에 -가 붙었기 때문에, noise에 따라 다른 domain이 생성될 것입니다.