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.
해결하는 문제
SAM3DBody-cpp는 SAM-3D-Body 모델을 위한 고성능이며 독립적인 C++ 추론 엔진을 제공합니다. Python 런타임이 필요 없이 표준 2D 이미지나 비디오에서 3D 인간 몸체 자세, 형태, 카메라 파라미터를 추출할 수 있어, 프로덕션 소프트웨어나 실시간 애플리케이션에 쉽게 통합할 수 있습니다.
작동 방식
파이프라인은 원시 BGR 이미지를 여러 단계로 처리합니다:
- 감지: YOLO가 사람 바운딩 박스를 감지합니다.
- 특징 추출: DINOv3-ViT-H 백본이 각 크롭에서 공간 특징 맵을 생성합니다.
- 자세 토큰화: 6층의 트랜스포머 디코더가 특징 맵을 카메라 초점 거리와 레이 방향에 따라 조건부로 1024차원의 자세 토큰으로 압축합니다.
- 파라미터 디코딩: ggml을 통해 실행되는 작은 FFN 헤드가 토큰을 519개의 자세 파라미터(글로벌 방향, 관절 각도, 형태 베타, 손 자세, 얼굴 표정)와 3개의 카메라 파라미터로 디코딩합니다.
- 메시 생성: 이 파라미터들이 네이티브 C의 Linear Blend Skinning (LBS) 프로세스를 구동하여 전체 3D 몸체 메시(18,439개 정점)와 70개의 키포인트를 생성합니다.
대상 사용자
- 3D 인간 자세 추정에 Python 의존성을 제로로 원하는 개발자.
- Blender 등 다양한 DCC 도구에서 사용 가능한 표준 BVH 파일로 다중 인물 모션을 내보내고 싶은 모션 캡처 아티스트.
- 스켈레톤, 스킨웨이트, 개인화된 메시를 포함한 MPEG ARF (.arfz) 컨테이너를 생성하고 싶은 아바타 제작자.
- 단안 비디오에서 빠르고 C++ 기반의 3D 몸체 파라미터 회귀가 필요한 로보틱스/CV 엔지니어.
주요 특징
- Python 런타임 없음: ONNX Runtime과 ggml을 사용한 완전한 독립적인 C++ 구현.
- 다중 인물 추적: 2D 바운딩 박스 IoU 트래커를 내장하여 비디오 프레임 간에 안정적인 아이덴티티 유지.
- 산업 표준 내보내기: BVH 모션 캡처 파일과 MPEG ARF 아바타 컨테이너를 지원.
- 유연한 하드웨어 지원: CUDA GPU에 최적화되었지만 CPU 전용 FP32/FP16 폴백 모델도 포함.
- 포괄적인 출력: 전체 3D 메시 정점, 70개의 신체/손 키포인트, 카메라 이동 정보 제공.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트