-
Few-Shot Image Semantic Segmentation머신러닝, 딥러닝 공부 2021. 10. 4. 23:04반응형
1. Few-Shot Learning
인간과 같이 소량의 데이터(few-shot)만으로도 학습하는 것. 대부분 train set은 아래 그림과 같이 support set (training 중 학습에 사용되는 데이터셋), Query set (training 중 평가에 사용되는 데이터셋)으로 나뉜다. Support set의 클래스가 N개 각 클래스별 개수가 K개 이면 이를 흔히 N-way K-shot task라 불린다. 당연한 말이지만 N이 클수록, K가 작을수록 어렵다.
Few-show learning을 평가하는 방식은 주로 Meta-Learning을 사용한다. 아래 그림과 같다.
특징은 모델은 수많은 support set, query set으로 학습이 되는데 이때 사용되는 클래스를 base class라고 한다. 이렇게 모델을 학습한 다음 base class에서 한 번도 보지 못한 클래스로 구성된 novel class로 support set, query set을 생성하여 이를 이용해 모델의 성능을 평가한다. 과정을 정리하면 아래와 같다.
- Base Class(Source Domain)에서 N-way에 해당하는 클래스를 랜덤으로 뽑는다.
- 해당하는 클래스당 K-shot개의 이미지, 레이블 쌍을 가져와 Support Set을 지정하고, 다시 해당하는 클래스로 이루어진 Query Set을 정한다.
- 주어진 Support Set을 이용하여 Query Set을 평가한 후, 계산된 Loss를 이용해 모델을 업데이트한다.
- 1~3의 과정을 충분히 반복해 모델이 학습된 뒤, Novel Class(Target Domain)의 Support Set을 활용해 Query Set에 테스트한다.
2. Few-Shot Image Semantic Segmentation
Few-Shot으로 세그멘테이션을 수행한다. 대표적은 논문은 아래와 같다.
- PANet: Few-Shot Image Semantic Segmentation with Prototype Alignment [ICCV 2019]
과정은 다음과 같다.
(a) Support -> Query
- Support의 Feature map의 마스크 부분을 잘라서 마스크에 해당하는 부분을 average pooling 한다. 이를 prototype 벡터라 한다.
- Query의 Feature map 각 spatial element들과 prototype 벡터의 거리(cosine similarity)를 측정해 배경인지 물체인지 구분한다. (이렇게 배경 부분의 마스크만 생성이 가능하다.)
- 위에서 생성한 마스크로 GT랑 비교하여 loss를 계산한다.
(b) Query -> Support
- 위에서 생성한 마스크를 Query에 적용한다. 이렇게 prototype 벡터를 다시 생성한다.
- prototype 벡터와 Support Feature map과 거리를 측정해 Support로 부터 마스크를 생성한다.
- 위에서 생성한 마스크로 GT랑 비교하여 PAR (Prototype alignment regularization) loss를 계산한다.
반응형'머신러닝, 딥러닝 공부' 카테고리의 다른 글
Neural Ordinary Differential Equations (Neural ODE) [작성 중] (0) 2022.03.09 Salient Object Detection 내용 정리 (0) 2021.08.21 Visual Transformer 구조 (0) 2021.02.08 Knowledge Distillation (0) 2021.02.01 Feature Pyramid Networks (0) 2021.01.05