AmmarkoV/SAM3DBody-cpp

Real-time 3D full-body reconstruction from a single camera, Multiperson BVH output, Pure C++ runtime, ONNX + ggml, 70-joint skeleton with hands.

해결하는 문제

이 프로젝트는 단일 BGR 이미지 또는 비디오에서 3D 인체 포즈 및 메쉬를 재구성하기 위한 고성능 독립형 C++ 구현을 제공합니다. 런타임 시 Python 의존성이 필요하지 않아 프로덕션 환경 또는 임베디드 시스템에 효율적으로 배포하기에 적합합니다.

작동 원리

파이프라인은 여러 단계를 통해 원본 이미지를 처리합니다:

  1. Detection: YOLO가 사람 바운딩 박스를 탐지합니다.
  2. Feature Extraction: DINOv3-ViT-H 백본이 탐지된 크롭 이미지로부터 공간 특징 맵을 생성합니다.
  3. Pose Decoding: 트랜스포머 디코더가 특징을 포즈 토큰으로 압축합니다.
  4. Parameter Regression: 소형 FFN 헤드(ggml을 통해 실행)가 토큰을 519개의 포즈 파라미터(신체, 손, 얼굴 표정 포함) 및 카메라 이동으로 디코딩합니다.
  5. Mesh Generation: Linear Blend Skinning (LBS)이 이러한 파라미터를 전체 3D 바디 메쉬와 70개의 키포인트로 변환합니다.

대상 사용자

  • 개발자: Python 오버헤드 없이 고속 C++ 기반 3D 인체 포즈 추정이 필요한 개발자.
  • 모션 캡처 아티스트: Blender 또는 기타 DCC 도구에서 사용하기 위해 다중 인원 모션 데이터를 BVH와 같은 표준 형식으로 내보내고자 하는 아티스트.
  • 컴퓨터 비전 엔지니어: 깊이 센서 없이 단안 비디오에서 견고한 3D 신체 재구성이 필요한 엔지니어.

주요 특징

  • Python 의존성 없음: ONNX Runtime 및 ggml을 사용하는 독립형 C++ 추론 엔진.
  • 모션 캡처 내보내기: IoU 트래킹을 통해 안정적인 ID를 유지하며 탐지된 사람당 표준 BVH 파일을 생성합니다.
  • 멀티모달 출력: 3D 메쉬 정점, 70개의 키포인트 및 카메라 파라미터를 생성합니다.
  • 시간적 평활화: 관절 및 포즈 벡터의 지터(jitter)를 줄이기 위해 Butterworth 저역 통과 필터가 포함되어 있습니다.
  • 유연한 배포: CUDA 가속 GPU 추론 또는 FP32 모델을 통한 CPU 전용 실행을 지원합니다.