2024-03-29,   김혜원

본 포스팅은 facenet 대해 공유합니다.


facenet은 2015년에 소개되어 안면 인식 분야의 대표적인 모델로 사용되고 있습니다. facenet은 입력한 얼굴 이미지를 128개의 차원으로 임베딩하고, 임베딩 값끼리 유사도를 계산해서 이미지를 분류하는 모델입니다[3]. face verification task에 대한 모델로, 자체적으로 만든 평가지표를 활용하여 모델의 성능을 평가했습니다. 2개의 사진 쌍이 있을 때, TA(d)와 FA(d)를 정의합니다.

 

\[P_{\text{same}}=같은 얼굴 한쌍(2장)\] \[P_{\text{diff}}=다른 얼굴 한쌍(2장)\]

 

TA는 같은 것을, FA는 다른 것을 같다고 판단한 갯수를 의미합니다.

 

\(TA(d)={(i,j)\in{P_{same}}, with D(x_i,x_j)\leq d}\) \(FA(d)={(i,j)\in{P_{diff}}, with D(x_i,x_j)\leq d}\)

 

따라서, 평가지표는 다음과 같습니다.

 

\[VAL(d)=\frac{TA(d)}{P_{same}}\] \[FAR(d)=\frac{FA(d)}{P_{diff}}\]

 

image

 

모델의 구조[1]는 다음과 같습니다. 입력 이미지(Batch)는 deep convolutional layer - 정규화(L2) - 임베딩(embedding) - triplet loss 의 과정을 거쳐 벡터 값으로 표현됩니다. 추출된 값들 중 비슷한 임베딩 벡터를 묶어서 클러스터링을 진행합니다.

image

 

클러스터링의 결과는 아래 그림처럼 가까운 값들은 동일 인물, 멀리 있는 값들은 다른 인물이라고 판단합니다.

 

image

이 모델의 주요 특징으로는 triplet loss function(트리플렛 손실 함수)를 사용한다는 것이며, clusturing(클러스터링), recognition(인식) 등 여러 task에 적용할 수 있습니다.

다음 포스팅은 triplet loss function에 대한 설명입니다.


참고

[1] 논문

[2] 리뷰

[3] 그림1

[4] 그림2

업데이트: