1. 주요 작업 내용

SD Inpainting 파이프라인 구축 및 배포 인프라 세팅 (3/20)

  • SD(Stable Diffusion) 기반 Inpainting 런타임과 배포 도구를 새로 구성했다. 파이프라인 코드(pipeline_sd_inpainting.py), 핸들러(handler_sd.py), face parsing/segface 모델 통합, SAM2 마스킹 유틸 등 약 13,700줄 규모의 코드를 세팅했다.
  • Legacy 헤어 파이프라인 지원 코드(pipeline_optimized.py, stylegan2, bald_proxy 등)를 import하여 기존 기능과의 호환성을 확보했다. 약 6,500줄 규모.
  • GitHub Actions 기반 CI/CD 워크플로우(build-sd-app, build-sd-base, deploy-sd)를 추가하여 Docker 빌드 및 RunPod 배포 파이프라인을 자동화했다.

앞머리(Bangs) 세그멘테이션 품질 개선 (3/23)

  • 숏컷 스타일에서 생성 마스크가 잘리는 아티팩트를 수정했다. 마스크 영역을 넓혀 cutoff 현상을 방지했다.
  • 얼굴 보호 마스크가 앞머리 영역까지 침범하는 문제를 발견하고, face protect mask 크기를 줄여 앞머리가 보존되도록 조정했다.
  • SAM2 프롬프트에 앞머리 positive point를 추가하여 이마 쪽 머리카락 커버리지를 개선했다.
  • SegFace 모델의 hair threshold를 0.5 → 0.3으로 낮춰 앞머리 감지 정확도를 높였다.

2. 잘한 점

  • SD Inpainting 런타임부터 CI/CD, Docker, 배포까지 엔드투엔드 인프라를 한 번에 구축한 것은 이후 빠른 반복 개발의 기반이 되었다.
  • 앞머리 세그멘테이션 이슈를 마스크 크기 → SAM2 프롬프트 → 모델 threshold 순서로 단계적으로 접근하여 체계적으로 해결했다.
  • PR 단위로 작업을 분리(SD 런타임 #1, develop 병합 #2)하여 코드 리뷰 단위를 관리했다.

3. 아쉬운 점 / 개선할 점

  • 앞머리 관련 수정이 4커밋에 걸쳐 진행되었는데, 각 커밋이 이전 수정의 부작용을 해결하는 형태였다. 사전에 마스크 파라미터 간 상호작용을 더 분석했다면 시행착오를 줄일 수 있었을 것이다.
  • Legacy 코드 import 시 빈 파일(0 bytes)이 다수 포함되어 있다. 실제 필요한 파일만 선별하여 가져왔으면 레포지토리가 더 깔끔했을 것이다.
  • 테스트 코드(test_runpod.py, test_ip.py)가 존재하지만 CI에서 자동 실행되는 구조가 아직 없다. 배포 전 자동 검증 단계 추가가 필요하다.

4. 다음 주 계획

  • 앞머리 외 다른 헤어스타일(긴 머리, 곱슬 등)에 대한 세그멘테이션 품질 검증 및 튜닝
  • CI 파이프라인에 테스트 자동화 단계 추가 검토
  • 배포 파이프라인 실제 운영 환경 검증

+ Recent posts