본문 바로가기
DeepLearing/논문 읽어보기

FaceNet 번역(translated fleely)

by Marades 2019. 2. 21.
반응형

FaceNet: A Unified Embedding for Face Recognitioni and Clustering


Abstract

얼굴 인식 분야는 최근 많은 발전이 있었음에도 불구하고 현재의 접근방식으로는 아직 어려움이 있습니다.이 논문에서 소개할 FaceNet이라는 시스템은 얼굴 이미지로부터 유클리드 공간(거리가 얼굴 유사도를 나타냄)의 관계를 직접적으로 학습합니다.
이 방법은 기존 접근 방법의 중간 Bottleneck Layer를 사용하는 대신에 이것을 임베딩하는데 최적화되어있는 Deep Conv Network를 사용하는 방법이며 여러 데이터셋에서 훌륭한 정확도를 보였습니다.

1. Introdution

이 논문에서 우리는 Face-Verification(동일인물인지), Recognition(누구인지), Clustering(공통되는 사람들 찾기) 세가지의 통합 시스템을 소개할 것입니다.
이 방법은 이미지마다 Deep Conv Net을 사용하여 유클리드 임베딩을 학습하는 것입니다.
임베딩 공간의 squared L2 Distances(유클리드 거리의 제곱)는 얼굴 유사도와 곧바로 일치합니다. 즉 같은 사람의 얼굴은 적은 거리를 가지고 다른 사람일 경우 큰 거리를 가지게 됩니다.
한 번 이 임베딩이 만들어지고 나면 앞서말한 문제들은 쉽게 해결할 수 있습니다.Face-Verification은 두 임베딩 사이의 거리가 일정 차이를 넘는지로, Recognition은 k-NN Classfication문제로, Clustering은 k-means나 집적(agglomerative) clustering 같은 것으로 바로 해결가능합니다.
이전의 deep net 기반 얼굴인식 접근은 known face identities의 집합으로 학습된 classification layer를 사용하였고 학습에 사용되었던 identities(개체?)들의 집합을 넘어 얼굴인식을 일반화하기 위한 방법으로 중간 병목층을 사용했습니다.이 접근의 단점은 이 방법의 indirectness(간접적임)과 비효율성입니다.(새로운 얼굴에 대해서 병목 representation이 잘 일반화 해주길 바래야 하며 병목층을 이용하기에 얼굴마다의 representatipon size가 보통 매우 크다). 최근에는 PCA(고차원의 데이터를 저차원으로 환원해주는 통계학적 기법)를 이용하여 이런 차원문제를 줄였습니다.
이러한 접근과는 대조적으로 FactNet은 LMNN(Large margin nearest neighbor)을 기반으로 triplet loss를 이용하여 128차원 임베딩이 아웃풋이 되도록 곧바로 학습합니다. 우리의 triplet은 2개의 일치하는 얼굴과 하나의 다른 얼굴로 이루어져 있으며 loss는 distance margin으로 일치하는 쪽을 불일치하는 쪽으로부터 분리해내는 데 초점을 두고 있습니다. thumbnails는 2D, 3D 정렬이 아니고(?) 얼굴영역에 딱 맞게 잘려 있으며(?) scale과 translation이 적용되어 있습니다.
어느 triplets을 사용할지는 좋은 성능을 내기 위해 매우 중요하며 curriculum learing으로 inspired됩니다. we present a novel online negative exemplar mining strategy which ensures consistently increasing difficulty of triplets as the network trains.clustering의 정확도를 높이기 위해선 한 사람의 임베딩에 대한 구형의 cluster를 encourage시키는 hard-positive mining techniques 을 찾아야합니다.
남은 논문에 대한 개요는 다음과 같습니다.
  • 2 : 이 분야에 대한 문헌 리뷰
  • 3
    • 3.1 : triplet loss 정의
    • 3.2 : novel triplet selection과 학습 과정에 대한 설명
    • 3.3 : 사용된 모델 구조
  • 4, 5 : 결과의 양과 질

2. Related Work

deep net을 이용한 최근의 작업과 비슷하게 우리의 접근 방식은 순수하게 image의 픽셀로부터 얻어진 표현을 학습하는 data driven method입니다. 우리는 engineered된 특성을 사용하기보다는 여러 포즈, 조명, 다양한 조건을 얻기 위해 large dataset of labelled faces를 사용합니다. 이 논문에서 우리는 최근에 컴퓨터 비전 커뮤니티에서 큰 성과를 거둔 두개의 다른 deep net구조를 살펴볼 것이며, 두개다 cnn을 사용했습니다.
  1. 첫번째 모델은 Zeiler&Fergus Model에 기반을 둔 multiple inter- leaved layers of convolutions, non-linear activations, local response normalizations, and max pooling layers로 이루어져 있다. 우리는 여기에 1x1xd의 conv layer를 추가하였다.
  2. 두번째 모델은 Inception model of Szegedy에 기반을 두었으며 최근에 ImageNet에 대해 성공적인 접근을 이루었다.
이 두 네트워크는 여러개의 다른 conv layer와 pooling layer를 병렬적으로 실행하는 mixed layers를 사용하며 그들의 결과를 이어붙입니다.

3. Method

FaceNet은 cnn을 사용하며 우리는 두개의 다른 핵심 구조를 논의했습니다. Zeiler&Fergus스타일의 network와 Inception model of Szegedy이 그것입니다.우리의 접근에서 가장 중요한 부분은 전체 시스템의 end-to-end learning에 있습니다. 우리는 얼굴인식, 검증, 클러스터링에서 이루고자 하는 바를 직접적으로 반영하는 triplet loss를 사용할 것입니다. 즉, 우리는 feature space속의 이미지 x로부터 embedding f(x)를 얻어서 같은 사람이면 sqaured distance가 작게, 다른 사람이면 크게 할 것입니다.비록 우리가 다른 loss와 직접적인 비교는 하지 않았지만 triplet loss가 얼굴검증에 더 적합하다고 생각합니다.
그러나 triplet loss는 한 사람과 다른 모든 얼굴로부터 나온 모든 얼굴쌍에 대해 margin을 강화하려고 합니다.

3.1 Triplet Loss

엠베딩은 f(x) ∈ R^d로 나타내어지며 이것은 이미지 x를 d차원의 유클리드 공간에 임베딩시킵니다. 우리는 이 임베딩의 결과가 거리가 1인 d차원 hypersphere에 존재하도록 합니다. 우리는 특정 사람의 앵커이미지가 다른 모든 positive이미지가 negative이미지보다 가깝다는 것을 보장하려고 합니다.

따라서 우리는 아래와 같은 식이 성립하길 원하고 이때 알파는 학습을 강화시키기 위한 margin입니다.

따라서 최소화시켜야하는 로스, 즉 cost function은 다음과 같습니다.

가능한 모든 삼중항들을 생성한다면 대부분의 삼중항들이 (1)의 식을 쉽게 만족시킬 것입니다. 이것은 학습에 도움이 되지 않습니다. hard triplet을 선택하는 것은 중요하며 그래야만 모델이 향상되는데 기여를 할 것입니다. 다음 섹션에서는 triplet selection에 대해 다르게 접근해볼 것입니다.

3.2 Triplet Selecttion

fast convergence를 보장하기 위해서 (1)의 식을 만족시키지 않는 triplet을 고르는 것은 중요합니다. 즉 d(A, P)(argmax)와 d(A, N)(argmin)의 값이 비슷한 것을 원합니다.모든 training data에 대해 argmax와 argmin의 값을 계산하는 것은 불가능합니다. 게다가 이것은 이것은 poor training을 야기할 것이며 mislabelled and poorly imaged face들이 hard triplet의 대부분일 것입니다. 이러한 이슈를 피하기 위한 두 가지 방법이 있습니다.
  1. recent network checkpoint를 이용하고 데이터의 일부로 argmin과 argmax를 계산해서 매 스텝마다 triplet을 offline으로 생성하는 것이다.
  2. triplet을 online으로 생산하는 것이다. 이건은 mini-batch에서 hard positive/negative예시를 고르는 것으로 이루어질 수 있다.
여기서 우리는 online generation에 집중할 것이며 몇천개의 examplar에서 large-mini-batch를 사용하여 argmin과 argmax를 mini-batch내에서 계산할 것이다.
의미있는 d(A, N)을 구하기 위해, 특정 인물에 대한 최소한의 exemplar개수가 mini-batch속에 존재해야한다. 우리의 실험에서, 우리는 훈련데이터를 mini-batch마다 한 사람당 약 40개의 얼굴로 묶었으며 랜덤으로 고른 negative faces를 각각의 mini-batch에 추가하였습니다.
여전히 hard negative는 고르면서, 우리는 hardest positive를 고르는 것 대신 mini-batch내의 모든 anchor-positive쌍을 골라 사용하였습니다. 우리는 mini-batch내의 hard anchor-positive쌍과 모든 anchor-positive쌍을 비교하지 않습니다. 하지만 우리는 all anchor-positive방법이 실제로 더 안정적이고 약간 더 빠르게 수렴한다는 것을 알았습니다.
우리는 offline generation또한 연구해보았고 이것은 더 작은 batch size를 사용하게 했습니다. 그러나 실험은 결정적이지 않았습니다.training에서 hardest negative를 고르는 것은 bad local minima에 도달하게 하였고 특히 붕괴된 모델을 야기시켰습니다.(f(x)=0) 이 문제를 완화시키기 위해서는 다음과 같은 식을 사용하는 x를 고르는 것이 도움이 될 것입니다.

우리는 이 negative exemplar를 semi-hard라고 부를 것입니다(anchor와 positive exemplar사이의 거리보다 더 멀지만 거리가 여전히 ahchor-positive distance와 가깝기 때문에 여전히 hard하다). 이 negatives는 내부의 margin α에 의존합니다.전에 언급했듯이, 올바른 삼중항 선택은 빠른 수렴을 위해 중요합니다. 먼저 small mini-batch를 사용할 것이고 이것은 SGD(Stochastic Gradient Descent)를 통한 수렴 속도를 향상시킬 것이다. 또한 실행 details는 10에서 수백개의 exemplars들로 이루어진 batch를 더 효율적으로 만들 것입니다.batch size에 대한 main constraint는 우리가 mini-batch로부터 hard relevant triplets를 고르는 방법입니다.우리는 대부분의 실험에서 약 1800exemplar정도의 batch size를 사용했었습니다.

3.3Deep Convolutional Network

모든 실험에서, 우리는 SGD를 이용한 CNN을 훈련시켰다. 대부분의 실험에서 learning rate는 0.05였고 모델을 마무리짓기 위해 더 낮추기도 하였습니다. 모델은 처음에 랜덤으로 초기화되었으며 cpu cluster에서 1000~2000시간 정도 훈련하였습니다. loss의 감소는 500시간이후부터 급격하게 줄어들었지만 추가적인 훈련은 성능을 올리기 위해 여전히 중요했고 margin α는 0.2로 정했습니다.
우리는 두가지 타입의 구조를 사용했고 그것들의 trade-off를 실험적인 면에서 더 상세히 실험했습니다. 이들의 실질적의 차이는 파라미터의 차이와 FLOPS(컴퓨터 성능)에 있었습니다. 가장 좋은 모델은 어디에 사용하냐에 따라 다를 것입니다. 데이터센터에서 실행되는 모델은 많은 파라미터를 가질 수 있고 매우 좋은 컴퓨터 성능을 필요로 합니다. 반면에 핸드폰에서 돌아가는 모델은 적은 파라미터를 가져야하고 폰 메모리에도 맞아야 합니다. 우리의 모든 모델은 non-linear activation함수 때문에 조정된 linear unit을 사용하였습니다.

  1. 위의 표에서 나타나듯 1x1xd conv layer를 원래의 Zeiler&Fergus 구조의 conv layer사이에 추가하였습니다. 총 1억 4천만개의 파라미터를 가지며 이미지마다 약 16억의 FLOPS가 필요합니다.
  2. 우리가 사용한 두번째 카테고리는 GoogLeNet style Inception models에 기반을 뒀다. 이 모델은 20X(6.6~7.5M)정도의 파라미터를 가지며 5X(500M~1.6B)정도의 더 적은 FLOPS까지만 필요합니다. 이 모델의 일부가 깊이나 필터 면의 개수 면에서 매우 크게 줄었기 때문에 폰에서도 실행 가능합니다.
  • NNS1 : 26M파라미터, 이미지마다 220M FLOPS 필요
  • NNS2 : 4.3M파라미터, 20M FLOPS 필요
  • NN2 : 가장 큰 모델 7.5M파라미터, 1.6B FLOPS
  • NN3 : 동일구조, input size 160x160으로 감소
  • NN4 : input size 96x96, 285M FLOPS

4.Datasets and Evaluation

우리는 4개의 데이터셋과 실제, 검증 때 사용한 유투브 얼굴에 대하여 우리의 방법을 평가했습니다. 다시 말해, 주어진 두 얼굴쌍에 대해 구해진 L2 distance가 두 얼굴이 같은지 다른지를 결정할 수 있는지를 보는 것입니다. 동일인물에 대한 모든 얼굴쌍은 P(same)으로 나타내어지고 모든 다른사람들에 대한 쌍은 P(diff)로 나타내어집니다.
같은 사람이라고 맞게 분류된 집합을 다음과 같이 정합니다.

비슷하게 같은 사람이라고 분류되었지만 잘못 분류된 집합은 다음과 같이 정합니다.

주어진 거리 d에 대해서 validation rate와 false accept rate는 다음과 같습니다.

