인식 모델만큼이나 중요한 것이 그 앞단의 검출기입니다. 얼굴을 잘못 찾거나 못 찾으면 아무리 좋은 인식 모델도 소용없기 때문입니다. DeepFace는 검출기도 detector_backend 인자 하나로 교체할 수 있습니다. PART 02에서 직접 다룬 검출기들이 여기서 선택지로 다시 등장합니다.
detector_backend 인자
verify·find·represent·analyze는 모두 detector_backend 인자를 받습니다. PART 02에서 하나씩 익힌 검출기들을 이름으로 골라 쓰면 됩니다.
# 파일: switch_detector.pyfrom deepface import DeepFacefor backend in ["opencv", "yunet", "mediapipe", "retinaface"]: r = DeepFace.verify("a.jpg", "b.jpg", model_name="Facenet512", detector_backend=backend) print(f"{backend:12s} verified={r['verified']} time={r['time']:.2f}s")
검출기만 바꿔도 처리 시간과, 어려운 사진에서의 성공 여부가 달라집니다. 인식 모델(model_name)은 그대로 두고 검출기(detector_backend)만 바꿔 비교하면, 검출 단계가 전체에 미치는 영향을 깔끔하게 떼어 볼 수 있습니다.
PART 02 검출기와의 대응
DeepFace의 검출 백엔드는 PART 02에서 배운 검출기들과 그대로 대응합니다.
| detector_backend | PART 02에서 | 성격 |
|---|---|---|
opencv |
Haar Cascade | 빠르지만 정면 위주 |
ssd |
OpenCV DNN(SSD) | 보통 |
yunet |
YuNet | 내장·균형·랜드마크 |
mediapipe |
MediaPipe | 실시간 경량 |
mtcnn |
MTCNN | 정확·느림 |
retinaface |
RetinaFace | 최고 정확·가장 느림 |
yolov8 |
YOLO 얼굴 | 빠르고 정확(가중치별) |
즉 PART 02에서 만든 "검출기 선택 감각"이 DeepFace에서 그대로 통합니다. 정면 위주의 빠른 처리는 opencv나 yunet, 어려운 각도까지 정확히 잡아야 하면 retinaface를 고르는 식입니다.
기본값의 함정
DeepFace의 기본 검출기는 opencv(Haar)입니다. PART 02에서 보았듯 Haar는 빠르지만 정면에 약하고 오검출이 있습니다. 그래서 기본값 그대로 쓰다가 "옆얼굴을 못 찾는다", "엉뚱한 곳을 얼굴로 잡는다" 같은 문제를 겪기 쉽습니다.
대부분의 경우 기본값을 retinaface(정확도 우선)나 yunet(균형)으로 바꾸는 것만으로 인식 정확도가 함께 올라갑니다. 인식이 잘 안 될 때 인식 모델만 의심하기 쉽지만, 실제 원인이 검출 단계인 경우가 의외로 많습니다.
# 권장: 검출기를 명시적으로 더 정확한 것으로result = DeepFace.find("query.jpg", "known/", model_name="ArcFace", detector_backend="retinaface")
실무 팁. 검출과 인식은 속도·정확도 예산을 나눠 쓰는 관계입니다. 둘 다 가장 무거운 것(retinaface + ArcFace)을 쓰면 정확하지만 느립니다. 한정된 시간 안에 처리해야 한다면, "검출은 빠른 yunet, 인식은 정확한 ArcFace"처럼 단계별로 다르게 배분하는 전략이 효과적입니다. 어느 단계가 병목인지는
result["time"]을 보며 판단하세요.
이 장에서 기억할 것
DeepFace는 detector_backend 인자로 검출기를 교체하며, 그 선택지는 PART 02에서 배운 Haar·YuNet·MediaPipe·MTCNN·RetinaFace·YOLO와 그대로 대응합니다. 기본값 opencv(Haar)는 정면에 약하니, 어려운 입력에서는 yunet이나 retinaface로 바꾸면 인식 정확도까지 함께 오릅니다. 검출과 인식에 속도·정확도 예산을 나눠 배분하는 것이 요령입니다. 다음 장에서는 이 교체 가능성을 활용해 모델·검출기를 벤치마킹하고 선택하는 법을 다룹니다.