본문 바로가기

Review

Tutorial on Few-Shot Object Detection #1

1. Introduction

일반적으로 가장 널리 사용되고 있는 딥 러닝 모델들은 방대한 양의 데이터를 필요로 하는 지도 기반 학습(Supervised Learning)을 따릅니다. 하지만 지도 기반으로 학습한 딥 러닝 모델에 새로운 종류의 대상을 추가하기 위해서는 그에 따른 대규모 데이터를 추가로 필요로 합니다. 

이를 위해 매번 수천, 수만 장의 데이터를 수집하고 레이블링해야 한다면 수많은 비용과 시간이 소모됩니다.

또한 비용 부담이 가능하더라도, 궤도 상에서 회전하며 촬영하는 위성영상이나, 혹은 드물게 발생하는 재난 상황과 같은 충분한 양의 데이터를 확보하기 어려운 경우에는 충분한 성능의 딥 러닝 모델을 학습시키기 어렵습니다.

마지막으로 인지적 관점에서 볼 때, 사람은 한두 장의 이미지를 보고도 이를 일반화하여 새로운 대상을 식별할 수 있습니다. 딥 러닝 모델이 인간과 같은 의미에서의 학습을 할 수 있다고 말하기 위해선 이와 같은 강력한 일반화 능력을 지녀야 할 것입니다.

이러한 이유들로 인해 적은 양의 데이터로 모델을 학습하는 방법에 대한 연구인 Few-Shot Learning에 대한 관심이 점점 더 많아지고 있습니다.

  • 데이터 수집 및 레이블링 비용: 수천, 수만 장의 데이터를 수집하고 레이블링하는데 수많은 비용과 시간이 소모됨.
  • 데이터 확보 어려움: 위성영상이나, 드물게 일어나는 재난 환경과 같이 수집할 수 있는 데이터의 양 자체가 한정적일 경우에는 딥 러닝 모델을 학습시킬 충분한 데이터 확보가 어려움.
  • 사람의 일반화 능력: 사람은 한두 장의 이미지를 보고도 물체를 구분할 수 있는데 이러한 일반화 능력이 딥 러닝 모델에도 필요함.

SIA에서도 Object Detection과 같은 서비스를 하면서 위와 같은 문제를 해결하기 위해 Few-Shot Learning을 연구하고 있습니다. 이번 글에서는 많은 연구가 이루어진 Classification을 기반으로 Few Shot Learning에 대해 알아보고, 다음 글에서 SIA가 주로 관심을 갖고 있는 Object Detection 에서 Few-Shot Learning을 적용한 Few-Shot Object Detection을 살펴보도록 하겠습니다.

 

2. Few-Shot Classification

Few-Shot Learning의 학습 데이터(Support Set)와 테스트 데이터(Query Set)

 

Few-Shot Learning은 적은 양의 데이터로 모델을 학습하여 테스트 데이터에서 유의미한 성능을 얻고자 하는 작업입니다. 이때 이미지와 레이블로 구성된 적은 양의 학습 데이터셋을 Support Set이라고 부릅니다. 그리고 이 Support Set으로만 모델을 학습한 후, 모델의 성능을 평가할 데이터셋을 Query Set이라고 부릅니다.

Support Set이 어떻게 구성되었는지에 따라 문제의 난이도가 달라집니다. 일반적으로 예측해야 할 클래스가 많아질수록 문제가 어려워지고, 각 클래스마다 할당되어 있는 학습 데이터의 양이 많아질수록 문제가 쉬워집니다.

Support Set에서 예측해야 하는 클래스가 N개 있고, 각 클래스마다 K개의 이미지와 레이블 쌍이 있을 때 해당 문제를 N-Way K-Shot Problem이라고 부릅니다. 경우에 따라 다르지만 Few-Shot Classification에서는 5-Way 1-Shot 또는 5-Way 5-Shot 문제를 일반적으로 다룹니다.

 

