HANA : Have A Nice AI

모두를 위한, 하나를 위한 AI

실용적인 AI/Metric Learning

Metric Learning 이란 - Feature 추출

KM-Hana 2021. 2. 12. 23:27

*크롬으로 보시는 걸 추천드립니다*

 

본 "Metric Learning 이란 -  Feature 추출"을 보시기 전에

kmhana.tistory.com/14

 

Metric Learning(Image Retrieval) 이란? - 기본

*크롬으로 보시는 걸 추천드립니다* Active Learning(능동적 학습)에 이어서, 다룰 주제는 Metric Learning입니다! Active Learning(능동적 학습) 설명 : kmhana.tistory.com/2?category=838050 실용적인 Deep Lea..

kmhana.tistory.com

를 먼저 보시면서, Metric Learning의 기본을 잡고 가시는 걸 추천드립니다.

 

이번에는 

1.2) Feature를 어떻게 처리할 것인가?

        1. 어떻게 뽑을 것인가? (GeM, SPoc, MAC)

        2. 뽑은 Feature를 어떻게 후-처리할 것인가?(Whitening)

에 대해서 설명드리고자 합니다.

 


○ Classification VS Retrieval

MultiGrain: a unified image embedding for classes and instances [arxiv.org/pdf/1902.05509.pdf]

이란 논문에서 Image Classifcation Task와 Image Retrieval을 비교 설명해주고 있습니다.

Classification VS Retrieval

   - Loss : kmhana.tistory.com/17?category=842461에서 설명한 것처럼

          이미지 검색(Retrieval) Task는 유사도를 학습할 수 있는 Triplet Loss를 기초로 학습합니다.

 

   - Batch-Sampling: 이미지 검색(Retrieval) Task는, 유사도를 학습할 수 있도록

          Anchor, Positive, Negative가 하나의 쌍으로 구성해서, 학습합니다.

 

   - Resolution(해상도) : 이미지 검색(Retrieval) Task는, 더 높은 해상도의 이미지를 사용합니다.

          Image Retrieval은 더 어려운 Task이며, 더 고화질 데이터를 사용하므로, 이에 따른 추가 고려가 필요합니다. 

          * Multi-Grain 논문에서 이에 대한 내용을 다룰 예정입니다.

1. 어떻게 뽑을 것인가? (GeM, SPoc, MAC)

   - Spatial Pooling : 이미지 검색(Retrieval) Task는 Global Averaging Pooling이 아닌,

                           GeM(Generalized Mean Pooling)을 사용

 

   º GeM (Genalized-mean Pooling) 수식: 

$$ f^{(g)}_{k} = \left ( \frac{1}{\left | \chi_{k} \right |}\sum_{x\in \chi_{k} }x^{p_{k}} \right )^{\frac{1}{p_{k}}} $$

     - \( \chi_{k} \) : k-번째 Feature

     - \( p \) : Localization과 관련된 Hyper Parameter 

        : \( p = 1 \) 은 SPoC(Sum-Pooled Convolutional = Global average pooling)

        : \( p = \infty  \) 은 MAC(Maximum Activation of Conv = Global max pooling) [arxiv.org/pdf/1511.05879.pdf]

GeM 효과 및 특징

     º 효과 : Global Max pooling과 Averaging pooling 사이의 효과를 가짐 ( 주로, P=3을 사용)

               기존의 Feature Descriptor(SPoc, MAC, R-MAC)보다 더 좋은 성능을 보여줌

 

※ 번외 : R-MAC

더보기

※ 번외 : R-MAC

Particular Object Retrieval with Integral Max-Pooling of CNN Activations [https://arxiv.org/pdf/1511.05879.pdf]

  ○ R-MAC 목적 : Local 정보가 사라지는 Global Max pooling의 단점을 보완하기 위해서, R-MAC를 제안함

 

  ○ R-MAC hyper-paramter ( \( l  \) ) :  Region의 크기를 정함 - \( l = 1  \) 일 때 최대

 

  ○ R-MAC 적용 과정 

         1. Region 별로 Maxpooling을 진행 - Feature map 개수(K) x Region 수만큼 생성

         2. 합산 후, L2-Normalization 진행 

              github.com/filipradenovic/cnnimageretrieval-pytorch/blob/6d4ce7854198f132176965761a3dc26fffaf66c5/cirtorch/layers/functional.py#L26 참고

 

2. 뽑은 Feature를 어떻게 처리 할것인가?(Whitening)

   - Whitening : 이미지 검색(Retrieval) Task는, 추출된 Feature에 PCA Whitening를 진행 

       º 효과 : Whitening를 거진 Feature의 Euclidean Distance는 Mahalanobis distance와 같음

 

         * Whitening이란 : 입력 벡터를 각각 상관관계가 없고, 각각이 분산 1로 변환 → White Noise Vector로 변환함

                                 ( ∵ 이미지의 구조와 특징을 강조하기 위한 방법 = Reduce Redundancy)

Understanding Generalized Whitening and Coloring Transform for Universal Style Transfer

※ 번외 : PCA(Principal Component Analysis) vs ZCA(Zero-Phase Component Analysis) Whitening

더보기

※ 번외 : PCA vs ZCA Whitening

PCA vs ZCA

  ○ Whitening 목적 :

     1. 변수간 Correlation을 없애기

     2. 분산을 1로 동일하게 만들기

 

  ○ PCA Whitening(위 그림) :  데이터 압축이 목적인 경우 최적

     - 두 벡터의 Correlation은 없앴으며, 분산을 동일하게 변환, But 빨간 점은 변환된 축에 따라서, Rotation 됨

     - 새로 생긴축은 , 분산에 따른 주성분(Principal Component)으로 정렬되기 때문에 데이터 압축이 가능

 

  ○ ZCA Whitening(아래 그림) : 변환된 벡터를 입력 벡터와 가능한 유사하게 유지하는 경우

     - 두 벡터의 Correlation은 없앴으며, 방향성도 그래도 보존

     - 축은 유지되기 때문에, 데이터를 압축하진 못함

     - Data Augmentation에서 PCA Whitening보다 더 자주 사용됨( ∵ ZCA는 이미지의 형태가 유지됨)

 

  stats.stackexchange.com/questions/117427/what-is-the-difference-between-zca-whitening-and-pca-whitening

  cbrnr.github.io/posts/whitening-pca-zca/

  * PCA와 ZCA에 대한 자세한 설명에 대해서 요청이 오면 추가해 드리겠습니다.


지금까지, Metric Learning을 위해서, 'Feature를 어떻게 처리할 것인가?'라는 주제를 중심으로 설명했습니다.

 

다음은

 

2. 딥러닝을 위한 Metric Learning

   - Multi-Grain

   - CGD(Combination of Multiple Global Descriptors)

논문을 중심으로 소개드리고자 합니다.