Face Recognition(얼굴 인식)분야에서 사용되는 Loss인 ArcFace loss에 대한 논문이다.

 

 

얼굴 인식 분야를 공부하는 것은 아니나, 다른 논문을 읽다가 loss function으로 ArcFace loss를 활용하는 논문이 있어 해당 논문을 읽게 되었다.

 

 

원 논문 자료: https://arxiv.org/abs/1801.07698

 

ArcFace: Additive Angular Margin Loss for Deep Face Recognition

One of the main challenges in feature learning using Deep Convolutional Neural Networks (DCNNs) for large-scale face recognition is the design of appropriate loss functions that enhance discriminative power. Centre loss penalises the distance between the d

arxiv.org

논문에 들어가기 앞서, 이 논문을 읽으면서 필요한 개념들을 정리해보고 논문 리뷰를 시작하려고 한다.

 

 

 

1) open-set face recognition vs closed-set face recognition

 

 

 

ArcFace 논문에서는, 기존 방법론의 한계점을 지적하는 과정에서 closed-set에 대한 언급을 하게 되는데, 이는 선행 연구 중 하나인 SphereFace : Deep Hypersphere Embedding for Face Recognition에서 언급되었다.

 

 

open-set face recognition vs closed-set face recognition

 

Closed-set face recognition이란, 내가 맞추어야 하는 Testing set에 있는 얼굴 사진에 대한 identity(label 혹은 정답이라고 생각하면 될듯하다.)가 training set에 있는 경우를 의미한다. 따라서 이는 우리가 머신러닝이나 딥러닝에서 풀고자 하는 classification problem과 같다는 것을 의미한다. 

 

 

하지만, 현실 문제에서는 우리가 한번도 본 적 없는 얼굴에 대해서 인식을 해야 하는 일이 발생한다. 이에 해당하는 것이 바로 open-set face recognition이다. open-set face recognition이란, 내가 맞추어야 하는 Testing set에 있는 얼굴 사진에 대한 identity가 training set에 없는 경우를 의미한다. 

 

 

open-set의 경우, 얼굴 이미지를 학습 데이터에 알려진 identity로 분류하는 것이 불가능하기 때문에 얼굴 이미지를 discriminative 한 feature space로 mapping 시키는 것이 요구된다.

 

 

2) Logit

 

 

 

neural network에서 classification task를 위해 사용되는 마지막 layer를 의미하고, 실수 형태로 raw prediction value 값을 뽑아낸 결과를 의미한다.

 

 

예를 들어서, 이미지를 주고 이것이 개, 고양이, 사자, 고슴도치를 구별하는 classification을 해야 한다면, CNN을 이용해서 특징을 추출한 후, 마지막에 Fully connected layer를 이용해서 최종적으로 4개의 클래스 중에 어떤 클래스에 가까운지에 대한 예측값을 뽑게 될 것이다. 보통 분류 문제의 경우는, 마지막에 softmax를 취해서 각 클래스에 해당할 확률의 합이 1이 되게끔 하는 처리를 해주지만, softmax를 취해주기 전에 나온 raw prediction value 값을 logit이라고 부르는 것으로 보인다.

 

 

 

3) Geodesic distance

 

geodesic distance란, 두 점을 잇는 최단 거리를 의미한다. 수학시간에는 두 점을 잇는 최단 거리를 직선이라고 배운 것 같은데, 이를 영어로 표기하면 geodesic distance인 듯....

 

 

 

 

논문을 읽는데 필요한 3가지 개념들을 모두 정리하였고, 본격적으로 논문에 대한 내용들을 다루어보려고 한다.

 

 

 

 

 

 

Abstract

 

 

대규모 얼굴 인식을 위해 Deep Convolutional Neural Networks(DCNNs)를 사용해 feature learning을 하는 데 있어서 주요한 challenge 중 하나는 discriminative power를 강화하는 적절한 loss function의 설계이다.