Few-Shot Learning의 대표적인 두 접근 방법은 다음과 같습니다.

  • Data-Driven Approach: Support Set으로 주어진 데이터에 Transformation을 적용하거나 Generative Adversarial Network (GAN)을 이용해 모델을 학습시킬 충분한 양의 데이터를 생성하는 방법입니다.
  • Model-based Approach: 모델이 같은 클래스의 이미지와 서로 다른 클래스의 이미지를 구분할 수 있게 하도록 Feature vector간의 Similarity를 학습하게 하거나, 적은 양의 데이터에 모델이 Overfitting되지 않도록 Regularization 등을 도입하는 방법입니다.

 

Data-Driven Approach는 그 방법이 간단하고 직관적이지만, Support Set의 데이터가 데이터의 모집단을 보장할 수 없다는 점에서 명확한 한계를 갖고 있습니다. 그렇기 때문에 본 글에서는 Model-based Approach를 중점적으로 살펴보도록 하겠습니다. 

 

다른 접근 방법들은 다음 논문을 참고하시면 됩니다.
Generalizing from a Few Examples: A Survey on Few-Shot Learning 

 

3. Model-based Approach on Few-Shot Learning

Model-based Approach의 예:  Matching Network

 

Model-based Approach에는 Distance나 Similarity와 같은 Metric을 이용하는 Metric-based Approach와, 최근에 많은 관심을 받고 있는 Graph Neural Network를 활용하는 방법 등이 있습니다. 본 글에서는 State-of-the-art Model에 가장 널리 쓰이는 Metric-based Approach에 대해서 다루도록 하겠습니다.

Metric-based Approach는 이미지 간의 Similarity나 Distance를 학습해, Query Data가 주어졌을 때 가장 Similarity가 높은 Support Set의 클래스로 예측하는 방법입니다.

예를 들어 샴 고양이와 러시안 블루 고양이 이미지가 있다면 두 이미지는 같은 클래스에 속하기 때문에 두 이미지 간의 Similarity는 1에 가까워야 하고, 샴 고양이와 코끼리 이미지가 있다면 Similarity는 0에 가까워야 합니다. 

 

Metric-based Approach with Metric Learning 

 

모델에 이러한 Similarity를 학습시키기 위해서 이미 레이블링이 되어 있는 방대한 양의 데이터를 활용할 수 있습니다. 

예를 들어 고양이, 호랑이, 사자 이미지 간의 유사도를 학습하기 위해, 기존에 공개되어 있는 방대한 양의 ImageNet 데이터를 활용해 미리 유사도를 학습시킬 수 있습니다. 

이러한 경우에 우리가 실제로 풀어야 할 문제에서 예측할 클래스들을 Novel Class라고 부르고, 실제 예측을 하기 전에 방대한 양으로 활용할 데이터의 클래스들을 Base Class라고 부릅니다. 물론, 모델이 적은 양의 Novel Class 데이터를 잘 활용했는지 정당하게 평가하기 위해 Novel Class와 Base Class는 겹치지 않아야 합니다. 이때 Base Class의 데이터를 Source Domain, Novel Class의 데이터를 Target Domain이라고 부르기도 합니다.

 

이제 문제는 방대한 양의 Base Class 데이터를 이용해 모델을 미리 학습해놨다가, Novel Class로 주어진 Support Set을 적절하게 활용해 Query Set에서 Novel Class를 예측하는 문제로 바뀌었습니다.

방대한 양의 Base Class 데이터를 활용해 Novel Class에 적용하는 방법은 크게 두 가지가 있을 수 있습니다.

  • Transfer Learning: 먼저 Base Class 데이터셋을 이용해 학습한 후, Novel Class의 Support Set에 재학습하는 방법입니다. 일반적으로 사용되는 Fine-Tuning도 여기에 속합니다.
  • Meta-Learning: Meta-Learning 방식은 최근에 각광 받고 있는 접근법입니다. Novel Class에서 Support Set을 이용하여 Query Set 예측하는 것과 같이, Base Class에서도 특정 클래스 샘플들을 뽑아 임의로 Support Set과 Query Set으로 구성해 가상의 Episode를 설정하여 학습을 진행합니다. 이렇게 함으로써 실제 모델을 평가할 Few-Shot 세팅을 데이터가 충분히 많은 Base Class 데이터셋에서 실험해볼 수 있습니다. 이러한 방법을 Episodic Training으로 부르며 자세한 내용은 아래와 같습니다.

 