4.1 Hold-out Test Set

우리는 같은 훈련셋과 같은 분포를 가지지만 다른 사람들로 이루어진 약 백만개의 이미지를 두었습니다. evaluation을 위해, 우리는 이를 20만개씩, 5개의 disjoint set으로 나누었습니다. far, val rate는 10만 X 10만 이미지 쌍에 대해 구해졌고 Standard error는 5개 Set을 통틀어 기록하였습니다.

4.2 Personal Photos

이것은 training set과 같은 분포를 가진 test set이지만 매우 명확한 label을 가지기 위해 수작업하였습니다. 이것은 약 1만2천개의 3사람의 사진 모음으로 이루어져있다.

4.3 Acaddemic Datatsets

LFW은 얼굴 검증을 위한 de-facto academic test set입니다. 우리는 unrestricted, labeled outside data의 표준 규약을 따랐으며 평균 분류 정확도와 기본 평균에러 또한 보고하였습니다.

5. Experiments

따로 언급하지 않은 경우, 우리가 8M명의 서로 다른 사람으로 이루어진 100M~200M의 training face thumbnails를 사용했습니다.face detector 는 각각이 이미지마다 실행되고 각 얼굴 주변에 딱 맞는 바운딩 박스가 생성되었습니다.이 face thumbnails들은 각 네트워크의 input size로 resize됩니다. input size는 우리의 실험에서 96x96~224x224pixels입니다.

5.1 Computation Accuracy Trade-off

실험에 대해 저 자세하기 들어가지 전에 정확도와 cpu필요 성능에 대해 아래에 서술하였습니다.

우리는 또한 모델의 파라미터 수와 정확도 간의 관계(장단점?)도 알아보았습니다. 그러나 이 경우는 trade-off가 분명하지 않았습니다. 예를 들어 NN1과 NN2는 비슷한 성능이고 필요cpu성능도 비슷하지만 파라미터수는 많이 차이가 납니다.그렇지만 파라미터수가 더 줄어든다면 특정 시점에서 성능은 줄어들 것이라 기대되며 다른 모델 구조 또한 아마 정확도의 손실 없이 파라미터 수를 더 줄일 수 있을 것입니다.

5.2 Effect of CNN Model

우리는 이제 우리의 4가지 모델의 성능에 대해서 얘기해볼 것입니다.한편으로 우리는 1X1 conv을 사용하는 Zeiler&Fergus기반 모델도 가지고 있다. 또한 우리는 모델 크기를 매우 줄인 Inceptioin 기반 모델도 가지고 있습니다. 종합적으로, 각 구조의 top model의 최종 성능은 비슷했습니다. 하지만 NN3같은 몇몇의 Inception기반 모델은 모델 크기와 필요 FLOPS를 줄였음에도 여전히 좋은 성능을 내었습니다.
우리의 personal photo test set에 대한 자세한 evaluation은 아래 있습니다.

가장 큰 모델이 작은 NNS2와 비교해서 급격한 정확도 향상을 보여주는 동안 후자는 30ms동안 또는 모파일 폰에서의 이미지에서도 face clustering을 하는 데에 충분한 정확도를 가지도록 실행될 수 있었습니다. ROC for FAR < 10^(-4)에서의 sharp dropdms 테스트 데이터 속의 잘못된 라벨링을 의미합니다. 매우 낮은 false accept rate에서, 하나의 잘못 라벨링된 이미지는 정확도 곡선에 메우 큰 영향을 끼치는 것을 알 수 있습니다.

5.3 Sensitivity to Image Quality

위의 표는 광범위한 이미지 크기에 대한 우리 모델의 굳건함을 보여줍니다. network는 놀랍게도 jpeg압축에 대해 굳건하고, jpeg퀄리티 20까지는 매우 잘 작동합니다. 성능저하는 120x120pixels까지뿐만이 아니라 80x80pixels까지도 매우 적습니다. 이는 수용가능한 성능입니다. 네트워크는 220x220 사이즈의 이미지로 학습되었기 때문에 이러한 점은 주목할만 합니다. 더 낮은 해상도의 얼굴이미지로 학습시긴카다면 이 범위는 더 향상시킬 수 있을 것으로 보입니다.

5.4 Embedding Dimensionality

우리는 매우 다양한 임베딩 차원을 실험했고 모든 실험에서 아래의 표 이외에도 128가지를 선택했었습니다.

