본문 바로가기

Machine Learning Tasks/Face Recognition

Face Recognition - SphereFace (1)

반응형

얼굴 인식 (Face recognition) 은 크게 face identification 과 face verification 태스크로 나누어집니다. Face identification 이란 입력으로 들어온 얼굴을 특정한 사람으로 특징짓는 것을 말하며, face verification 은 두 개의 얼굴이 같은 사람인지 다른 사람인지 판단하는 문제입니다. 그렇다면 얼굴 인식은 얼굴로 사람을 구별하는 분류 문제일텐데, 각 사람 (클래스) 별로 다양한 각도의 얼굴 이미지를 가지고 있을 때 얼굴 인식 테스트는 어떻게 수행할까요? 

분류에서의 테스트 시에는 closed-set / open-set 프로토콜이 존재합니다. Closed-set 프로토콜은 테스트 데이터의 클래스가 훈련 데이터의 클래스에 포함되는 경우로 우리가 아는 일반적인 분류 문제입니다. 반면, open-set 프로토콜은 테스트 데이터의 클래스가 훈련 데이터의 클래스에 포함되지 않는 경우로서 일반적인 분류 문제처럼 softmax 를 통한 클래스 판단이 무의미합니다. 각 클래스 별 데이터를 feature space 상에서 잘 구분만 하면 되는 closed-set 프로토콜과 달리 open-set 프로토콜은 입력 feature 간의 거리로서 판단하게 되는 metric learning 의 성질을 가지게 됩니다.

Figure 1

실제 생활에서 쓰이는 얼굴 인식은 분명 open-set 프로토콜일 것입니다. 당연하게도 인식 대상인 사람을 미리 모두 알 수도 없을 뿐더러 해당 사람들의 이미지를 모으는 것은 실질적으로 불가능하기 때문입니다. 이러한 경우에서의 face identification 은 Figure 1과 같이 미리 갖추어놓은 얼굴 갤러리의 feature 와 인식할 얼굴의 feature 를 비교해서 갤러리 feature 중 거리가 가장 가까운 사람의 feature 를 찾게 되는 작업이 되게 됩니다. 

그렇다면 본질적으로 open-set 프로토콜인 얼굴 인식을 잘 수행하기 위해서는 어떠한 기준이 필요할까요? 가장 중요한 것은 한 사람에 속한 feature 간의 거리가 (intra-class distance) 사람 간의 feature 간의 거리보다 (inter-class sdistance) 작아야 한다는 점입니다. (이 점은 clustering 성능 평가시 사용되는 지표인 compactness 와 separation 과 동일한 개념입니다.) 하지만 일반적으로 얼굴 이미지는 다른 사람이더라도 비슷한 경우가 있고 같은 사람이더라도 이미지가 찍힌 배경, 환경 등에 따라 매우 달라 이 목적을 달성하기 어렵습니다.

CNN을 이용한 얼굴 인식은 SphereFace 가 등장하기 전에는 cross-entropy 를 통한 softmax 목적함수나 positive / negative 데이터 pair 를 통해 훈련하는 contrastive / triplet loss 등을 사용해 왔습니다. 하지만 softmax 함수는 클래스끼리 잘 구분할 뿐 같은 클래스끼리는 뭉치고 다른 클래스끼리는 떨어지게 하는 discriminative 한 동작은 잘 수행하지 못하며 contrastive / triplet 함수는 꼼꼼한 데이터 pair 를 구축하는 것이 필수적이라 사용하기에 제한적입니다. 그렇다면 SphereFace 는 intra-class distance 는 줄이면서 inter-class distance 를 늘리기 위한 어떤 학습 방법을 제안했을까요?

Deep hypersphere embedding

Revisiting the softmax loss

먼저 이진 분류에 대한 softmax 함수를 다시 한 번 살펴보겠습니다. $x$가 feature vector, $W_i, b_i$가 마지막 fully-connected layer 의 class $i$에 해당하는 weights / bias 라 할 때, class 1,2에 속할 확률 $p_1, p_2$는 Equation 1과 같이 계산할 수 있습니다. 이후에 $p_1 > p_2$이면 입력을 class 1으로, $p_1 < p_2$이면 입력을 class 2로 할당합니다. 

Equation 1

이 경우에서 class 1,2 를 구분짓는 경계 (decision boundary) 는 $(W_1 - W_2)x + b_1-b_2=0$ 입니다. 여기서 내적 표현을 이용하고, ($W_i^T x + b_i=\Vert W_i^T\Vert \Vert x\Vert cos(\theta_i)+b_i$ ($\theta_i$는 $W_i$와 $x$와의 각도입니다.)) $\Vert W_i\Vert=1, b_i=0$ 으로 둔다면 $p_1=\Vert x\Vert cos(\theta_1), p_2=\Vert x\Vert cos(\theta_2)$로 표현할 수 있습니다. 이렇게 표현한다면 decision boundary는 $cos(\theta_1)-cos(\theta_2)=0$이 되게 됩니다. 이를 modified softmax loss 라 칭하고 class $i$에 속하는 feature 는 $W_i$와 작은 각도를 (cosine 값이 크도록) 가지도록 훈련됩니다. 따라서 일반적인 softmax loss 에서 modified softmax loss 를 Equation 2와 같이 표현할 수 있습니다. 

