DeepFace의 진짜 강점은 인식 모델을 인자 하나로 바꿀 수 있다는 점입니다. PART 04에서 본 모델 계보(FaceNet·ArcFace 등)를 실제로 갈아 끼우며 비교할 수 있습니다. 이 장에서는 model_name 인자로 인식 백엔드를 교체하는 법과, 어떤 모델이 무엇에 강한지를 정리합니다.
인자 하나로 모델 바꾸기
verify·find·represent는 모두 model_name 인자를 받습니다. 이 값만 바꾸면 내부 인식 모델이 통째로 교체됩니다.
# 파일: switch_model.pyfrom deepface import DeepFacefor model in ["VGG-Face", "Facenet512", "ArcFace", "SFace"]: r = DeepFace.verify("a.jpg", "b.jpg", model_name=model) print(f"{model:12s} verified={r['verified']} " f"distance={r['distance']:.4f} threshold={r['threshold']}")
같은 두 사진을 여러 모델로 검증해 보면, 모델마다 거리와 임계값이 다르게 나옵니다. 중요한 것은 거리의 절대값을 모델끼리 비교하면 안 된다는 점입니다(PART 04에서 강조한 "같은 모델끼리만 비교"). 대신 각 모델은 자기에게 맞는 threshold를 함께 주므로, verified라는 최종 판정으로 비교하면 됩니다.
주요 인식 모델 비교
DeepFace가 제공하는 대표 모델을 정리하면 다음과 같습니다.
| 모델 | 임베딩 차원 | 특징 | 추천 상황 |
|---|---|---|---|
| VGG-Face | 4096 | DeepFace 기본, 무난 | 일반·입문 |
| Facenet512 | 512 | FaceNet 계열, 정확·균형 | 정확도 필요 |
| ArcFace | 512 | 최신 고정확도(PART 04 계보) | 정확도 최우선 |
| SFace | 128 | 가볍고 빠름(PART 05에서 다룸) | 속도·경량 |
| Dlib | 128 | face_recognition과 같은 계열 | 호환·비교용 |
PART 04의 계보를 떠올리면 선택이 쉬워집니다. 가볍게는 SFace, 균형은 Facenet512, 최고 정확도는 ArcFace입니다. DeepFace의 기본값인 VGG-Face는 무난하지만 임베딩이 4096차원으로 커서 저장·검색 비용이 큽니다. 그래서 실무에서는 정확도와 비용의 균형이 좋은 Facenet512나 ArcFace를 기본으로 바꿔 쓰는 경우가 많습니다.
같은 모델을 PART 05와 비교하기
흥미로운 점은 DeepFace의 SFace와 PART 05의 OpenCV SFace가 같은 모델이라는 것입니다. 또 DeepFace의 Dlib 모델은 PART 05 face_recognition과 같은 계열입니다. 즉 PART 05에서 직접 다룬 인식기들을 DeepFace 안에서 인자 하나로 불러 쓸 수 있습니다.
| PART 05 | DeepFace에서 |
|---|---|
| OpenCV SFace | model_name="SFace" |
| face_recognition(dlib) | model_name="Dlib" |
차이는 사용 방식입니다. PART 05는 라이브러리를 직접 다뤄 동작 원리가 더 잘 보이고, DeepFace는 인자 하나로 추상화해 여러 모델을 손쉽게 갈아 끼울 수 있습니다. 원리를 배울 때는 직접, 모델을 비교·선택할 때는 DeepFace가 편합니다.
실무 팁. 모델을 고를 때 "최고 정확도 모델"을 무조건 고르지 마세요. ArcFace가 가장 정확하지만 더 무겁고 가중치도 큽니다. 실시간이 중요하거나 임베딩을 수십만 개 저장해야 한다면, 차원이 작은 SFace(128)나 Facenet512가 저장·검색 비용에서 훨씬 유리합니다. "내 정확도 요구를 만족하는 가장 가벼운 모델"이 보통 정답입니다. 이 판단의 근거는 다음 두 장의 벤치마킹에서 만듭니다.
이 장에서 기억할 것
DeepFace는 model_name 인자 하나로 인식 모델(VGG-Face·Facenet512·ArcFace·SFace·Dlib 등)을 교체합니다. 거리 절대값은 모델끼리 비교하지 말고 verified로 비교하며, PART 04 계보대로 가벼움(SFace)·균형(Facenet512)·최고정확도(ArcFace)로 고릅니다. PART 05의 SFace·dlib도 DeepFace 안에서 그대로 부를 수 있습니다. 다음 장에서는 인식 모델이 아니라 그 앞단의 검출기를 교체합니다.