코딩일기

[Paper Review] Arcface (feat. Additive Angular Margin Loss, Deep Metric Learning, Contrastive Loss, Triplet loss, Center Loss) 본문

Code/딥러닝(NL)

[Paper Review] Arcface (feat. Additive Angular Margin Loss, Deep Metric Learning, Contrastive Loss, Triplet loss, Center Loss)

daje 2022. 5. 7. 18:15
728x90
반응형

 

 

 

 

 

안녕하십니까 다제입니다. 

 

오늘은 이미지 분야에서 사용되는 다양한 Loss에 대해서 알아보고자 합니다. 

 

이미지 분야에서 먼저 Deep Metric Learning이라는 표현이 자주 사용됩니다.

해당 용어가 무엇인지 찾아도 잘 안나오셨을텐데 이부분 먼저 살펴본 후 Arcface와 나머지 Loss들에 대해서 살펴보도록 하겠습니다. 

 

여기서 Metric은 거리를 의미하게 되고 수학에서 거리는 함수를 의미합니다. 

예를 들어, sin, cosin도 두 점 간의 거리를 수식으로 표현하는 것처럼 말이죠 

이러한 Metric function은 입력을 받고, 추력으로 0 ~ 무한대의 실수 값을 리턴해주며 아래와 같은 3가지 조건을 만족해야 거리함수가 됩니다. 

조건1 : distance(x, y) = 0 == x = y -> x와 y의 거리가 0이면, x,y는 같다. 

조건2 : distance(x, y) == distance(y, x)는 같다 

조건3 : distance(x,y) <= distance(x, z) +  distance(z, y)

 

이러한 metric function으로는 유클리디안 거리, 내적, 코사인 등이 있습니다. 

이러한 함수를 사용하게 되면 우리의 데이터들이 일정한 공간 내에 분포하고 있는 것을 알 수 있습니다. 

 

그렇다면, deep metric learning이란, 딥러닝 모델이 위와 같은 거리 공간을 학습하는 것을 의미합니다. 

 

 

 

이러한 거리를 딥러닝 모델에게 학습하기 위해 사용된 Loss는 크게 based softmax loss, based triplet loss로 나눌 수 있습니다. 

각각의 문제점이 있는데, 논문있는 표현을 그대로 인용하여 먼저 보여드리겠습니다. 

 

softmax loss 

-. the size of the linear transformation matric W ∈  ${R^{d x n}}$ increase linearly with the identities number ${n}$

-. learned features are separable for the closed-set classification problem but not discriminative enough for the open-set recognition problem.

 -> 클래수가 증가할 때마다 matric이 증가한다는 의미입니다. 

 -> 또한, open-set에서 좋은 성능을 보이지 못한다고 합니다. 

※ separable features : 적당히 구분 가능한 특징이 학습됨 

 

위와 같은 softmax loss의 단점을 보안하기 위해 아래와 같은 순서로 loss 함수들이 발전되었습니다.

하나씩 살펴보도록 하겠습니다. 

 

Constrative loss(2015CVPR) -> Triplet loss(2015CVPR) -> Center loss(2016ECCV) -> Additive angular margin loss(2019CVPR) 

 

1. Constrative loss 

 -. metric learning에서 가장 간단하며 직관적인 손실함수

 -. 모델을 학습을 할 때 기존에는 하나의 이미지만 사용하였지만, 여기에서는 2개의 이미지를 사용하게 됩니다. 

 -. 데이터셋은 2개의 이미지와 두 이미지간의 유사도를 나타내는 정보를 나타내는 값을 함께 제공해줍니다. 

 -.  ${L_{constractive}}$(θ, ${X_{1}}$, ${X_{2}}$, ${Y_{similar}}$) = $Y_{similar}$(${D^{2}}$(${F_{θ}(X_{1})}$, ${F_{θ}(X_{2})}$) + (1-$Y_{similar}$)${max}$(0, ${m}$ - ${D^{2}}$(${F_{θ}(X_{1})}$, ${F_{θ}(X_{2})}$))

 -. 위 수식이 조금 어려워보일 수 있지만, ${X_{1}}$, ${X_{2}}$가 각가의 이미지이며, ${Y_{similar}}$가 두 이미지 간의 유사도를 나타냅니다.

 -. m은 하이퍼파라미터로써 두 이미지의 여백(마진)을 주기 위한 것입니다. 

 -. $Y_{similar}$(${D^{2}}$(${F_{θ}(X_{1})}$,${F_{θ}(X_{2})}$)에서는 값이 클수록 두 이미지가 가까워지는 것을 정의하고

 -. (1-$Y_{similar}$)${max}$(0, ${m}$ - ${D^{2}}$(${F_{θ}(X_{1})}$, ${F_{θ}(X_{2})}$))에서는 마진보다 거리가 크면 해당 값은 음수가 되고 max값으로 0이 나오게 됩니다.

 -. 이렇게 로스를 줄이는 식으로 학습이 진행되게 됩니다. 

 

2. the triplet loss 

1) 정의 및 특징 

 -. Deep metric learning에서 가장 유명하고 널리 활용되는 손실함수 

 -. 세개의 데이터를 사용하여 positive pair보다 negative pair의 거리가 더 멀어지도록 손실함수가 고안되었습니다. 

 -. 3장의 사진에서 가장 그 클래스를 대표하는 이미지를 Anchor라고 부르고, 비슷한 이미지를 positive라고 하고, 다른 이미지를 negative라고 합니다. 

 -. triplet loss의 궁극적인 목표는 anchor와 positive의 거리에 마진(m)을 더한 거리가 anchor와 negative의 거리보다 작아지게 학습을 진행하게 됩니다. 

 -. ${L_{triplet}}$(θ, ${X_{1}}$, ${X_{2}}$) = ${max}$(0,  ${D^{2}}$(${F_{θ}(X_{a})}$, ${F_{θ}(X_{p})}$ - ${D^{2}}$(${F_{θ}(X_{a})}$, ${F_{θ}(X_{n})}$ + ${m}$)

 

2) 문제점

 -. there is a combinatorial explosion in the number of face triplets especially for large-scale datset

 -. leading to a significant increase in the number of iteration step

 -> 공간이 커질 수록 이를 3개로 조합해야하는 수가 증가되게 되고

 -> 이때 따라 semi-hard를 분류하기 위해 더 많은 학습을 해야하기에 iteration이 증간한다고 이야기하고 있습니다. 

 -> 또한, 샘플을 하며 학습을 진행하게 되는데 easy negative만 샘플링되어 학습을 하면 Hard negative를 구분할 수 없겠죠?

 

출처 : omoindrot.github.io

위 그림에 대해 간략히 설명을 드리자면, 어떠한 클래스를 대표하는 이미지가 센터에 있다고 해보겠습니다. 

일반적으로 대표하는 이미지와 비슷한 이미지들을 positive라고 정의하고 다른 이미지를 negative라고 정의합니다. 

위 그림은 우리가 바라는 이상적인 데이터가 분포입니다. 그러나, center와 positive 경계 사이에 negative가 있을 수 있습니다. 

이러한 negative를 hard negative라고 부르고, positive와 negative 사이를 우리가 margin으로 정의할 것인데, 그 사이에 분포하는 negative데이터를 우리는 semi-hard라고 부릅니다. 

 

 

 

3. Additive angular margin loss 

 

도저히 손으로 쓸 엄두가 나지 않아서 유튜브에서 이미지를 캡쳐해왔습니다. 

유튜브 링크 : https://youtu.be/hH-UgJ--r_4

 

728x90
반응형
Comments