직접 만든 AI 얼굴 분석 스위트 - 제가 배운 것들
요약
본 글은 AI 얼굴 분석 스위트 'StarDoppel'의 개발 과정을 다루며, 단순한 연예인 닮은꼴 검색을 넘어선 포괄적인 얼굴 구조 분석 방법을 제시합니다. 랜드마크 감지 및 비율 추출 기술을 기반으로 얼굴형, 대칭성, 황금 비율 등 다양한 측면을 측정하는 여러 기능을 구현했습니다.
핵심 포인트
- 단순 유사도 비교를 넘어 다차원적 얼굴 특징 분석 가능
- 랜드마크 감지를 핵심 파이프라인으로 활용하여 확장성 확보
- 얼굴 구조 및 비례에 대한 정량적 점수(Score) 산출 방식 제시
'어떤 연예인과 닮았을까?' 도구의 문제점
만약 당신이 연예인 닮은꼴 검색 도구를 찾아본 적이 있다면, 대부분 다음 두 가지 유형 중 하나에 속한다는 것을 알아차렸을 것입니다. 자신의 얼굴에 대해 다섯 가지 모호한 질문(
- 랜드마크 감지(Landmark detection) — 사진이 업로드되면 모델은 얼굴의 랜드마크(눈, 코, 턱선, 입술 등)와 그 상대적 위치를 매핑합니다.
- 비율 추출(Proportion extraction) — 이 랜드마크들은 일련의 비율 측정값으로 변환됩니다 (사진마다 크기와 각도가 크게 다르기 때문에 원시 픽셀 거리는 아님).
- 거리 점수 산출(Distance scoring) — 각 얼굴은 원시 거리 계산을 사용하여 참조 데이터베이스와 비교됩니다. 당신의 측정값과 주어진 참조 얼굴 사이의 거리가 작을수록 유사성 백분율이 높아집니다.
- 순위 매기기(Ranking) — 특히 유명인 매처의 경우, 가장 가까운 5개의 일치 항목(거리 기준)이 가장 가까운 순서부터 먼 순서로 반환됩니다. 점수 산출이 고정된 임계값이나 버킷 기반이 아니라 거리에 기반하기 때문에, 작은 변화(다른 각도, 다른 표정 등)만으로도 백분율을 충분히 변화시켜 어떤 결과가 1위를 차지할지 바꿀 수 있습니다. 이것은 의도적인 트레이드오프입니다: 고정 임계값 분류는 설명하기 더 쉽지만 정보를 버리고, 거리 기반 점수 산출은 약간 '깔끔하게' 이야기하기 어렵다는 단점에도 불구하고 미묘한 차이를 보존합니다.
유명인 매칭을 넘어: 전체 얼굴 분석 스위트
랜드마크 감지 파이프라인이 존재하자, 이를 다른 구조적 질문에 확장하는 것은 자연스러운 다음 단계였습니다. StarDoppel은 이제 다음 기능을 포함합니다:
- 얼굴형 감지기 — 측정된 너비/길이/턱 비율을 기반으로 타원형(oval), 둥근형(round), 사각형(square), 하트형(heart), 다이아몬드형(diamond), 또는 길쭉한형(oblong)으로 분류하며, 자체 보고식 설문 응답에 의존하지 않습니다.
- 얼굴 대칭 테스트 — 여러 랜드마크를 가로질러 얼굴의 왼쪽과 오른쪽을 비교하고 대칭 점수(symmetry score)를 반환합니다.
- 황금 비율 얼굴 — 여러 비율(눈 간격, 코부터 턱까지 길이, 얼굴 높이 등)에 걸쳐 얼굴의 비례를 φ (1.618)과 측정하고 전반적인 조화 점수(overall harmony score)를 산출합니다.
- 얼굴 나이 테스트 — 얼굴 구조와 질감 마커로부터 연령을 추정합니다.
- 눈 모양, 입술 모양, 그리고 코 모양 테스트 — 각각 특정 랜드마크 세트(눈의 쌍꺼풀 주름 및 깊이; 입술의 볼륨, 대칭성, 쿠피드 보우 곡률; 코의 안장 곡률, 끝 각도, 콧구멍 너비)를 읽어 해당 특징을 인식된 카테고리로 분류합니다. 각 도구는 동일한 근본적인 랜드마크 감지 기반(landmark-detection foundation)을 공유하지만, 서로 다른 얼굴 기하학적 부분집합에 초점을 맞춥니다.
논의할 가치가 있는 설계 결정 사항 (Design Decisions Worth Talking About)
개발 과정에서 반복적으로 등장한 몇 가지 선택 사항:
계정 요구사항 없음(No account requirement). 모든 도구는 회원가입 없이 작동합니다. 이는 백엔드를 요청별로 완전히 무상태(stateless)이도록 설계해야 함을 의미했습니다. 즉, 저장된 사진에 연결되는 사용자 세션도 없고, 이미지 영속성 계층(persistence layer) 자체가 없습니다.
처리 후 사진은 즉시 삭제됩니다(Photos are deleted immediately after processing). 각 이미지는 결과가 생성될 만큼만 서버에 존재합니다. 이는 아키텍처의 많은 부분을 형성했습니다. 업로드된 이미지 캐싱 금지, 원본 사진 데이터 로깅 금지, 그리고 결과 객체가 반환되는 순간 파일 참조를 명시적으로 폐기하는 처리 파이프라인을 구축해야 했습니다.
모호한 입력 처리 (Handling ambiguous input gracefully). 프레임에서 여러 얼굴이 감지될 경우, 시스템은 사용자 의도를 추측하려고 시도하지 않고 오류를 반환하며 새로운 사진을 요청합니다. 얼굴이 전혀 감지되지 않을 때(흐림, 극단적인 각도, 낮은 조명 등)에도 동일하게 작동합니다. 침묵 속의 잘못된 추측은 명시적인 '다시 시도해 주세요' 메시지보다 더 나쁩니다.모델 성능에 영향을 주지 않는 요소 (What doesn't break the model). 흥미롭게도 메이크업이나 수염은 결과에 의미 있는 영향을 미치지 않습니다. 이는 표면 질감보다는 근본적인 뼈/연골 구조를 측정하기 때문입니다. 마스크는 이야기가 다릅니다. 너무 많은 참조점을 제거하여 신뢰할 수 있는 분석을 방해합니다.
향후 계획 (What's Next)
현재의 유명인 데이터베이스는 IMDb에서 가져온 배우 세트를 반영하고 있습니다. 이 데이터셋을 확장하고 새로 고치는 작업은 진행 중이며, 배우를 넘어 다른 영역으로 커버리지를 넓히는 것도 포함됩니다. 얼굴 랜드마크 감지(facial landmark detection), 거리 기반 유사도 점수 계산(distance-based similarity scoring)의 기술적인 측면이나 단순히 도구가 작동하는 것을 보고 싶다면 stardoppel.com에서 시도해 볼 수 있습니다.
구현에 관한 질문은 댓글로 답변드리겠습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기