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 의존성이 필요하지 않아 프로덕션 환경 또는 임베디드 시스템에 효율적으로 배포하기에 적합합니다.
작동 원리
파이프라인은 여러 단계를 통해 원본 이미지를 처리합니다:
- Detection: YOLO가 사람 바운딩 박스를 탐지합니다.
- Feature Extraction: DINOv3-ViT-H 백본이 탐지된 크롭 이미지로부터 공간 특징 맵을 생성합니다.
- Pose Decoding: 트랜스포머 디코더가 특징을 포즈 토큰으로 압축합니다.
- Parameter Regression: 소형 FFN 헤드(ggml을 통해 실행)가 토큰을 519개의 포즈 파라미터(신체, 손, 얼굴 표정 포함) 및 카메라 이동으로 디코딩합니다.
- 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 전용 실행을 지원합니다.