일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 정리용 #하나씩읽고있음 #많기도많네 #내가찾는바로그논문은어디에
- DeepDoubleDescent #OpenAI #어려워
- np-hard
- XiaomingLiu #PersonIdentification
- Transformer #classification #SOTA #Google
- vit
- Realtime
- cornernet #simple #다음은centernet #hourglass생명력이란
- centernet
- coco
- IvanLaptev
- objectdetector
- ICCV19 #Real-World #FaceRecognition
- POSE ESTIMATION
- hourglass
- CVPR
- Manmohan #UnconstrainedComputerVision
- Today
- Total
HyperML
[ICCV17]Unified Deep Supervised Domain Adaptation and Generalization 본문
[ICCV17]Unified Deep Supervised Domain Adaptation and Generalization
곰돌이만세 2019. 12. 23. 22:44Domain adaptation이란
일반적으로 사람들은 imagenet이나 coco dataset으로 학습한 모델을 사용하여, 내가 하고자 하는 task에 적용을 해본다음 성능을 높이기 위해, transfer learning등의 단계로 넘어간다.
imagenet과 같은 학습용 open dataset은 구하기 쉬우나, 세상 모든 task에 대응할 수는 없다. 이를테면 공사현장 cctv등을 감시하는 시스템을 개발한다고 하면, imagenet이나 coco person에서 학습한 object detector 모델을 그대로 사용하여 detection등을 수행할 경우, 처참한 결과를 보게 된다.
여기서 domain adaptation의 필요가 생겨났다.
이미 유사하게 학습한 모델을 적은 노력을 들여서 catastrophic forgetting없이 내가 수행하고자 하는 domain에서 잘 동작하도록 재학습하는 것이다.
학습은 source dataset에서 하고, test는 target dataset에서 하되 기존의 학습된 네트워크가 이 둘을 구분하지 못하게 하는 방식이 많이 쓰인다.
DA는 supervised, unsupervised, semi-supervised 등 다양하게 시도되었으나 supervised (SDA)방식이 unsupervised (UDA) 방식보다는 더 우수한 성능을 보이는 것으로 알려져 있다.
Related Works
(1) source와 target간의 distribution을 mapping (UDA)
(2) source와 target간의 distribution의 shared latent space를 찾기 (UDA, SDA)
(3) source distribution에서 학습된 classifier를 regularize 하여 target distribution에서 잘 동작하게 함 (SDA)
본 논문의 핵심은
- Weight를 공유하는 Siamese network를 활용하여 feature extractor를 학습한다
- 전체 네트워크를 g(feature extractor), h(classifier)로 나누어서 classifier는 source dataset으로만 학습한다
- domain은 서로 다르나 class가 같은 sample간의 차이를 contrastive하게 minimize하는 loss를 도입하여 성능을 높였다.
반면 domain과 상관없이 class가 다른 sample들 간의 차이는 margin을 두어 maximize하여 penalty를 부과하였다. - 빈약한 target dataset에 대응하여 optimize하기위해 기존 training dataset의 샘플을 n(from source dataset) x m(from target dataset) pair를 random sampling하여 loss 계산을 하였다
Losses
Total
network를 extract embedding 하는 부분(g)과 classify 하는 부분(h)으로 나누어 표현하였다.
Classification loss
classification은 source dataset의 ground truth로만 계산한다.
Semantic Alignment loss
g는 feature extractor, DA의 목적중 하나는 source dataset과 target dataset을 구분하지 못하게 하는 것이므로, 클래스를 고려하여 그 둘의 분포의 거리를 loss로 계산하였다.
Separation loss
클래스가 서로 다른 경우 페널티를 부과하였다. k는 source dataset과 target dataset 분포의 거리를 측정하는 metric이다.
(좌) 두 dataset에서 온 같은 class sample들이 모여있지 않고 여기저기 따로 존재한다(USPS의 0과 MNIST의 0은 서로 멀리 떨어져 있음)
(중) 여전히 서로 다른 domain에서 온 같은 class의 샘플들이 따로 떨어져 있다(MNIST로만 학습하고 DA는 하지 않음)
(우) 서로 다른 domain에서 온 같은 class의 샘플들이 모여있다.
적은 수(scarce)의 데이터로 어떻게 학습시키는가
DA문제가 보통 supervised의 경우, 데이터의 수가 제한되는 경우가 많다.
k: Xsa와 Xtb 사이의 유사도를 측정하는 대중적인 metric (s: source, t: target, a: class a, b: class b)
X source와 X target의 분포를 바로 loss로 결정하기엔 sample이 부족하므로 source와 target의 sample을 pair로 만들면 보다 많은 경우의 수가 발생한다는 점을 이용해서 분포를 근사한다.
m: margin
샘플들의 차를 바로 loss에 반영하지 않고 margin에서 얼마나 차이가 나는지를 측정해서 차이가 0이더라도 클래스간의 거리는 margin 만큼 유지할 수 있도록 한다.
Experiment
First experiment
- Office dataset
- 3개의 domain(Amazon, Webcam, DSLR)
- 각각 31개의 공통된 class를 가짐, 75MB
- A: amazon, W: Webcam, D:DSLR domain
- lower bound : base model without DA
- splits: 5 (train-test)
- g: VGG16, 2 fc 1024, 128 sized, imagenet pretrained
Second experiment
-
15개의 클래스 중에 10개의 labeled 샘플만 학습시 반영하고 test는 15개 전체에 대해서 수행
-
나머지 10개의 클래스에 대해서도 동일하게 test
-
'[60]에 소개된 실험기법
Third experiment
-
31개 클래스중 10개만 사용해서 SURF, DeCaF-fc6 feature를 입력으로 한 DA를 test, 왜 10개만 선택했는지는 안나옴
MNIST-USPS dataset test
- 두 dataset은 공히 0-9 손글씨 image
- CCSA-n에서 n은 클래스당 sample수
- MNIST에서 2000images, USPS에서 1800 images를 random sample
- 학습샘플은 1개만 넣어도 78%를 넘는 acc.를 보여준다. 8개면 90%를 초과한다. mnist같은 간단한 dataset이 아니라 실제 영상에서도 잘 될까?
Ablation Study
- CS: loss를 classification loss와 separation loss만으로 구성
- CSA: loss를 classification loss와 semantic alignment loss만으로 구성
- CCSA: 모든 loss를 다 적용
- fine-tune: classifier만 fine-tune
- separation loss와 semantic alignment loss가 둘 다 contrastive한 성격을 가져서인지 하나씩만 적용했을 때 유사한 성능을 보인다
- SA는 클래스가 같으면 모아주고, S는 클래스가 다르면 사이를 벌려주는 역할
Domain Generalization
- source domain을 특정한 target domain에 adapt 시키는 것이 아니라 embedding feature자체가 invariant space에 mapping되게 하는 것이 목적이다.
- 그렇게 하기위해 순서가 없는 source domain의 샘플 u, v에 sa loss랑 s loss로 optimize한다.
- 이렇게 하면 extractor g와 classifier h는 mapping된 어떤 샘플에도 invariant한 특성을 나타낸다.
- 샘플들은 모든 pair를 계산하지는 않고 random selection한다.
Links
'Domain Adaptation' 카테고리의 다른 글
Domain Adaptation (0) | 2019.12.22 |
---|