Centre loss는 intra-class compactness를 달성하기 위해 Euclidean space에서 deep feature와 그에 대응되는 class 중심 사이의 거리에 처벌을 가한다. 

SphereFace는 마지막 fully connected layer에서의 linear transformation matrix가 angular space에서 class의 중심을 나타내는 표현으로 사용될 수 있다는 것을 가정하며, deep feature와 그것에 대응되는 weight 사이의 각도에 multiplicative 한 방법을 이용해 처벌을 가한다.

최근, 인기 있는 연구분야는 face class separability를 최대화하기 위해서 잘 설계된 손실 함수에 margin을 포함시키는 것이다. 이번 연구에서, 우리는 얼굴 인식에 있어서 매우 discriminative 한 feature를 얻기 위해서 additive angular Margin Loss (ArcFace)를 제안한다. 제안된 ArcFace는 hypersphere에서의 geodesic distance와 정확히 일치하기 때문에, 명확한 기하학적 해석을 가지고 있다. 

 

 

1. Introduction

 

 

Deep Convolutional Neural Network (DCNN) embedding을 사용하는 face representation은 얼굴 인식을 위한 최고의 방법이다. DCNNs은 일반적으로 포즈 정규화 단계를 거친 후, 얼굴 이미지를 클래스 내에서는 작은 거리를 가지고 클래스 간에는 큰 거리를 갖는 특징으로 mapping 한다. 얼굴 인식을 위해서 DCNNs을 학습시키는 것에는 두 개의 주요한 연구분야가 있다. 그중 하나는 softmax classifier를 사용하여 학습 데이터에서의 다른 identity를 구별할 수 있는 multi-class classifier를 학습하는 것이고, 다른 하나는 triplet loss와 같이 embedding을 직접적으로 학습하는 것이다.

 

 

대규모의 학습 데이터와 정교한 DCNN architecture에 기반해서, softmax loss 기반의 방법과 triplet loss 기반의 방법은 얼굴 인식에서 훌륭한 성능을 얻을 수 있었다. 하지만, softmax loss와 triplet loss 둘 다 결점을 가지고 있다. softmax loss에 대해서는 첫 번째로, 선형 변환 행렬 $W \in R^{d \times n}$ 의 크기가 identity의 개수 $n$에 의해 선형적으로 증가한다는 것이고, 두 번째로, closed-set 분류 문제에 대해서는 학습된 특징들이 분리될 수 있지만, open-set 얼굴 인식 문제에 대해서는 충분히 discriminative 하지 않다는 것이다. 

 

 

Triplet loss에 대해서는 첫 번째로, 특히 대규모 데이터셋에서 face triplet의 수에서 combinatorial explosion이 존재할 수 있으며, 이는 iteration step의 수에서의 상당한 증가를 가져올 수 있다. 두 번째로, 효율적인 모델 학습을 위해서는 semi-hard sample mining이 상당히 어려운 문제라는 것이다.(triplet loss를 계산하기 위해서는, 기준점인 anchor, anchor와 같은 identity를 가지고 있는 점인 positive, anchoer와 다른 identity를 가지고 있는 점인 negative의 triplet 쌍을 뽑아야 한다. 이를 face triplet이라고 표현한 것으로 보이고, 데이터가 많을 경우 이러한 triplet 쌍을 뽑을 수 있는 경우의 수가 폭발적으로 많아지기 때문에 combinatorial explosion이 발생한다고 표현한 것으로 보인다. 또한, triplet을 어떻게 sampling 하는지에 따라서 성능의 차이가 많이 나기 때문에 sampling을 어떻게 하는지가 매우 중요한 문제인데, 그렇기 때문에 sample mining이 상당히 어렵다고 표현한 것으로 보인다.)

 

 

Figure 1. four kinds of Geodesic Distance (Gdis) constraint.

 