Equation 2

최종적으로 매 반복마다 $\Vert W\Vert=1, b=0$를 강제한다면 최종적으로 Equation 3과 같은 목적함수를 얻을 수 있습니다. ($N$은 훈련 데이터 개수이고 $cos(\theta_j, i)$는 $W_j, x_i$의 각도입니다.) 

Equation 3

Modified softmax loss 를 통해 기존 softmax loss 와 달리 $x$와 $W$의 각도 $\theta$를 통해 feature 를 구분할 수 있습니다. Figure 2의 기존 softmax loss 를 사용한 (a), (b)를 보면 각 클래스의 feature가 넓게 퍼지게 되어 특정한 각도로 feature를 구분할 수 없으나 modified softmax loss 를 사용한 (c), (d)를 보면 $W=1, b=0$을 강제함으로써 angular 경계가 생성된 것을 볼 수 있습니다. 하지만 얼굴 인식을 위해 필요한 discriminative (작은 intra-class distance, 큰 inter-class distance) 측면에서는 아직 부족합니다.

 

Introducing angular margin to softmax loss

SphereFace 는 modified softmax loss 가 각도로 feature 를 구분하는 것에 착안해 각도 측면에서 feature 를 구분하는 것을 어렵게 하기 위한 angular margin 개념을 도입합니다. 위와 같이 간단한 이진 분류 경우를 생각해 보았을때, modified softmax loss 에서는 class 1의 feature $x$가 잘 분류되도록 하기 위해 $cos(\theta_1) > cos(\theta_2)$ 가 필요합니다. 그렇다면 $m\geq 2$인 경우에 $cos(m\theta_1) > cos(\theta_2)$를 만족하기 위한 $\theta_1$은 modified softmax loss 경우와 어떻게 달라질까요? $m\geq 2$인 $m$이 곱해지다 보니 $cos(m\theta_1) > cos(\theta_2)$를 만족하기 위해서 $\theta_1$이 modified softmax loss 경우보다 더 엄격히 작아져야 합니다. 마찬가지로 class 2에 속하는 feature $x$에 대해서도 $cos(m\theta_2) > cos(\theta_1)$이 적용되므로 $\theta_2$가 더 작아져야 합니다.

즉, class 1의 $x$를 바로 구분하기 위해서는 $\theta_1 < \frac{\theta_2}{m}$이어야 하고 class 2의 $x$를 바로 구분하기 위해서는 $\theta_2 < \frac{\theta_1}{m}$의 조건이 필요합니다. 따라서 modified softmax loss 의 $\theta_1 < \theta_2, \theta_2 < \theta_1$의 경우보다 훨씬 문제가 어려워졌습니다. 이를 수식으로 표현하면 Equation 4와 같습니다.

Equation 4

Equation 4에서 $\theta_{y_i, i}$는 $[0, \frac{\pi}{m}]$ 사이에 위치해 있어야 하므로 $cos(m\theta_{y_i, i})$를 $\theta_{y_i, i}$에 따른 단조감수 함수 $\psi(\theta_{y_i, i})$로 대체합니다. $\psi(\theta_{y_i, i})$는 $[0, \frac{\pi}{m}]$ 사이에서 $cos(m\theta_{y_i, i})$와 같고 cosine 값이 감소하는 $[0, \pi]$ 사이에서 Equation 5와 같이 정의됩니다. ($\theta$에 $m$이 곱해지므로 $\theta$가 클수록 cosine 값이 작아지는 원래의 cosine 의미를 보존하기 위한 technique 입니다.) 

Equation 5

$m=1$일 경우 modified softmax loss 가 되며 각 loss 에 대한 decision boundary 는 Table 1과 같습니다. Softmax loss에서 modified softmax loss 로 치환될 때는 feature, $W$의 각도를 최적화하는 문제로 바뀌었고 SphereFace 의 A-Softmax loss 에서는 각 클래스의 feature 들이 조금 더 discriminative 하게 분할되도록 angular margin 을 두어 문제를 더 어렵게 만들고 같은 클래스의 feature 끼리는 뭉치고 다른 클래스의 feature 들은 펼쳐지도록 동작하는 것을 알 수 있습니다. 또한, 훈련시에는 cosine 값을 cosine 정의를 이용하여 $W, x$로 표현함으로써 일반적인 back-propagation 으로 훈련합니다.

 

Hypersphere interpretation of A-Softmax loss

Figure 3는 각 loss 에 따른 feature 의 분포를 2 / 3차원 hypersphere 상에 표현한 것입니다. Triplet loss 와 같은 Euclidean margin loss 는 일반적인 Euclidean 공간에서 feature 를 구분하나 modified softmax / A-Softmax loss 는  $\Vert W\Vert=1$로 둠으로써 feature 를 hypersphere 상에 자연스럽게 매핑할 수 있습니다.

