신경망 기반 얼굴 인식의 진화: DeepFace에서 ArcFace, 그리고 그 너머까지
소개
얼굴 인식은 얼굴 이미지로부터 사람의 신원을 식별하거나 검증하는 기술로, 컴퓨터 비전에서 가장 활발하고 영향력 있는 분야 중 하나입니다. handcrafted features에서 깊은 신경망으로의 전환은 정확도, 강건성, 확장성을 크게 향상시켰습니다.
Deep Learning 이전
Eigenfaces와 Fisherfaces (1990년대)
초기 얼굴 인식 방법은 얼굴 이미지를 고차원 벡터로 취급하고 차원 축소 기법을 사용했습니다. Eigenfaces(PCA)와 Fisherfaces(LDA)는 선구적 접근이었지만, 조명, 자세, 표정 변화에 민감했습니다.
로컬 특징 기술자 (2000년대)
LBPH와 Gabor Features 같은 방법은 국소 텍스처 정보를 활용해 강건성을 개선했습니다. 그러나 제약이 적은 실제 환경의 얼굴 인식에는 표현력이 충분하지 않았습니다.
Deep Learning 혁명
DeepFace (2014)
Facebook의 DeepFace는 LFW에서 97.35%를 달성하며 중요한 전환점이 되었습니다. 주요 혁신은 다음과 같습니다.
- 전처리 단계의 3D face alignment
- 400만 장 규모의 학습 데이터
- softmax classification 기반의 깊은 CNN architecture
- 학습된 특징이 handcrafted features를 능가함을 입증
DeepID 시리즈 (2014–2015)
Chinese University of Hong Kong의 DeepID 계열은 정확도를 더 끌어올렸습니다.
- 여러 얼굴 영역에서 특징을 추출하는 multi-patch 접근
- identification과 verification의 joint learning
- DeepID2+로 LFW 99.47% 달성
FaceNet (2015)
Google의 FaceNet은 triplet loss를 도입했습니다.
- 유클리드 공간에서 embedding을 직접 학습
- 효율적인 triplet selection 전략
- 대규모 검색에 적합한 128차원 embedding
- LFW 99.63% 달성
ArcFace 혁명
ArcFace: Additive Angular Margin Loss (CVPR 2019)
InsightFace 팀이 개발한 ArcFace는 단순하면서도 매우 효과적인 loss function을 제시했으며, 오늘날 얼굴 인식 학습의 사실상 표준으로 자리 잡았습니다.
핵심 혁신
ArcFace는 정규화된 hypersphere 상에서 feature vector와 정답 class center 사이의 각도에 angular margin을 더합니다. 손실 함수는 다음과 같습니다.
L = -log(e^(s·cos(θ_yi + m)) / (e^(s·cos(θ_yi + m)) + Σ e^(s·cos(θ_j))))
여기서 m은 additive angular margin, s는 scaling factor입니다.
ArcFace가 효과적인 이유
- 기하학적 해석 가능성: angular margin이 hypersphere 위에서 명확한 의미를 가짐
- 안정적인 학습: 다른 margin-based loss보다 안정적으로 수렴
- 강한 일반화 성능: 클래스 내 응집도와 클래스 간 분리를 동시에 강화
영향과 확산
ArcFace는 현재 가장 널리 채택된 얼굴 인식 loss function 중 하나입니다.
- 8,000회 이상의 인용
- InsightFace와 다양한 framework에 통합
- NIST FRVT 상위 결과의 기반 기술
대규모 학습으로의 확장: Partial FC (CVPR 2022)
초대형 분류층 최적화
얼굴 인식 데이터셋이 수백만 정체성으로 확장되면서 분류층은 병목이 되었습니다. Partial FC는 이를 다음과 같이 해결합니다.
- 각 iteration에서 class center의 일부만 무작위 샘플링
- 단일 머신에서도 10M+ identities 학습 가능
- 정확도를 유지하면서 메모리와 계산량을 크게 절감
- 실제 production 모델에 필수적인 설계
노이즈 대응: Sub-center ArcFace (ECCV 2020)
노이즈 데이터에 강한 학습
현실의 학습 데이터에는 잘못된 라벨이 포함되기 쉽습니다. Sub-center ArcFace는 다음 방식으로 이를 다룹니다.
- 클래스마다 하나가 아니라 K개의 sub-center를 학습
- dominant sub-center가 깨끗한 샘플을 표현
- 비지배적 sub-center가 노이즈 샘플을 흡수
- 자동 노이즈 탐지와 정리에 도움
현재의 기술 수준
InsightFace Recognition Pipeline
InsightFace는 완전한 얼굴 인식 pipeline을 제공합니다.
from insightface.app import FaceAnalysis
import numpy as np
app = FaceAnalysis(name='buffalo_l')
app.prepare(ctx_id=0, det_size=(640, 640))
# Extract embeddings
face1 = app.get(img1)[0]
face2 = app.get(img2)[0]
# Compute similarity
sim = np.dot(face1.embedding, face2.embedding)
sim = sim / (np.linalg.norm(face1.embedding) * np.linalg.norm(face2.embedding))
print(f"Similarity: {sim:.4f}")
Model Zoo
InsightFace의 model zoo는 다양한 배포 요구 사항에 맞춘 사전학습 모델을 제공합니다.
| Model | Backbone | LFW | CFP-FP | AgeDB-30 |
|---|---|---|---|---|
| buffalo_s | MobileFaceNet | 99.33% | 95.51% | 95.13% |
| buffalo_l | ResNet-50 | 99.83% | 99.50% | 98.23% |
| antelopev2 | ResNet-100 | 99.80% | 99.47% | 98.10% |
미래 방향
이 분야는 다음 방향으로 계속 발전하고 있습니다.
- Masked face recognition: 부분 가림 상황에서의 강건한 인식
- Cross-age recognition: 연령 차이를 넘어서는 안정적 식별
- Privacy-preserving recognition: homomorphic encryption 및 federated learning 활용
- 3D face recognition: 깊이 정보를 활용한 추가 성능 향상
결론
Eigenfaces에서 ArcFace에 이르기까지 얼굴 인식은 극적으로 발전해 왔습니다. InsightFace의 ArcFace, Partial FC, Sub-center ArcFace는 이 진화의 중심에 있으며, 연구와 산업 모두에 현대적 얼굴 인식 시스템을 위한 강력한 기반을 제공합니다.