Figure 1 - centre normalization과 feature normalization에 기반해서, 모든 identity는 hypersphere에 분포되어있다. 클래스 내 compactness와 클래스 간 discrepancy를 향상하기 위해서, 4종류의 Geodesic Distance constraint를 고려한다.

 

(A) Margin-loss: sample과 중심 간의 geodesic distance margin을 추가한다. (위 그림을 보면 알겠지만, sample과 중심 간의 거리 + m 이 sample과 다른 identity의 중심 간의 거리보다 작게끔 만드려고 한다. 따라서, 여기서의 margin이라는 의미는 sample과 다른 identity의 중심 간의 거리가 m이라는 값보다 크게끔 한다는 것이다. 만약 m이라는 값보다 작으면 penalty를 부과한다.)

(B) Intra-loss: sample과 중심 간의 geodesic distance를 감소시킨다.

(C) Inter-loss: 다른 중심 간의 geodesic distance를 증가시킨다.

(D) Triplet-loss: triplet sample 간에 geodesic distance margin을 추가함. (위 그림을 보면, 기준이 되는 anchor인 $x_{11}$과 같은 identity를 가지는 샘플인 $x_{12}$와의 거리 + m 이 anchor와 다른 identity를 가지는 샘플인 $x_{21}$ 보다 작게끔 만드려고 한다. 따라서, 여기서의 margin이라는 의미는 anchor와 다른 identity를 가지는 샘플 간의 거리가 m이라는 값보다 크게끔 한다는 것이다. 만약 m이라는 값보다 작으면 penalty를 부과한다.)

 

이번 연구에서, 우리는 Additive Angular Margin Loss (ArcFace)를 제안하며, 이는 (A)에서의 geodesic distance (Arc) margin penalty와 정확히 대응되며, 얼굴 인식 모델의 discriminative power를 강화시킨다.

 

 

 

혼자 이 논문을 읽으면서, centre normalization과 feature normalization에 기반해서, 모든 identity가 hypersphere에 분포되어있다는 의미가 무엇인지 몰라서 꽤 애를 먹었다. 따라서 논문의 그다음으로 넘어가기 전에, 이 부분에 대해서 보충 설명을 진행하고 넘어가도록 하려고 한다. 이 부분을 이해하지 못하면, ArcFace loss가 어떤 효과를 나타내는지를 직관적으로 이해하기가 매우 어렵다. 

 

 

Abstract에서도 언급했지만, 이전의 선행연구 중 하나인 SphereFace에서는 마지막 fully connected layer에서의 linear transformation matrix가 angular space에서 class의 중심을 나타내는 표현으로 사용될 수 있다는 것을 가정한다. ArcFace 논문에서도 이러한 가정을 받아들여 사용하게 된다. 

 

 

설명하기 쉽도록, 매우 간단한 예시를 들어보려 한다. (물론 실제 케이스에서는 이미지 feature의 차원과 구분해야 하는 얼굴의 identity의 수가 매우 크겠으나, 이는 더 쉬운 케이스에서 원리를 이해하면 확장시키는 것은 어렵지 않을 것이다.) 얼굴 이미지에 해당하는 feature가 3차원이라고 가정하고, 우리는 두 가지의 identity를 가진 얼굴을 분류하는 task를 진행하려고 한다. 그렇다면, classification task를 위해서 fully connected layer는 3차원의 데이터를 받아 2차원으로 구성된(즉, 각 identity에 대한 prediction score) 데이터를 output으로 뽑아내면 되는 케이스가 된다.

 

 

해당 예시는 $xA^T$의 연산을 하는 경우를 생각하였으나, 상황에 따라 연산의 순서가 바뀔 수 있다. 그때는 차원을 잘 살펴보고 상황에 맞춰서 생각해보면 될 것이다. 

 

 

얼굴 이미지에 해당하는 feature를 $x$ = [10, 20, 30]으로 정의해주고, feature를 입력으로 받았을 때, 2가지의 identity로 분류하는 task를 진행하는 fully connected layer를 구성하는 matrix $A$를 다음과 같이 정의해준다. (행은 class의 개수, 열은 feature의 차원을 나타낸다.)

 

