2. Goal of FaceNet
• 다음을 만족하는 임베딩 함수를 찾는다
• Invariant
• 표정, 조명, 얼굴 포즈 …
• 같은 사람의 얼굴 임베딩은 가깝다
• 다른 사람의 얼굴 임베딩은 멀다
3. Goal of FaceNet
• 다음을 만족하는 임베딩 함수를 찾는다
• Invariant
• 표정, 조명, 얼굴 포즈 …
• 같은 사람의 얼굴 임베딩은 가깝다
• 다른 사람의 얼굴 임베딩은 멀다
• 이미 잘 되는 분야 아닌가?
4. Previous Works
• 얼굴 인식용 네트워크
• bottleneck layer의 벡터 사용
• 간접적
• Loss function은 분류에 대해 정의됨
• 벡터가 우리가 원하는 특성을 갖는다는 보장이 없다
• 비효율적
• 모르는 얼굴에 대해서도 잘 동작할까?
• 큰 사이즈 (1000s of dimension)
• 기타 노력들
• PCA로 벡터 축소
• 3D alignment
• Classification & Verification loss 혼합
5. FaceNet의 특징
• 작은 벡터
• 128D
• 원하는 임베딩 벡터의 특징을 바로 학습
• Triplet loss
• 같으면 가까워지고 다르면 멀어져라
• 복잡한 alignment가 필요 없다
• Scale, translation만 적용
• 많은 데이터로 invariance 특징을 학습함
• Data-driven
• End-to-end
6. 적용 분야
• Face verification
• 두 장의 사진이 같은/다른 사람이냐
• Face classification
• 가장 가까운 얼굴로 분류
• Nearest Neighbor
• Face clustering
• 임베딩이 Euclidean distance에 존재
• 기존 클러스터링 그대로 적용 가능
7. Triplet Loss
• 세 개의 데이터
• Anchor (𝑥 𝑎): 기준 얼굴
• Positive (𝑥 𝑝
): 기준과 같은 인물의 얼굴
• Negative (𝑥 𝑛): 기준과 다른 인물의 얼굴
• 같으면 가까워지고 다르면 멀어져라
8. Triplet Loss (Cont’)
• 우리의 바램
• Anchor와 Negative의 거리가
• Anchor와 Positive의 거리보다
• 최소한 𝛼만큼 멀리 있으면 좋겠다
9. Triplet Loss (Cont’)
• 우리의 바램
• Anchor와 Negative의 거리가
• Anchor와 Positive의 거리보다
• 최소한 𝛼만큼 멀리 있으면 좋겠다
• 수식
10. Triplet Loss (Cont’)
• Loss
• Hinge Loss: [𝑥]+= max(0, 𝑥)
• Margin 최대화
• Constraint:
• Euclidean space
• d-dimensional hypersphere
• 𝛼=0.2로 고정
11. Triplet Selection
• 두 명의 사람이 각각 10장의 사진을 가질 때
가능한 triplet 의 수
• #사람 X #Anchor X #Positive #Negative
• 2 X 10 X 9 X 10 = 1800
• 대량의 학습데이터에서는
• 너무 많은 triplet의 수
• 전부 학습에 도움이 되는 건 아니다
12. Triplet Selection (Cont’)
• 학습에 도움이 되는 triplet을 골라보자
• 어려운 문제를 풀수록 배우는게 많겠지?
• Hard positive: 가장 멀리 있는 positive
• Hard negative: 가장 가까이 있는 negative
• Mini-batch에서 골라보자
• 사이즈: 1,800
• 매 step마다 모든 데이터를 뒤질 수는 없지
• 잘못 레이블 된 데이터를 피할 수 있다
• 모든 데이터를 뒤질 경우 찾는 것:
• Hard positive: 다른 사람인데 같은 이름이 붙은 사진
• Hard negative: 같은 사람인데 다른 이름이 붙은 사진
13. Triplet Selection (Cont’)
• 학습 디테일
• Mini-batch에 약 40개의 identity
• Hard-positive 안씀
• 모든 positive 사용
• 안정적인 학습
• 초반에 약간 빠른 수렴
• 학습 초반에 Hard-negative는 너무 어렵다
• Local minima에 빠짐
• 좀 더 쉬운 Semi-hard 사용
• Anchor와 positive를 정한 뒤 positive보다 먼 negative 선택
• Positive와 거리가 비슷해서 hard라고 말할 수 있다
14. Models
• Category 1
• Zeiler&Fergus 기반 모델
• 1x1 convolution 추가
• NN1
• Category 2
• GoogleNet 기반 모델
• NN1과 비교
• 약 20배 적은 파라미터
• 최대 5배까지 적은 계산 량
• NN2~4
• 입력 크기: 220x220, 160x160, 96x96
• NNS1~4
• 모바일을 위한 작은 모델들
17. Experiments
• Train dataset: Unknown
• Test datasets: 자체 DB
• Hold-out test set
• Personal photos
• Evaluation
• Cross validation
• Test dataset로 부터 Same/Diff의 threshold d 학습
• Validation rate: VAL(d)
• 같은 사람을 같다고 예측한 비율
• False accept rate: FAR(d)
• 다른 사람을 같다고 예측한 비율
19. And the others
Image quality
(NN1, hold-out DB)
Embedding
Dimensionality
(NN1, hold-out DB)
Training
data size
(NN2 변형)
20. Experiments (Cont’)
• Test datasets
• LFW
• YouTube Faces Database
• Evaluation
• Cross validation
• Test dataset로 부터 Same/Diff의 threshold d 학습
• Train/validation set은 DB에서 지정