Skip to content

feat: SegFormer 기반 헤어 분석 파이프라인 추가 (#176) - #177

Merged
redjungi09 merged 2 commits into
developfrom
feat/hair-analysis/#176
Sep 18, 2026
Merged

redjungi09 merged 2 commits into
developfrom
feat/hair-analysis/#176

Conversation

@hoshino-love0102

Copy link
Copy Markdown
Contributor

관련 이슈

변경 내용

  • Spring 서버 내부에서 SegFormer 19-class ONNX 모델을 실행하는 분석 어댑터를 추가했습니다.
  • 모델의 머리·눈·코·피부 파싱 결과를 기반으로 색 균일도, 형태 대칭성, 볼륨 균형, 거칠기와 종합 신뢰도를 계산합니다.
  • S3의 READY 시술 사진을 서버 자격증명으로 직접 읽고 입력 크기 상한을 적용했습니다.
  • 분석 요청을 비동기로 처리하고 작업 상태 및 결과를 PostgreSQL에 저장합니다.
  • 분석 요청, 작업 상태 조회, 실패 재시도, 결과 조회 API를 추가했습니다.
  • 모델이 없거나 분석할 수 없는 사진에는 더미 점수를 만들지 않고 명시적인 오류 또는 UNAVAILABLE 상태를 반환합니다.
  • ONNX Runtime JNI 호환 Docker 이미지와 운영 모델 마운트 설정을 추가했습니다.

작업 목적

시술기록 화면의 더미 분석 수치를 실제 사진과 딥러닝 세그멘테이션 결과에 기반한 값으로 대체합니다. 사용자 사진은 S3와 Heddy 서버 내부에서만 처리하며 OpenAI API 등 외부 생성형 AI API는 사용하지 않습니다.

테스트 방법

  • 단위 테스트 추가/수정
    • 전체 테스트 완료: 558개 중 환경 조건 테스트 1개 제외, 실패 0개
    • S3 LocalStack 내부 객체 읽기 및 용량 제한 검증
    • 실제 SegFormer ONNX 가중치와 얼굴 JPEG로 JVM 추론 스모크 테스트 완료
    • Dockerfile docker build --check 완료

체크리스트

  • 코드가 프로젝트의 코딩 스타일을 따릅니다
    • 자체 코드 리뷰를 완료했습니다
    • 변경 사항에 대한 테스트를 추가했습니다
    • Breaking Changes가 없습니다

기타 사항

  • 모델 가중치는 저장소와 Docker 이미지에 포함하지 않고 EC2에서 읽기 전용으로 마운트합니다.
  • 현재 공개 SegFormer 가중치는 CelebAMask-HQ 비상업 용도 제한이 있으므로 운영 배포 전 사용 권리를 확인하거나 동일 출력 계약의 사용 가능한 가중치를 준비해야 합니다.
  • HAIR_ANALYSIS_ENABLED=false가 기본값이며, 모델이 없는 환경에서 분석 요청은 503 ANALYSIS_ENGINE_UNAVAILABLE을 반환합니다.

Comment thread src/main/java/com/heddy/adapter/out/ai/OnnxFaceParsingHairAnalysisAdapter.java Outdated
Comment thread src/main/java/com/heddy/adapter/out/ai/HairMetricCalculator.java
Comment thread src/main/java/com/heddy/adapter/out/ai/HairAnalysisAsyncConfig.java
@redjungi09
redjungi09 merged commit d89de32 into develop Sep 18, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants