본문으로 건너뛰기

AI Modeling

GenealogyModelProjector 개발일지 1편, 시스템 구성과 처리 파이프라인

사진과 영상에서 인체 3차원 모델을 생성하는 도구의 시스템 구성과 처리 단계를 정의한다. 연산 장비 배분, 9단계 파이프라인, 산출물 형식, 판올림 계획을 기술한다.

2026. 10. 01

GenealogyModelProjector 는 사진과 영상에서 인체 3차원 모델을 생성하는 도구이다. 본 편에서는 구현에 착수하기 전에 확정한 시스템 구성, 처리 파이프라인, 산출물 형식, 판올림 계획을 기술한다. 기준 인체 모델의 선정 과정은 본편 게시물에서 다루었다.

목적

연산 장비 배분과 처리 단계를 확정한다. 각 단계의 입력과 출력을 정의하여 구현 순서를 결정한다.

계획

  1. 장비별 역할 분담 확정
  2. 9단계 처리 파이프라인 정의
  3. 형상 계수 최적화의 목적함수 구성
  4. 산출물 형식과 웹 뷰어 기능 배치 결정
  5. 판올림 계획 수립

체크리스트

  • ☑ 기준 인체 모델 선정, MHR (본편 게시물)
  • ☑ 장비 배분 확정 (1절)
  • ☑ 파이프라인 정의 (2절)
  • ☑ 산출물 형식 정의 (4절)
  • ☐ 개발 환경 구축 및 예제 영상 단독 실행 검증
  • ☐ 형상 계수 최적화 구현
  • ☐ 대상 인물 범위와 동의 절차 수립

1. 시스템 구성

연산은 GPU 가 있는 장비에서 수행하고, 저장과 게시는 별도 장비가 담당한다. 장비별 역할은 다음과 같다.

장비 역할 비고
Linux 서버 원본 영상과 사진, 신체 치수 파일, 결과 백업 보관 연산은 수행하지 않는다
Windows PC (RTX 5070) 전 단계 연산 수행. 화면은 PySide6, 연산부는 WSL2 의 Python CUDA 12.8 이상과 대응 PyTorch 필요
라즈베리파이 5 WordPress 게시. 모델 파일과 메타데이터 전달 저장장치는 NVMe SSD 를 사용한다
방문자 브라우저 자세, 의상, 표정, 치수 표기의 실시간 연산 WebGL 기반 뷰어

의상과 표정 변경은 서버가 아니라 방문자 브라우저에서 수행한다. 따라서 게시 서버의 연산 부하는 파일 전송에 한정된다.

원본은 SMB 로 읽되 처리 전에 Windows PC 의 로컬 저장장치로 복사한다. 저사양 서버에서 영상을 직접 디코딩할 경우 해당 구간이 병목이 되기 때문이다.

2. 처리 파이프라인

단일 시점 영상을 입력으로 하며, 9단계로 구성한다.

단계 처리 사용 기법 출력
C1 장면 분할과 인물 추적 PySceneDetect, SAM 2 인물별 프레임 목록, 분할 마스크
C2 프레임 품질 평가 가림 비율, 흐림도, 관측 각도 사용 프레임 선별표
C3 2차원 관절 검출 ViTPose, RTMPose 키포인트 좌표
C4 프레임별 인체 메시 추정 SAM 3D Body MHR 형상 및 자세 초기값
C5 시간축 및 카메라 보정 GVHMR, WHAM 자세 궤적
C6 형상 계수 통합 최적화 자체 구현 인물당 형상 계수 1세트
C7 표면 및 얼굴 보정 ECON 계열 정점 변위, 표정 계수
C8 텍스처 투영 다프레임 색상 합성 텍스처 맵
C9 내보내기 glTF 변환, Draco 압축 glb, meta.json, 썸네일

C4 는 프레임마다 독립적으로 수행되므로 형상 계수가 프레임 간에 변동한다. C6 에서 이를 하나의 값으로 통합한다.

3. 형상 계수 최적화

