iBetter Books
수정

모델과 검출기를 인자로 갈아 끼울 수 있다는 것은, 곧 직접 비교해 보고 고를 수 있다는 뜻입니다. 이 장에서는 여러 조합을 같은 데이터로 벤치마킹해 정확도·속도·메모리를 견주고, "내 상황에서 무엇을 고를지"를 근거 있게 결정하는 법을 익힙니다. PART 02의 검출기 벤치마킹과 같은 정신을 인식 전체로 확장합니다.

무엇을 재고, 어떻게 보나

벤치마킹의 기준은 세 가지입니다. PART 02·05에서 본 것과 같습니다.

  • 정확도: 같은 사람을 맞히고 다른 사람을 거르는 능력
  • 속도: 한 번의 verify/find에 걸리는 시간
  • 메모리·비용: 가중치 크기와 임베딩 차원(저장·검색 비용)

핵심은 이 셋이 맞바꿈이라는 점입니다. ArcFace는 정확하지만 무겁고, SFace는 가볍지만 어려운 조건에서 덜 정확합니다. 그래서 "최고"가 아니라 "내 요구를 만족하는 가장 싼 조합"을 찾는 것이 목표입니다.

속도를 직접 재는 코드

같은 사진 쌍을 여러 모델로 검증하며 시간을 잽니다. DeepFace의 결과에는 time이 들어 있어 그대로 활용할 수 있습니다.

# 파일: bench_models.py"""인식 모델별 검증 시간을 같은 사진으로 비교한다."""from deepface import DeepFaceMODELS = ["SFace", "Facenet512", "ArcFace", "VGG-Face"]# 첫 호출은 가중치 다운로드·로딩이 섞이므로, 워밍업 후 측정한다for m in MODELS:    DeepFace.verify("a.jpg", "b.jpg", model_name=m,                    detector_backend="yunet")          # 워밍업print(f"{'모델':12s} {'시간(s)':>8s}  판정")for m in MODELS:    r = DeepFace.verify("a.jpg", "b.jpg", model_name=m, detector_backend="yunet")    print(f"{m:12s} {r['time']:>8.2f}  {r['verified']}")

검출기를 yunet으로 고정하고 인식 모델만 바꾸면, 인식 모델 사이의 속도 차이만 떼어 볼 수 있습니다. PART 02의 벤치마크에서처럼 첫 호출(워밍업)을 측정에서 빼는 것이 중요합니다. 가중치 다운로드·로딩 시간이 섞이면 결과가 왜곡되기 때문입니다.

한눈에 보는 선택 가이드

직접 재 보면 기기마다 절대 시간은 다르지만, 모델 사이의 경향은 대체로 일정합니다. CPU 기준의 일반적 경향과 선택 가이드를 정리하면 다음과 같습니다.

모델 정확도 속도 임베딩 차원(비용) 언제
SFace 보통 빠름 128 (낮음) 실시간·대규모 저장
Facenet512 높음 보통 512 (중간) 정확도·비용 균형
ArcFace 매우 높음 느림 512 (중간) 정확도 최우선
VGG-Face 보통~높음 느림 4096 (높음) 기본값(권장 교체)
상황 검출기 + 인식 모델
실시간 웹캠 yunet + SFace
일반 서비스(균형) yunet + Facenet512
정확도 최우선(등록·검색) retinaface + ArcFace
수십만 명 대규모 검색 yunet + SFace(128차원으로 저장·검색 가벼움)

의사결정의 순서

모델 선택은 다음 순서로 좁히면 헷갈리지 않습니다.

flowchart TB A[요구 정확도 정하기] --> B[그 정확도 내는 모델 후보] B --> C[속도 제약 통과하는가?] C -->|예| D[저장·검색 비용 가장 낮은 것 선택] C -->|아니오| E[더 가벼운 모델/검출기로]

먼저 "어느 정도 정확도가 필요한가"를 정하고, 그 조건을 만족하는 후보 중에서 속도와 비용이 가장 유리한 것을 고릅니다. 정확도부터 시작하는 이유는, 정확도가 부족하면 아무리 빨라도 쓸모가 없기 때문입니다.

실무 팁. 벤치마크는 반드시 내 실제 데이터로 하세요. 공개 벤치마크 순위는 깨끗한 데이터셋 기준이라, 내 카메라·내 조명·내 사용자에서는 순위가 바뀔 수 있습니다. 후보를 두세 조합으로 좁힌 뒤, 운영 환경과 비슷한 사진 수십~수백 장으로 정확도와 시간을 직접 재 보는 것이 가장 확실한 근거입니다.

이 장에서 기억할 것

모델·검출기 교체가 쉬운 DeepFace에서는 직접 벤치마킹해 고르는 것이 정석입니다. 정확도·속도·비용은 맞바꿈이라 "최고"가 아니라 "요구를 만족하는 가장 싼 조합"을 찾으며, 요구 정확도 → 속도 제약 → 비용 순으로 좁힙니다. 일반적으로 실시간은 yunet+SFace, 균형은 yunet+Facenet512, 정확도 최우선은 retinaface+ArcFace가 무난한 출발점입니다. 다음 장에서는 DeepFace의 대가인 TensorFlow 의존과 설치 함정을 다룹니다.