\begin{pmatrix}
1 & 2 & 3\\ 
4 & 5 & 6
\end{pmatrix}

 

 

fully connected layer는 $xA^T$의 연산 과정을 거치므로, 2가지의 identity에 대한 prediction score는 다음과 같이 계산될 수 있다.

 

\begin{pmatrix}
10*1+20*2+30*3 & 10*4+20*5+30*6 
\end{pmatrix}

 

이러한 과정을 거쳐 얼굴 이미지의 feature들을 받았을 때, 각 identity에 대한 prediction score를 계산할 수 있다. 

 

SphereFace의 가정에 따라, 해당 예시에서 첫 번째 identity의 중심을 나타내는 값은 \begin{pmatrix}
1 & 2 & 3
\end{pmatrix}
이고, 두 번째 identity의 중심을 나타내는 값은 \begin{pmatrix}
4 & 5 & 6 
\end{pmatrix}
이다. 

 

feature normalization을 거치면, 얼굴 이미지에 해당하는 feature는 $x$ = [$10/\sqrt{1400}$, $20/\sqrt{1400}$, $30/\sqrt{1400}$] 의 형식으로 normalization 해줄 수 있다. 

 

centre normalization을 거치면, 첫 번째 identity의 중심을 나타내는 값은 \begin{pmatrix}
1/\sqrt{14} & 2/\sqrt{14} & 3/\sqrt{14}
\end{pmatrix}

 

두 번째 identity의 중심을 나타내는 값은 \begin{pmatrix}
4/\sqrt{77} & 5/\sqrt{77} & 6/\sqrt{77}
\end{pmatrix}

 

자, 그럼 normalization에 기반했을 때, 모든 identity가 hypersphere에 분포된다는 의미는 무엇인가?

 

 

해당 예시가 3차원이므로, 3차원인 hypersphere는 우리가 잘 아는 도형인 '구'에 해당하게 되고, 구의 중심은 [0, 0, 0]이다.

 

이미지의 feature도 3차원, identity의 중심을 나타내는 값도 3차원이며, 각각에 대해서 구의 중심과의 거리를 계산하면 1이 된다. (normalization을 거쳤기 때문이다.) 따라서, 이미지의 feature와, identity의 중심을 나타내는 값들은 모두 반지름이 1을 만족하는 구 위에 분포하게 된다.

 

 

 

 

다시 논문으로 돌아와서....

 

 

(선행 연구 관련된 내용 한 단락 생략)

 

 

이번 연구에서, 얼굴 인식 모델의 discriminative power를 향상하고 학습 프로세스를 안정하기 위해 Additive Angular Margin Loss (ArcFace)를 제안한다. Figure 2에서 보여주는 것처럼, DCNN feature와 마지막 fully connected layer의 dot product는 feature와 weight가 normalization 된 후의 cosine distance와 같다.(이 내용은 곧 나옴.) 현재 feature와 target weight 사이의 각도를 계산하기 위해서 arc-cosine function을 활용하고, 그다음으로 우리는 추가적인 angular margin을 target angle에 더해주며, cosine function에 의해서 target logit을 다시 얻게 된다. 다음으로, 모든 logit을 고정된 feature norm에 의해서 re-scale 하고 그 후의 단계는 softmax loss와 동일하다.

 

 

제안된 ArcFace의 이점은 다음과 같이 요약될 수 있다.

 

 

매력적이다 - ArcFace는 정규화된 hypersphere에서 각도와 호 사이의 정확한 일치성을 통해(hypersphere 내에서는 반지름이 모두 같으므로 호는 각도의 영향만 받는다는 얘기인 듯) geodesic distance margin을 직접 최적화한다. 우리는 feature와 weight 사이의 angle statistics를 분석해서 512차원의 공간 내에서 어떤 일이 일어나는지를 직관적으로 나타낼 수 있다.

 

 