한 인물의 형상 계수는 영상 전체에서 단일 값이다. 이 제약을 이용하여 다음 항목을 동시에 최소화한다.

  • 2차원 키포인트 재투영 오차
  • 분할 마스크와 투영 실루엣의 불일치
  • 입력 신체 치수와 모델 측정값의 차이. 신장, 가슴둘레, 허리둘레, 엉덩이둘레를 사용한다
  • 형상 사전분포 항. 비현실적 체형을 억제한다

프레임별 가중치는 C2 의 품질 점수에 비례한다. 정면 및 측면 관측 프레임에 높은 가중치를 부여한다.

치수 측정은 기준 모델의 정점 번호로 측정 평면을 정의하고, 중립 자세에서 해당 평면의 단면 둘레를 계산한다. 모든 개체가 동일한 메시 위상을 공유하므로 정의는 1회로 충분하다.

단안 영상에서 절대 크기는 원리적으로 결정되지 않는다. 신장 입력값이 척도 인자를 고정하는 역할을 한다.

4. 산출물 형식

파일 내용
{인물ID}_v{판}.glb 골격, 형상 계수, 표정 블렌드셰이프, 텍스처
meta.json 입력 치수, 모델 측정값, 신뢰도, 사용 모델과 라이선스, 생성 일시
thumb.webp 목록용 축소 이미지
motion.glb 원본 영상의 자세 궤적. 선택 항목

신뢰도는 사용 프레임 수, 관측 각도의 범위, 의복의 여유량 추정치로 산출하여 함께 게시한다.

5. 웹 뷰어 기능 배치

기능 구현 방식
자세 변경 골격 회전값 프리셋 적용, motion.glb 재생
의상 기준 위상에 맞춘 의상 자산을 동일 골격에 결합. 체형 차이는 형상 계수 기반 변형으로 보정
피부색 피부 영역 마스크에 대한 색조와 명도 조정
표정 얼굴 블렌드셰이프 가중치 조절
치수 표기 meta.json 의 측정값과 기준 정점으로 3차원 치수선 표시. 중립 자세에서만 활성화한다

제작 도구의 3차원 확인 창과 웹 뷰어는 동일한 Three.js 코드를 사용한다. 게시 전후의 표시 결과를 일치시키기 위한 조치이다.

6. 판올림 계획

판 목표 완료 기준
준비 WSL2, CUDA, PyTorch, 모델 가중치 설치 예제 영상으로 C4 단독 실행
v1.0.0.0 인물 추적부터 맨몸 glb 내보내기까지 신장 입력값 대비 오차 1cm 이내
v1.0.0.1 3차원 확인 창, 프레임 수동 선별, 신뢰도 표시 원본 프레임과 복원 결과의 중첩 표시
v1.0.0.2 텍스처 및 표면 보정 색상이 반영된 glb 생성
v1.0.0.3 게시 연동과 기본 뷰어 게시물에서 회전, 확대, 치수 표기
v1.0.0.4 자세, 피부색, 표정 제어 뷰어 조절 항목 동작
v1.0.0.5 의상 및 부착물 자산 체계 기본 의상 3종의 체형별 적용

7. 제약 조건

  • 절대 크기는 기준 물체나 신장 입력이 없으면 수 cm 이상의 오차를 가진다
  • 의복 아래의 체형은 추정값이다. 여유량이 큰 의복에서는 둘레 치수의 신뢰도가 낮다
  • 정지 이미지 1장에서는 자세와 비율까지만 복원한다. 체형 복원에는 다수의 관측 각도가 필요하다
  • 실존 인물의 형상과 신체 치수는 초상권 및 개인정보 쟁점을 수반한다. 게시 대상 범위와 동의 절차를 공개 전에 확정한다

REFERENCES

  1. [1]Meta, MHR 공개 저장소, https://github.com/facebookresearch/MHR
  2. [2]Meta, SAM 3D Body, https://github.com/facebookresearch/sam-3d-body
  3. [3]GVHMR, World-Grounded Human Motion Recovery, https://github.com/zju3dv/GVHMR
  4. [4]SAM 2, Segment Anything in Images and Videos, https://github.com/facebookresearch/sam2

ABOUT AUTHOR

shind

shind

소개글이 아직 없습니다.

댓글 남기기

Your email address will not be published. Required fields are marked *