포토북 30장 자동 추천 — 새 접근 제안

2026-04-26 · 작성: AI팀 · 선행 보고서: 포토북 IQA PoC 분석 보고서

📌 요약

PoC 분석에서 단일 IQA 모델 교체로는 추천 문제가 안 풀린다는 사실이 정량 입증됐다. 새 접근은 "품질 단일 점수"를 버리고 멀티 신호 조합 시스템으로 간다. 핵심 신호 5가지: 중복 제거 · 얼굴/인물 · 시간 클러스터 · DPP 다양성 · memorability.

1. 왜 단일 IQA로 안 되는가 (선행 보고서 요약)

2. 제안 파이프라인

5단계 멀티 신호 조합. 각 단계는 독립 검증 가능하고 점진 도입할 수 있다.

Step 1 — 중복/얼굴 검출 (입력 정제)

중복 제거: 같은 컷이 3~5장 연속으로 찍힌 경우(셀카 배치 모드, 자동 연사) 한 장만 남긴다.

얼굴 검출: 인물 사진 vs 풍경/사물 사진 분류 + 인물 식별.

출력: 입력 100~500장 → 중복 제거 후 80~400장 + 각 사진의 (얼굴 수, 인물 ID, 인물 면적 비율).

Step 2 — TOPIQ-NR-FACE 하드 품질 컷오프

PoC에서 유일하게 약한 신호 발견된 모델. 메인 점수가 아닌 "최소 품질 통과" 필터로 활용한다.

주의: 단독으로 30장을 못 정한다. 필터링 후보군 80~400장 → 50~300장 정도로 감소.

Step 3 — 시간/공간 클러스터링

같은 행사/시퀀스의 사진을 묶어 대표컷을 뽑는다. 한 시퀀스에서 너무 많이 뽑히는 걸 방지.

장점: 내장 메타데이터(EXIF)만으로 70% 효과. 추가 모델 추론 없음.

Step 4 — DPP 다양성 selection (핵심)

Determinantal Point Process — 품질 × 다양성을 동시에 최적화하는 부분집합 선택 알고리즘. 영상 요약/추천 시스템에서 검증된 표준 기법.

출력: K=30 후보 (1차).

Step 5 — 인물 균등 + memorability 보정

DPP만으로 풀리지 않는 인물 분포를 후처리한다.

3. 구현 우선순위 (Phase별)

Phase목표측정 지표일정
Phase 1
다양성 검증
Step 1 (중복/얼굴) + Step 4 (DPP) 단순 버전 PoC. 같은 3,985장에서 "사용자 30장과 얼마나 일치" Recall@30 (사용자 수록 30장 중 추천에 포함된 개수) 3일
Phase 2
클러스터링
Step 3 (EXIF 시간 + CLIP 시각 클러스터) 추가. Phase 1 결과에 클러스터 제약 추가하여 재측정 Recall@30 + 클러스터 분포 (한 클러스터당 평균 K) 5일
Phase 3
DPP 통합
Step 4 정식 DPP 알고리즘 + Step 2 품질 필터. 임계값 튜닝. Phase 2 대비 +N% 개선 목표 Recall@30 + Diversity score (intra-K 평균 거리) 5일
Phase 4
운영 통합
image-api 또는 별도 서버에 Step 1~5 파이프라인 통합. SLA 측정 (100장 기준 목표 5초 이내). p99 latency, qps_user, AB-test 추천 채택률 7일

4. 평가 지표 재정의

이번 PoC에서 AUC가 정확한 측정 도구가 아니었다. positive/negative는 단순 binary지만 추천 문제는 ranking + 부분집합 선택이다. 새 접근에선 다음 지표 사용:

지표정의목표
Recall@30사용자가 실제 수록한 30장 중 추천 30장에 포함된 개수 / 30≥ 0.5 (Phase 1) → 0.7 (Phase 4)
Diversity@30추천 30장 간 평균 pairwise distance (CLIP cosine)사용자 실제 수록의 +10% 이상
Cluster coverage추천에 포함된 시간 클러스터 수 / 전체 클러스터 수≥ 0.8
Person coverage등장 인물 ID 수 / 전체 인물 ID 수≥ 0.9
p99 latency100장 갤러리 → 추천 30장까지 응답 시간≤ 5초

5. 데이터셋 확대 검토

현재 PoC: 2일치 30 프로젝트 / 3,985장.
Phase 1 시작 전에 14일치(약 200 프로젝트, 25,000~35,000장)로 확대 권장. 이유: 기존 IDC 파서(extract_pos_neg.py) 재활용 — 추가 작업 1~2일.

6. 운영 배포 시 비용/구조

구성리소스월 비용
EC2 추론 (g6.xlarge × 1)L4 24GB, Step 1~5 통합약 $720
(현행 image-api 재활용 시)0 추가 비용$0
스토리지 (사용자 임베딩 캐시)S3 또는 ChromaDB~$30

현행 image-api에 신규 엔드포인트 /recommend/30로 통합 가능. 별도 인스턴스 없이도 운영 가능.

7. 의사결정 요청

8. 참고 자료