효과적이다 - ArcFace는 대규모 이미지와 비디오 dataset을 포함하는 10개의 얼굴 인식 benchmark에서 SOTA 성능을 나타냈다.

 

 

쉽다 - ArcFace는 Algorithm 1에서 주어진 것처럼 단지 몇 줄의 코드만 필요하며, MxNet, Pytorch, Tensorflow와 같은 deep learning framework에서 쉽게 실행할 수 있다. 게다가, 이전 선행연구와는 다르게 안정적인 성능을 가지기 위해서 다른 loss function과 결합될 필요가 없으며, 어떤 training dataset에도 쉽게 수렴할 수 있다.

 

 

효율적이다 - ArcFace는 학습하는 동안에 무시해도 될 정도의 계산 복잡도를 추가한다. 현재 GPU들은 학습을 위해 수백만 개의 identity를 쉽게 지원할 수 있으며, model parallel strategy도 더 많은 identity를 지원할 수 있다.

 

 

 

2. Proposed Approach

 

 

2.1. ArcFace

 

 

가장 널리 사용되는 분류 손실 함수인 softmax loss는 다음과 같이 나타내어질 수 있다.

 

 

softmax loss

 

$x_i \in R^d$는 $i$번째 sample의 deep feature를 나타내고, $y_i$번째 class에 속해있다. 이번 연구에서는 embedding feature의 차원은 512차원으로 설정되었다. $W_j \in R^d$는 가중치 $W \in R^{d \times n}$ 의 $j$번째 column을 나타내고, $b_j \in R^n$은 bias term이다. Batch size는 $N$, class number는 $n$이다. 전형적인 softmax loss는 deep face recognition에서 널리 사용되고 있다. 하지만, softmax loss function은 명쾌하게 feature embedding이 클래스 내 sample들이 높은 유사성을 가지도록, 그리고 클래스 간 샘플들이 다양성을 가지도록 최적화하지 않으며, 이는 클래스 내 appearance variation이 높은 상황(포즈의 다양성이나, 나이의 차이가 많이 날 때)과 대규모 테스트 시나리오(수백만 혹은 수조 개의 쌍이 존재하는 상황)에서 performance gap을 나타낸다.

 

 

단순하게, 우리는 bias $b_j$ = 0으로 둔다. 그 후에, 우리는 logit을 $W^T_jx_i$ = $||W_j||$$||x_i||$$cos\theta_j$로 바꾸며, 여기서 $\theta_j$는 가중치 $W_j$와 feature $x_i$간의 각도를 나타낸다. 이전 연구에 따르면, 우리는 $L_2$ normalization을 이용해서 individual weight $||W_j||$ = 1로 만든다. 다른 이전 연구들을 따르면, 우리는 또한 embedding feature $||x_i||$를 $L_2$ normalization에 의해서 고정하고, $s$로 re-scale 한다. Feature와 weight에 대해서 normalization 하는 단계는 예측이 오직 feature와 weight 간의 각도에만 의존하도록 만든다. 따라서 학습된 embedding feature는 hypersphere에서 반지름 $s$의 크기로 분포된다.

 

feature, weight normalization 후 s로 re-scale까지 진행한 Loss function 수식

 

Embedding feature가 hypersphere에서 각 feature 중심 주변에 분포되기 때문에, 추가적인 angular margin penalty인 $m$을 $x_i$와 $W_{y_i}$ 사이에 추가하며, 이는 클래스 내 compactness와 클래스 간 discrepancy를 향상시킨다. 제안된 Additive angular margin penalty는 normalized hypersphere에서 geodesic distance margin penalty와 같기 때문에, 이러한 방법을 ArcFace로 명명하였다.

 

ArcFace Loss function

 

 

ArcFace loss를 적용하는 방법은 다음 그림으로 한 번에 도식화할 수 있다.

 

Figure 2. Illustration of ArcFace loss function process

 

