face recognition 최적화 계획과 기대 성능 지표 - 100-hours-a-week/5-yeosa-wiki GitHub Wiki
1. 최적화 계획 (단계별 조치)
항목 | 조치 | 도입 효과 |
---|---|---|
1. 이미지 다운로드 병렬화 | ThreadPoolExecutor 또는 aiohttp 기반 병렬 처리 |
GCS 다운로드 시간 감소 |
2. 고해상도 이미지 크기 제한 | 얼굴 인식 전 이미지 리사이즈 (예: 512×512) | HOG 탐지 속도 안정화 |
3. dlib 임베딩 모델 교체 | PyTorch 기반 ArcFace or InsightFace → 배치 처리 가능 |
속도 향상 |
4. 거리 계산 최적화 | faiss.IndexFlatIP + normalize 사용 |
cosine distance 처리 시간 수배 단축 |
5. DBSCAN 파라미터 튜닝 | eps , min_samples 실험 기반 보정 |
노이즈 제거, 과소/과대 그룹핑 방지 |
2. 기대 성능 지표
항목 | 기준 (최적화 전) | 목표 (최적화 후) | 설명 |
---|---|---|---|
총 처리 시간 (100장) | 약 60초 이상 | 약 30~35초 | GCS I/O + 임베딩 최적화 기준 |
GCS 다운로드 시간 | 10~15초 (직렬) | 4~6초 (병렬) | Thread 병렬 다운로드 기준 |
얼굴 인식 속도 | 0.6s/장 | 0.4s/장 | 해상도 축소 후 HOG 기준 |
임베딩 처리 | 약 0.3s/장 (dlib 단일) | 0.05~0.1s/장 (배치 처리) | PyTorch 모델 배치 입력 기준 |
distance 계산 시간 | O(n²) numpy |
FAISS로 2배 이상 개선 | cosine distance 병렬 계산 |
CPU 사용량 | 평균 300% 이상 | 200% 제한 (2코어 내) | cgroups 제어 적용 기준 |
메모리 사용량 | 최대 448MB+ | 512MB 제한 내 안정 | 거리 행렬 + 벡터 처리 기준 |
OOM 발생률 | 존재 | 0% | memory.limit_in_bytes 적용 |