Episodic Training의 도식도

 

Episodic Training에서는 실제 풀어야 할 문제를 Support Set과 Query Set으로 나누듯이, Base Class을 이용해 학습할 때도 특정 Class를 선별하여 Support Set과 Query Set을 뽑습니다. 이렇게 묶인 하나의 작업을 하나의 Episode 또는 Task라고 부릅니다. 

구체적인 절차는 다음과 같습니다.

  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에 테스트합니다.

이러한 Meta-Learning 방식은 Learning-to-Learn이라 하여, 학습 자체를 학습하는 방법을 제안했기 때문에 Few-Shot Learning 뿐만 아니라 다양한 문제들에 적용되고 있습니다.

하지만, 최근 여러 논문에서 복잡한 방식의 Meta-Learning보다 간단한 Fine-tuning 기반 방법을 이용해 더 나은 성능을 얻을 수 있다고 얘기합니다.

이는 Fine-tuning 방식이 Few-Shot Learning에 적합하기 보다는 여태까지 발표되었던 Few-Shot Learning 논문들이 제대로 된 검증과 정당하고 철저한 비교 실험이 부족했다는 걸 의미합니다. 그런 의미에서 본 글에서는 Similarity 기반 Meta-Learning 방법의 개념만 살펴본 뒤, Few-Shot Object Detection에서는 이러한 아이디어들이 실제로 어떻게 적용되는지 살펴보도록 하겠습니다.

 

기존 Meta-Learning 방식의 한계점을 지적하는 연구는 다음 두 논문을 참고하시면 됩니다.

A Closer Look at Few-shot Classification, ICLR 2019
A Baseline for Few-Shot Image Classification, ICLR 2020

 

4. Learning Similarity for Few-Shot Learning

Query Set이 주어질 때 해당 이미지가 Support Set의 어떤 클래스에 해당하는지 어떻게 예측할 수 있을까요? 대표적으로 딥 러닝 모델을 통해 각각의 이미지로부터 Feature Vector를 추출하여, 가장 차이가 작은 Feature Vector의 클래스로 할당하는 방법이 있습니다.

Similarity 기반 Few-Shot Learning 방법은 이런 아이디어에 착안해 동일한 클래스의 Feature Vector 간에 Similarity가 1이 되도록 모델을 학습시킵니다. 즉, 같은 클래스의 Feature Vector간의 Similarity는 1이 되도록, 서로 다른 클래스라면 Similarity가 0이 되도록 Loss Function을 설정하여 모델을 학습시킬 수 있습니다.

 

그렇다면 Feature Vector간의 Similarity는 어떻게 계산할 수 있을까요?

Vector 간의 Similarity를 비교할 때는 Euclidean Distance와 Cosine Similarity를 주로 사용합니다. 각각의 정의는 아래와 같습니다.

 

Euclidean Distance. 출처: Wikipedia
Cosine Similarity. 출처: Wikipedia

 

딥 러닝 모델을 이용해 추출한 Feature Vector는 1 x n 형태의 차원을 가집니다. 서로 다른 Feature Vector u 와 v 가 있을 때 Euclidean Distance와 Cosine Similarity는 각각 sum(u-v)^2 , dot_product(normalized_u, normalized_v) 와 같은 꼴로 계산할 수 있습니다. 이때 일반적으로 딥 러닝 모델의 Feature Value들은 0~1 값으로 Scale되는 경우가 많으므로 일종의 Approximation으로 dot_product(u, v) 로 계산하기도 합니다.

 

두 Metric의 차이는 아래 그림과 같이 표현될 수 있습니다.

 

Euclidean Distance와 Cosine Similarity 비교. 출처: stackoverflow

 

