일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Codestates
- selenium
- 재미져
- python
- 부트캠프
- MYSQL
- leetcode
- 선형회귀
- JavaScript
- 성실히
- bootcamp
- 주간보고
- 파이썬
- 노마드코더
- yolo
- 매일매일
- 꾸준히
- 코딩테스트
- 빅데이터
- 리뷰
- 독서
- 열심히
- SQL
- 딥러닝
- pandas
- 코드스테이츠
- 자료구조
- 기초통계
- Ai
- 2021
- Today
- Total
코딩일기
[Paper Review] Arcface (feat. Additive Angular Margin Loss, Deep Metric Learning, Contrastive Loss, Triplet loss, Center Loss) 본문
[Paper Review] Arcface (feat. Additive Angular Margin Loss, Deep Metric Learning, Contrastive Loss, Triplet loss, Center Loss)
daje 2022. 5. 7. 18:15
안녕하십니까 다제입니다.
오늘은 이미지 분야에서 사용되는 다양한 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를 구분할 수 없겠죠?
위 그림에 대해 간략히 설명을 드리자면, 어떠한 클래스를 대표하는 이미지가 센터에 있다고 해보겠습니다.
일반적으로 대표하는 이미지와 비슷한 이미지들을 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