본문 바로가기

논문리뷰

[논문리뷰]FaceNet: A Unified Embedding for Face Recognition and Clustering

[논문리뷰]FaceNet: A Unified Embedding for Face Recognition and Clustering

Abstract

  • Face 이미지를 Euclidian space(거리가 곧 유사도)로 mapping하는 Facenet을 제안
  • Loss function으로 triplet loss를 사용
  • LFW dataset에서 accuracy 99.63%, Youtube Faces DB에서 accuracy 95.12%로 SOTA

1. Introduction

이 논문에서 verification, recognition, clustering을 수행하는 unified system을 소개한다. Face image를 Euclidean embedding하는 방법을 배움으로서 거리를 유사도로 사용할 수 있다. 즉, 같은 사람끼리는 가까운 거리에 embedding되고, 다른 사람끼리는 먼 거리에 embedding 된다.

이전의 face recognition 방법은 classification layer와 bottle neck layer를 이용했다. 이 방법은 간접적이고, 비효율적이다. Bottle neck layer를 사용한 representation size는 일반적으로 매우 크다(1000 dimensions 이상). 하지만 triplet loss를 사용하는 FaceNet은 128-D embedding으로 작고, 효율적이다.

이 논문에서 triplet은 두 장의 같은 사람 이미지와 한 장의 다른 사람 이미지로 구성된다. 좋은 성능을 위해 triplet을 구성하는 사람을 선정하는 것은 중요하다. Curriculum learning에 영감을 받아, 난이도를 지속적으로 증가시키는 방향으로 triplet을 구성한다.

2. Related Work

Deep network를 사용한 face recognition 방법을 소개한다.

3. Method

3.1 Triplet Loss

xx라는 이미지는 function ff를 통해 f(x)f(x)로 embedding 된다. 어떤 사람의 이미지 xiax_i^a(anchor)와 동일한 사람의 이미지 xipx_i^p(positive)에 대해서는 최대한 가까이 위치하고, 다른 사람의 이미지 xinx_i^n(negative)에 대해서는 멀리 위치하기를 원한다. 이를 수식으로 나타내면 아래와 같다. α\alpha는 positive와 negative 사이의 margin이다.

f(xia)f(xip)22+α<f(xia)f(xin)22\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{p}\right)\right\|_{2}^{2}+\alpha<\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{n}\right)\right\|_{2}^{2}

이를 Loss로 나타내면 아래와 같다. 논문에서는 α=0.2\alpha=0.2를 사용했다.

L=iN[f(xia)f(xip)22f(xia)f(xin)22+α]L = \sum_{i}^{N}\left[\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{p}\right)\right\|_{2}^{2}-\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{n}\right)\right\|_{2}^{2}+\alpha\right]

위의 식을 random하게 선정된 triplet을 사용하면 학습 속도가 느리다. 따라서 triplet을 선정하는 방식이 필요하다.

3.2 Triplet Selection

빠른 수렴을 위해서는 적당한 triplet을 뽑는 것이 중요하다. 적당한 triplet을 뽑기 위해서는 아래와 같은 조건을 만족해야한다.

  • select xip whereargmaxxipf(xia)f(xip)22\text{select }x_i^p \space\text{where} \operatorname{argmax}_{x_{i}^{p}}\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{p}\right)\right\|_{2}^{2}
  • select xin whereargminxipf(xia)f(xin)22\text{select }x_i^n \space\text{where} \operatorname{argmin}_{x_{i}^{p}}\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{n}\right)\right\|_{2}^{2}

이렇게 뽑힌 이미지들을 hard positives, hard negatives라고 한다. 하지만 위의 방식으로 전체 training set에 대해 argmin과 argmax를 계산하는 것은 불가능하다. 아래의 두 가지 대안이 있다.

  • 가장 최근의 network를 이용하고, 데이터의 일부에 대해서 n steps마다 새로운 triplets을 만든다.
  • Minibatch의 데이터에 대해서만 triplet을 뽑는다.

이 논문에서는 아래 방법을 사용한다. Anchor-positive distance가 유의미가 representation을 배우기 위해서는 minibatch에 충분한 수의 positive 이미지가 존재해야하므로 미니배치에 40장 정도의 동일한 클래스의 face image를 넣는다.

학습초기에 Hardest negatives만 뽑는 경우에는 모델이 local minima에 빠질 수 있다. 때문에 초기에는 수식을 만족하는 semi-hard negatives를 뽑는다.

f(xia)f(xip)22<f(xia)f(xin)22\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{p}\right)\right\|_{2}^{2}<\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{n}\right)\right\|_{2}^{2}

3.3 Deep Convolutional Networks

아래의 두 가지 network 구조를 사용한다.

  1. 일반적인 convolution 구조(convolution - activation - normalization - pooling), 이 구조에 러 층의 1×1×d1\times1\times d convolution layer를 추가
  1. Inception model(한 층에 다양한 크기의 convolution filter를 사용)

모델에는 L2 normalization이 들어가는데, 이는 모든 feature representation을 동일한 크기의 구에 놓는 것이다.(비유: 실제로는 3차원 보다 크기때문에 구는 아니다.)

4. Datasets and Evaluation

LFW, Youtube Faces dataset에 대해서 face verification task(두 사람이 같은 사람인지를 추정하는 task)를 수행했다. Face images의 L2 distance D(xi,xj)D(x_i, x_j)가 threshold dd보다 작으면 같은 사람 크면 다른 사람으로 판단했다.

  • True accepts : 맞게 판단된 사람

    TA(d)={(i,j)Psame , with D(xi,xj)d}\operatorname{TA}(d)=\left\{(i, j) \in \mathcal{P}_{\text {same }}, \text { with } D\left(x_{i}, x_{j}\right) \leq d\right\}

  • False accepts : 틀리게 판단된 사람

    FA(d)={(i,j)Pdiff , with D(xi,xj)d}\mathrm{FA}(d)=\left\{(i, j) \in \mathcal{P}_{\text {diff }}, \text { with } D\left(x_{i}, x_{j}\right) \leq d\right\}

평가 기준으로 VAL과 FAR이 사용되었다.

VAL(d)=TA(d)Psame ,FAR(d)=FA(d)Pdiff \operatorname{VAL}(d)=\frac{|\operatorname{TA}(d)|}{\left|\mathcal{P}_{\text {same }}\right|}, \quad \operatorname{FAR}(d)=\frac{|\mathrm{FA}(d)|}{\left|\mathcal{P}_{\text {diff }}\right|}

5. Experiments

5.6,7 Performance on LFW, Youtube Faces DB

LFW : 99.63% of classification accuracy

Youtube Faces DB : 95.12% of classification accuracy

5.8 Face Clustering

Occlusion, lighting, pose, age에 상관없이 동일한 사람이 clustering되었다.

6. Summary

  • Face image를 직접적으로 Euclidian space에 embedding하는 approach를 제안