Cosine Similarity는 Vector의 Magnitude와 무관하게 Direction의 차이만을 비교하지만, Euclidean Distance는 Magnitude도 같이 고려하여 Feature Vector에 담겨 있는 값들의 Scale에 민감하다는 걸 알 수 있습니다. Normalization을 적용하더라도 Euclidean Distance는 0~1 사이에서 작은 값보다 큰 값에 더 민감하게 반응합니다.

이와 같은 Similarity-Metric을 이용하여 다음과 같이 모델을 구성할 수 있습니다.

Similarity 기반 모델의 예측 함수

 

위 수식에서 $\hat{x}$ 는 Query Set의 이미지이며, x_i 와 y_i는 각각 Support set에 속하는 이미지와 레이블을 의미합니다. 함수 f와 g는 각각의 이미지에서 Feature Vector를 추출하는 Feature Extractor 또는 Embedding 모듈이며, a는 Similarity 함수입니다. 

즉, 위의 수식은 각각의 이미지로부터 Feature Vector를 추출하고, 이에 대한 Similarity를 전부 계산한 뒤 해당 Support Set의 레이블에 해당하는 점수만 남겨두었다고 이해할 수 있습니다.

위와 같이 Similarity 기반으로 모델을 구성하여, Meta-learning 방식을 적용하면 아래와 같은 절차를 따릅니다.

  1. Base Class(Source Domain)에서 Support Set, Query Set을 포함한 하나의 Episode를 선정합니다.
  2. 각각의 이미지로부터 Feature Vector를 추출한 후, Support Set과 Query Set를 쌍으로 묶어 모든 경우의 수에 따라 Similarity를 계산합니다.
  3. 이렇게 계산한 Matrix를 Support Set의 one_hot encoding Ground-Truth (GT)와 매칭시켜 각 레이블에 따른 점수를 계산합니다.
  4. 최종적으로 계산한 점수와 Query Set의 GT를 비교하여 Loss를 계산합니다.
  5. 1~4의 방식을 반복하여 모델을 학습한 후, Novel Class(Target Domain)에서 Support Set에 대한 Query Set의 Similarity를 계산해 클래스를 예측합니다.

 

Similarity 기반 Few-Shot Learning 모델은 위와 같은 구조에서 Support Set과 Query Set의 이미지를 Embedding하기 위해 어떤 모델을 사용할 지, Similarity Function은 어떤 걸 이용할 지, 어떤 Loss를 이용해 어떻게 모델을 학습시킬 지에 따라 다양한 논문들이 발표되어 왔습니다.

 

이번 글은 Few-Shot Object Detection을 다루는 게 목적이기 때문에 각각의 Classification 모델들은 자세히 설명하지 않도록 하겠습니다. 

어떤 모델들이 제안되어 왔고 어떤 차이가 있는지 알고 싶다면 아래의 논문을 참고하시면 좋을 것 같습니다.

A Closer Look at Few-shot Classification, ICLR 2019

 


5. Model-Agnostic Meta-Learning

추가적으로 Meta-Learning에 큰 영향을 미친 Model-Agnostic Meta-Learning (MAML)도 간략하게 다루어보도록 하겠습니다.

이 방법은 다양한 종류의 Meta-Learning 문제에 적용하기 위해 제안되었으며, Few-Shot Learning에서도 자주 사용하는 방법 중 하나입니다.

MAML의 도식도

 

MAML은 약간의 업데이트로 서로 다른 Task로 각각 최적화한 뒤(Adaptation), 이렇게 최적화된 각각의 모델로부터 Gradient를 구해 서로 다른 Task에 빠르게 최적화할 수 있는 공통의 초기 Weight를 찾는 방식(Meta-Learning)으로 학습을 진행합니다.

위 그림에서 Adaptation을 의미하는 회색 실선은 각 Task의 Loss(1, 2, 3)를 계산해 모델을 업데이트하는 것을 나타냅니다. 이렇게 서로 다른 Task로부터 업데이트함으로써 특정 Task에 Overfitting되는 것을 방지할 수 있습니다.

 