누군가는 임베딩 차원이 클수록 작은거보다는 적어도 성능이 좋을 것이라고 기대했겠지만, 같은 정확도를 얻기 위해서 더 많은 훈련이 필요하기도 합니다. 즉, 보고된 성능의 차이는 통계적으로 중요하지 않다.
이렇게 말할 수도 있을 것입니다. 128차원의 float벡터를 사용하여 훈련하는 것은 128bytes로 정확도의 손실없이 양자화 될 수 있다는 것입니다. 그러므로 각각의 얼굴은 큰 규모의 clustering과 인식에 이상적인 컴팩트한 128차원 벡터로 표현되어질 수 있습니다. 작은 임베딩은 정확도의 손실이 존재하나 모바일 기기에서 사용되어질 수 있습니다.

5.5 Amount of Training Data

위의 표는 많은 양의 훈련 데이터에 대한 영향을 보여줍니다. 시간적 제약 때문에 이 evaluation은 더 작은 모델에서 진행되었지만 그 효과는 큰 모델에서보다 더 클 것이다. 4.2section의 test set에서, 천만개의 데이터를 사용했을 때, 정확도 향상이 더 잘이루어지는 것은 명백합니다. 백만개의 이미지를 사용했을 때와 비교하면 에러가 60%나 줄었으며, 더 큰 규모의 이미지를 사용했을 경우, 여전히 학습은 더 빨라지겟지만 그 효과는 점점 줄어들 것입니다.

5.6 Performance on LFW

우리는 unrestricted, labeled outside data에 대한 표준 규약을 사용하여 우리의 모델을 LFW를 사용해 평가하였습니다.L2거리의threshold를 고르기 위해 9개의 훈련셋이 나누어졌습니다. classification은 10개로 나누어진 테스트 set으로 실행되었고 8번째를 제외한 모든 테스트에 대해 선택된 최적의 threshold는 1.242였습니다.(8번째는 1.256)우리의 모델은 두가지 방법으로 평가되었습니다.
  1. Fixed center crop of the LFW provided thumbnail
  2. face detector를 주어진 LFW에 사용하였다. 만약 얼굴을 할당하는 데 실패하면(두 이미지에 대해 일어남) LFW alignment를 사용하였다.

위는 모든 실패 케이스들에 대한 개요를 나타냅니다.1번 방법을 썼을 때 우리는 98.87%의 정확도로 분류하는 데 성공하였고 2번 방법 때는 99.83%를 이루었습니다.

5.7 Performance on Youtube Faces DB

우리는 우리의 face detector가 각 영상에서 찾아낸 모든 첫 100프레임의 모든 쌍의 평균 유사도를 사용했습니다. 이는 95.12%의 정확도를 보였으며 첫 1000프레임을 사용했을 때 95.18%가 나왔습니다. Deepface의 91.4%와 비교했을 때 에러율이 거의 반이나 줄었고 DeepId2+와 비교하면 30%정도 에러율을 줄였습니다.

5.8 Face Clustering

우리의 임베딩은 같은 같은 사람들로 이루어진 그룹의 사람들을 clustering하는 데도 사용되었습니다. 순수한 verification에 비해 얼굴을 clustering함으로써 강요되는 할당의 제약은 놀라운 결과가 나오도록 한다.

위의 사진은 사진 모음의 사람들 속에 하나에 클러스터가 agglomerative(집적적인) 클러스터링을 사용하여 생성하였습니다.이것은 불가능한 occlusion, 빛, 자세, 나이에 따른 불가능한 일관성을 보여주는 명백한 경우입니다.

Summary

우리는 face verification을 위한 유클리드 공간에 직접적으로 임베딩하는 법을 학습하는 방법을 제시합니다. 이는 CNN bottleneck layer를 사용하거나 추가적인 후처리를 해야하는 다른 방법들과는 다릅니다. 우리의 end-to-end training은 초기 설정을 간단하게 하고 성능을 향상시키는 수작업과 같은 손실을 최적화하는 것을 직접적으로 보여줍니다.
우리 모델의 다른 장점은 최소한의 조절(얼굴 주변 영역을 정확히 자르는 것)만이 필요하다는 것입니다.복잡한 3D alignment를 실행하는 것을 예로 들 때, 우리는 similarity transform alignment를 실험했으며 이것이 성능을 약간 향상시킬 수 있음을 확인했습니다. 만약 더 복잡할 경우 이것이 가치가 있을지는 불확실합니다.
추후 작업에서는 에러케이스에 대한 더 나은 이해와 모델을 향상시키는 것, 그리고 모델 사이즈를 줄이고 cpu필요요건을 줄이는 것에 집중할 것이다. 우리는 현재의 매우 긴 훈련 시간을 개선하는 법 또한 알아볼 것입니다.


반응형