feature $x_i$와 weight $W$을 normalization 하고, 이 둘을 내적해서 $cos\theta_j$ (logit)을 얻는다. 앞에서 설명했던 대로, 구의 표면에 각 feature들이 존재한다고 생각한다면 이 $cos\theta_j$값이 크다는 것은, 해당 class의 중심과 각도가 작다는 것이고(거리가 가깝다는 것이고), $cos\theta_j$값이 작다는 것은, 해당 class의 중심과 각도가 크다는 것이다.(거리가 멀다는 것이다.) 

 

 

다음으로는, 해당 feature가 속한 class인 $y_i$의 중심과 feature $x_i$의 각도인 $\theta_{y_i}$에 margin인 $m$을 추가해준다. 이는 직관적으로 생각해보면, loss function을 계산할 때 해당 feature가 속한 class의 중심과 feature 간의 각도를 더 크게 계산하는 효과를 가져온다.(즉, 해당 class에 속할 가능성이 실제에 비해서 더 낮게 계산되도록 한다.)

 

 

다음으로는, $s$를 곱해줘서 Feature Re-scale을 진행하고, 이 값을 기준으로 Softmax를 취해준 뒤, Cross-entropy Loss를 계산해준다.

 

 

처음 이 논문을 읽었을 때는, 이러한 과정을 통해서 왜 클래스 내 샘플들이 더 compact 해지고, 클래스 간 거리가 더 멀어진다는 것인지 이해를 하지 못했다. 하지만 이러한 효과가 왜 나는지에 대한 핵심은 바로 cross-entropy loss라고 생각한다. cross-entropy loss의 특성은, 정답에 해당하는 class의 softmax 값은 1에 가까워지게 하고, 그에 따라서 정답이 아닌 class에 해당하는 softmax값은 0으로 만들어버린다는 것이다. 이를 ArcFace의 경우에 대입해보면, 정답에 해당하는 class의 softmax 값이 1에 가까워지게 해서 class의 중심과 sample 간의 각도가 0에 가까워지게 만들고($cos(0)$ = 1이다.), 정답이 아닌 class에 해당하는 softmax값은 0에 가까워지게 해서 다른 class의 중심과 sample 간의 각도가 더 멀어지게 만들어버린다. 

 

 

논문의 저자들은 softmax와 ArcFace loss의 차이를 보여주기 위해서, 1개의 class당 1500개의 이미지가 있고 8개의 class로 구성되어 있는 face image에 대해서 2D feature embedding network를 softmax loss와 ArcFace loss를 각각 학습시켰다. Figure 3에서 나타난 것처럼, softmax loss는 대략 분리될 수 있는 feature embedding을 만들지만, decision boundary에서는 현저히 애매모호함을 만들어낸다. 반면에, 제안된 ArcFace loss는 가장 가까운 클래스 간의 더욱 명백한 gap이 생기도록 만든다.

 

Figure 3

 

Figure 3에서 점들은 샘플을 나타내고, 선은 각 identity의 중심 방향을 나타낸다. Feature normalization을 기반으로, 모든 face feature들은 고정된 반지름을 가지는 호 공간에 존재한다. 가장 가까운 class 간의 Geodesic distance gap은 additive angular margin penalty가 포함되었을 때 분명해지는 것을 볼 수 있다.

 

 

 

이후 나오는 부분들은 ArcFace가 어떤 식으로 좋은지 다른 loss function들과 비교하고, 다양한 dataset에서 실험한 내용들을 다루고 있어 review에서는 생략하였다.

 

 

 

 

 

오늘은 ArcFace라고 하는 논문에 대해서 review 해보았는데, 아무래도 얼굴 인식 관련한 배경지식이 없어서인지 완벽하게 이해하는데 꽤 오랜 시간이 들었다. 그래도 며칠 간의 고생 끝에 나름대로 논문을 확실하게 정리할 수 있어서 좋은 공부가 된듯하다.

 

 

 

 

+ Recent posts