*크롬으로 보시는 걸 추천드립니다*
본 "Metric Learning 이란 - 학습 방법(Loss)"를 보시기 전에
1) Metric Learning 이란 - 기본
2) [논문요약] Deep Face Recognition : A Survey - ① 탄
순서로 먼저 보시는 걸 추천 드립니다.
Metric Learning 이란 - 기본
[논문요약] Deep Face Recognition : A Survey - ① 탄
kmhana.tistory.com/16?category=842461
에 이어서,
Deep Face Recognition : A Survey 논문의
- Section 3 : Network Architecture 및 Loss function 소개
를 소개해 드릴 예정입니다.
나머지,
- Section 4 : 얼굴 처리 알고리즘과 데이터셋 소개
- Section 5 : 여러 FR 활용에 사용할 수 있는 Deep FR 소개
은 필요하신 분이 많아지시면 추가하겠습니다.
Face Recognition에서는 학습한 단계에서의 얼굴과, 응용단계에서 후보군이 다르기 때문에,
Face Recognition(FR)은 "Zero-Shot" Learning이라고도 볼 수 있습니다.
Deep FR에서도 이미지 양이 중요하며, Google이나, Facebook에서는 약 \( 10^{6} - 10^{7} \) 의 데이터를 사용합니다.
공개된 데이터는 일반적으로 \( 10^{3} - 10^{5} \) 를 사용하고 있기 때문에,
학계에서는, 적은 데이터를 효율적인 학습을 위해서, Loss fuction이나, Architecture에 대해서 연구를 하고 있습니다.
Loss의 발전
- 초기 : Softmax를 활용한 Feature 추출, BUT discriminative features에 부적합
* discriminative features( = Inter-difference) : 파란눈, 점 주름 등의 차별적인 특징
- 중기 : Euclidean-distance 기반
- 최근 : Angular/Consine-Margin 기반 + Sample Selection 및 쉬운 Parameter를 통한 학습 절차
Loss의 세부설명
1) Euclidean-distance-based Loss :
- Inter-Variance는 키우고, Intra-Variance는 줄이는 Euclidean Space로 임베딩 시키는 Metric Learning이다.
관련 Loss로는 Contrastive Loss와 Triplet Loss가 있다.
Contrastive Loss :
이미지 쌍(Pair)이 \( \left\{\begin{matrix}
y_{ij} = 1 & if \hspace{3mm} Positive Pair
\\ y_{ij} = 0 & if \hspace{3mm} Negative Pair
\end{matrix}\right. \) 일 때,
$$ \boldsymbol\ell^{Contrastive} \left (i,j \right ) := \boldsymbol\max \left[
y_{ij}D_{ij}^{2} + \left ( 1 - y_{ij} \right )\left [ \alpha - D_{ij} \right ]_{+}^{2} \right ] $$
이 된다.
위 식을 간단히 설명하면,
1. 같은 쌍(Pos pair)은 거리가 0
2. 다른 쌍(Neg pair)은 거리가 Margin( \(\alpha \) )
이 되도록 학습을 한다.
○ Contrastive Loss 적용 예시 :
- DeepID2 모델은 Identification에는 Softmax를 Verification에는 Contrastive Loss를 결합해 사용했다고 한다.
○ Contrastive Loss 단점 :
- Margin Parameter를 설정하기 어려움
- 크게 차이나는 Neg Sample이나, 적게 차이나는 Neg Sample이 동일한 Margin( \(\alpha \) )으로 차이가 남
Triple Loss :
Contrastive는 절대적 거리(마진)을 고려하는 대신, Triplet Loss는 상대적 거리 차이를 학습한다.
$$ \boldsymbol\ell^{Triplet} \left (a,p,n \right ) := \boldsymbol\max \left[
D_{ap}^{2} - D_{an}^{2} + \alpha \right ]_{+}. $$
○ Triplet Loss 구성 :
- Anchor : 중심이 되는 이미지
- Pos : Anchor와 동일한 ID의 이미지
- Neg : Anchor와 다른 ID의 이미지
○ Triplet Loss 목표 :
- Anchor-Pos와의 거리는 최소화
- Anchor-Neg와의 거리는 최대화
○ Triplet Loss 세부 종류: Anchor와 Neg, Pos의 구성을 어떻게 하느냐에 따라서 3가지로 나누어 진다.
- Esay Triplet : \( D_{ap}^{2} + \alpha < D_{an}^{2} \) 인 Neg Sample을 사용
→ Easy Neg 샘플은 이미 \( D_{ap}^{2} + \alpha \) 보다 더 떨어져 있는 샘플이다.
→ Batch를 구성(찾기)하기는 쉬우나, Gradient가 낮아 학습에서 덜 중요하다
= Anchor와 완전히 다른 이미지를 찾기는 쉽다, 다만 나와 유사하지만 다른 얼굴이 학습에서는 필요하다.
- Hard Triplet : \( D_{an}^{2} < D_{ap}^{2} \) 인 Neg Sample을 사용
→ Hard Neg 샘플은 Pos 이미지 보다 Anchor와 더 가까운 샘플이다.
→ 학습에 매우 중요한, Batch를 구성(찾기)하기 매우 어렵다.
- Semi-hard Triplet : \( D_{ap}^{2} < D_{an}^{2} < D_{ap}^{2} + \alpha \) 인 Neg Sample을 사용
→ Semi-hard Neg 샘플은 Margin에 위치한 Neg 샘플이다.
→ 학습에 중요하며, Hard 샘플보다 Batch를 구성(찾기)하기 상대적으로 쉽다.
Center Loss :
※ 참고 정도로 하시면 될거 같습니다.
○ Center Loss :
- Intra-Variance를 줄이기 위한 방법
- \( c_{y_{i}} \) : \( y_{i} \) class의 Center of deep features
- \( x_{i} \) : \( y_{i} \) class의 속하는 deep feature
○ Center Loss 단점 :
- 많은 GPU Memory가 필요
- 각각의 ID에 대한 Training
2) Angular/cosine-margin-based Loss :
- 좀 더 어려운 데이터에 대해서, 엄격하게 분리시키고자함
- Decision Boundary를 도입함
- L-Softmax/A-Softmax : Softmax Loss에서, Weight와 \( \cos\theta \)를 결합했다.
- \( m \) : Margin 값
- \( \Theta_{i} \) : \( W_{i} \)와 feature \( x \)간의 각도
- \( \hat{x} \) : Normalized Feature
- \( \left \| x \right \|\left ( \left \| W_{1} \right \|\cos\left ( m \mathit{\Theta}_{1} \right ) - \| W_{2} \right \|\cos\left ( \mathit{\Theta}_{2} \right ) = 0 \) 의 뜻은
Class1과 Class2의 내적 차이가 \( m \) 만큼 나도록 하는 것이 목적이다.
- ArcFace는 feature를 Normalization 후, \( \mathit{\Theta}_{1} \)와 \( m \)의 곱이 아닌, 덧셈으로 변경하여,
L-Softmax/A-Softmax의 복잡한 과정을 개선했다.
※ Hyperspere Manifold :
이러한 Discriminative관련 제약(Cosine + m)을 둔 Angular/cosine-margin-based 계열은
Hypersphere Manifold( ~ \(\cos\theta \)) 를 타겟으로 한다.
실제 얼굴 이미지도 Hypersphere Manifold와 유사하며,
Hypersphere Manifold를 타겟으로 학습하는 Angular/cosine-margin-based Loss가
얼굴인식 분야에서 좋은 효과를 낼 수 있었다.
위에 말을 조금 더 설명하자면,
- (오른쪽 위 그림) : 우리의 얼굴은 포즈,표정에 따라서 구표면(Hypersphere) 공간에 위치하는 것과 같다.
- (왼쪽 위 그림) : 그렇기에, Angular/cosine-margin Loss는 Deep Feature를 구(Hypersphere)에 위치하도록 학습
- 따라서, Metric Learning이나 얼굴인식에 적합한 맞춤형 Loss라 할 수 있다.
* SphereFace = A-Softmax
※ "Deep Face Recognition : A Survey" 논문 외에 추가 내용
만약, 구표면(Hypersphere)과 관련이 없다면, 어떻게 해야할까?
- 예를 들어, 상품인식이라고 했을 때, 박스류나 봉지류에서 자전거같은 상품이 추가된다면
구표면(Hypersphere)을 가정하기 어려워 보인다.
다른 Margin Loss는 없을까?
※ Paper : Sampling Matters in Deep Embedding Learning 논문에서 발췌했습니다.
Margin Loss이외에 Sampling 방법에 대해서 설명 하고 있기 때문에, 한번 읽어보는 것도 추천드립니다.
margin-based Loss :
○ Margin-based Loss목표 :
- Triplet Loss의 장점(상대적인 margin 학습 - 유연성(Flexibility))과 Contrastive Loss의 장점(계산 효율성)을 결합
$$ \boldsymbol\ell^{Margin} := \left ( \alpha + y_{ij}\left ( D_{ij}-\beta \right ) \right )_+ $$
- \( D_{ij} \) : L1-Norm을(Manhattan Distance) 사용
- \( \alpha \) : Margin
- \( \beta \) : Pos와 Neg 사이에 Boundary 변수(variable) = Support Vector Classifer(SVC)와 매우 유사
마치며
- Metric Learning을 위한, Contrastive Loss, Triplet Loss, Margin Loss에 대해서 설명드렸습니다.
- 얼굴인식에 대해서, 더 연구하시는 분은 "ArcFace"는 기본으로 읽어볼 것을 권해드립니다.
- Similarity Loss를 위해선, 효과적인 Mini-batch 구성을 위한 Sampling도 같이 고려해야합니다.
- Sampling 구성에 대한 연구를 하고 싶으신 분은 "Sampling Matters in Deep Embedding Learning" 추천드립니다
다음에는
1.2) Feature를 어떻게 처리할 것인가?
1. 어떻게 뽑을 것인가? (GeM, SPoc, MAC)
2. 뽑은 Feature를 어떻게 후-처리할 것인가?(Whitening)
에 대해서 설명 드리고자 합니다.
'실용적인 AI > Metric Learning' 카테고리의 다른 글
[번외] Metric Learning을 위한 딥러닝 - CBAM(Conv Block Attention Module) (0) | 2021.03.03 |
---|---|
Metric Learning을 위한 딥러닝 - CGD(Combination Global Descriptors) (1) | 2021.02.20 |
Metric Learning 이란 - Feature 추출 (0) | 2021.02.12 |
[번외 - 논문요약] Deep Face Recognition : A Survey - ① (0) | 2021.02.02 |
Metric Learning(Image Retrieval) 이란? - 기본 (5) | 2021.02.02 |