Meta-Learning을 의미하는 검은 선은 위에서 각각 Task에서 계산했던 Gradient를 모아 Gradient의 Gradient를 계산해 모델을 업데이트하는 것을 의미합니다. 이 과정에서 여러 Task에 빠르게 최적화할 수 있는 공통의 Weight로 점점 업데이트되고(검은 실선), 이렇게 찾은 Weight로부터 다시 특정 Task에 모델을 Adaptation함(회색 점선)으로써 우리가 원하는 Target Task에 빠르게 최적화할 수 있습니다. 이러한 Adaptation/Meta-Learning 과정을 최적의 Weight를 찾을 때까지  반복함으로써, 우리가 원하는 Target Task에 빠르게 수렴하는 모델을 얻을 수 있습니다.

 

Few-Shot Supervised Learning에서의 MAML 알고리즘

 

Few-Shot Classification의 관점에서 알고리즘 테이블을 이용해 다시 자세히 살펴보도록 하겠습니다. 

 

Source Domain(Base Class) Training
3번에서 Base Class 집합 중 N-way, K-Shot 문제로 사용할 N개의 클래스를 지정합니다.
4~9번은 N개의 클래스에 대해서 각각 K개씩 Sample을 뽑아 만든 Support Set에 대해 학습하는 과정입니다.
5번에서 클래스 i에 대해서 K개의 Sample을 뽑습니다.6~7번에서 이렇게 뽑은 K개의 Sample을 이용해 모델의 Parameter를 업데이트합니다(Adaptation).
이후 8번에서 클래스 i에 대해 Query Set으로 이용할 Sample을 뽑습니다. 이때 뽑은 Sample은 5번에서 뽑은 Sample과 겹치지 않아야 합니다.
위와 같은 과정(4~9번)을 N개의 클래스에 대해서 반복한 후, 이 과정에서 뽑은 Query Set을 이용해 모델을 평가하고, 이를 통해 얻은 Loss를 이용해 다시 모델의 Parameter를 업데이트합니다(Meta-Learning).

Target Domain(Novel Class) Training
이제 Source Domain Training을 통해 얻은 Generalization 기능을 실제 문제인 Novel Class 데이터에 평가해야 하는 단계입니다.
Source Domain Training과 비슷한 과정으로 Novel Class 집합에서 실제로 평가할 N개의 클래스를 뽑고, 4~9번의 과정을 통해 N*K개의 Sample로 구성된 Support Set에 모델을 학습합니다(Adaptation).


이렇게 학습된 모델을 8번에서 뽑은 Query Set에 예측하여, 모델이 N*K개의 학습 데이터만으로도 충분한 성능을 얻을 수 있는지 평가할 수 있습니다.


 

이번 글에서는 Few-Shot Learning의 배경과 문제 해결 접근법, 그 중에서 Similarity 기반 Meta-Learning 방식과 MAML을 다루어보았습니다.

다음 글에서는 본격적으로 이러한 기술들이 Few-Shot Object Detection에 어떻게 적용될 수 있으며, Classification과 대비되는 Few-Shot Object Detection만의 문제점과 그 해결 방안도 같이 다루어보도록 하겠습니다.

 

Reference

[1] Wang, Y. and Yao, Q., 2019. Few-shot learning: A survey. arXiv preprint arXiv:1904.05046.
[2] Chen, W.Y., Liu, Y.C., Kira, Z., Wang, Y.C.F. and Huang, J.B., 2019. A closer look at few-shot classification. International Conference on Learning Representations.
[3] Dhillon, G.S., Chaudhari, P., Ravichandran, A. and Soatto, S., 2019. A baseline for few-shot image classification. International Conference on Learning Representations.
[4] Finn, C., Abbeel, P. and Levine, S., 2017, August. Model-agnostic meta-learning for fast adaptation of deep networks. In Proceedings of the 34th International Conference on Machine Learning-Volume 70 (pp. 1126–1135). JMLR. org.

[##이학진##]