특히, Figure 3의 A-Softmax loss 부분을 보면 $x$와 $W_1, W_2$의 hypersphere 상의 거리가 $\omega_1, \omega_2$로 표현되어 있는데, angular margin $m$으로 인해 class 1의 feature $x$가 $m\omega_1 < \omega_2$가 되도록 강제됨으로써 intra-class feature 끼리 더욱 뭉치게 되도록 동작하는 것을 볼 수 있습니다.

Properties of A-Softmax loss

A-Softmax loss 의 가장 중요한 특징은 $m$이 클수록 같은 클래스의 데이터 feature 들이 hypersphere 상에서 놓여질 수 있는 공간을 제약함으로써 학습을 더 어렵게 만든다는 것입니다. 따라서 자연스럽게 드는 의문은 $m$이 1보다는 클 것이고 최대 intra-class angular distance가 최소 inter-class angular distance 보다 크도록 하는 최소한의 $m_{min}$이 무엇이냐는 것이겠죠. 먼저 이진 분류의 경우부터 보도록 하겠습니다.


In binary-class case, we have $m_{min} \geq 2+\sqrt{3}$

이 경우는 Equation 6으로 유도됩니다. Max intra-class angle 의 경우에는 class 1에 속하는 feature 가 hypersphere 상에서 얼마만큼의 각도로 펼쳐질 수 있느냐는 경우로 $\theta_{12}$는 $W_1, W_2$의 각도를 말합니다.

먼저 Equation 6 첫 번째 수식의 $\theta_{12} \leq \frac{m-1}{m}\pi$ 경우에는 $\theta_{12}$가  class 1 입장에서 1) 한쪽 끝은 $\theta_{12}$=$\theta_1 + \theta_2$=$\theta_1 + m\theta_1$, 2) 다른쪽 끝은 $\theta_{12}$=$\theta_2-\theta_1$=$m\theta_1-\theta_1$ 로 표현되므로  Equation 6 첫 번째 수식의 max intra-class angle 이 유도됩니다. Min inter-class angle 같은 경우에는 각 클래스 군집 별 끝자락끼리의 각도로 $\theta_{12}$를 $m+1$개의 $\theta_1$으로 나타냈을 때 $m-1$개의 부분이므로 $\frac{(m-1)\theta_{12}}{m+1}$ 과 같이 유도됩니다. 

Equation 6 두 번째 수식의 $\theta_{12} > \frac{m-1}{m}\pi$ 경우에는 min inter-class angle 은 첫 번째 경우와 동일하고 max intra-class angle 는 $W_1, W_2$의 각도를 $\theta_{12}$, $2\pi -\theta_{12}$로 표현한 후 $m+1$개 각도로 나누는 것을 생각해보면 쉽게 알 수 있습니다. 결과적으로 두 번째 수식에서는 $m\geq 1$인 trivial case 가 유도되고 첫 번째 수식으로부터 $m^2 -4m+1 \geq 0$이 유도되어 $m_{min}\geq 2+\sqrt{3}$임을 알 수 있습니다.

Equation 6

In multi-class case, we have $m_{min}\geq 3$

이진 분류의 연장입니다. $\theta_{i}^{i+1}$ 를 $W_i, W_{i+1}$사이의 각도라 하고 $W_i$가 $i$에 따라 균등하게 퍼져있다고 했을 때, 이진 분류에서와 똑같은 원리를 이용하여 max intra-class angle 이 min inter-class angle 보다 작도록 하는 $m$의 조건을 구할 수 있습니다. (Equation 7)

Equation 7


실험에서는 $m=4$ 를 사용했다고 합니다. 

Discussion

Softmax loss 를 통한 분류는 Figure 2에서 보았듯이 feature 가 내재적인 angular distribution 을 가지도록 훈련되어 angular boundary를 통해 클래스를 구분하기 쉽지 않습니다. 이에 SpherFace 에서는 $\Vert W\Vert=1$을 통해 angular boundary 를 유도하고 얼굴 인식을 위한 discriminative feature learning 을 위해 angular margin $m$를 추가했습니다. 특히, 이 방법은 triplet / contrastive loss 와 같이 훈련을 위해 positive / negative 데이터 pair 가 필요하지 않기 때문에 쉽게 사용할 수 있습니다.


다음 포스트

[Machine Learning/기타] - Face Recognition - SphereFace (2)

반응형

'Machine Learning Tasks > Face Recognition' 카테고리의 다른 글

Face Recognition - ArcFace (2)  (0) 2021.05.25
Face Recognition - ArcFace (1)  (0) 2021.05.23
Face Recognition - CosFace (2)  (0) 2021.05.23
Face Recognition - CosFace (1)  (0) 2021.05.23
Face Recognition - SphereFace (2)  (0) 2021.05.22