ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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을 생성하여 이를 이용해 모델의 성능을 평가한다. 과정을 정리하면 아래와 같다.

     

    1. Base Class(Source Domain)에서 N-way에 해당하는 클래스를 랜덤으로 뽑는다.
    2. 해당하는 클래스당 K-shot개의 이미지, 레이블 쌍을 가져와 Support Set을 지정하고, 다시 해당하는 클래스로 이루어진 Query Set을 정한다.
    3. 주어진 Support Set을 이용하여 Query Set을 평가한 후, 계산된 Loss를 이용해 모델을 업데이트한다.
    4. 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

    1. Support의 Feature map의 마스크 부분을 잘라서 마스크에 해당하는 부분을 average pooling 한다. 이를 prototype 벡터라 한다.
    2. Query의 Feature map 각 spatial element들과 prototype 벡터의 거리(cosine similarity)를 측정해 배경인지 물체인지 구분한다. (이렇게 배경 부분의 마스크만 생성이 가능하다.)
    3. 위에서 생성한 마스크로 GT랑 비교하여 loss를 계산한다.

    (b) Query -> Support 

    1.  위에서 생성한 마스크를 Query에 적용한다. 이렇게 prototype 벡터를 다시 생성한다.
    2. prototype 벡터와 Support Feature map과 거리를 측정해 Support로 부터 마스크를 생성한다.
    3. 위에서 생성한 마스크로 GT랑 비교하여 PAR (Prototype alignment regularization) loss를 계산한다.
    반응형

    댓글

Designed by black7375.