Test 영상
영상1 - https://youtu.be/NwoAgrSyltY
영상2 - https://www.youtube.com/watch?v=nJ9HoIZaIkc

프로젝트 요약 (Executive Summary)
Unity Sentis(v2.3.0)와 Unity 6.2를 활용하여, 개별 ONNX 모델(Face, Pose, Hand)을 유기적으로 파이프라이닝(Pipelining)하여 Unity 엔진 내에서 네이티브(Native)로 동작하는 Mediapipe Holistic 유사 Full Body Tracking 시스템을 구축했습니다.
Problem
Unity 환경에서 실시간 모션 캡처(얼굴, 신체, 손) 기능이 필요했지만, Sentis에서 바로 사용할 수 있는 Holistic ONNX 모델을 확보하기 어려웠습니다.
Goal
외부 플러그인이나 Python 연동 없이, Mediapipe Face, Pose, Hand 만을 사용하여 모델을 조합하고 추론 파이프라인을 직접 구축함으로써, Unity Sentis 환경에서 MediaPipe Holistic처럼 Full Body Tracking 기능을 구현하는 것을 목표로 했습니다.

프로젝트 환경
엔진 : Unity 6.2
AI 추론 : Unity Sentis(v2.3.0 Inference Engine)

AI 모델 (ONNX)
- Pose : Blaze Pose Detector, BlazePose GHUM 3D Full(Landmark),
- Face : Face Mesh V2(Landmark), Blendshape V2
- Hand : Hand Landmark
UI : UI ToolKit(MVVM)


ROI 기반 추론 파이프라인 설계
- Pose 감지 및 랜드마크 추출
- 매 프레임 Blaze Pose Detector를 실행하여 신체 영역을 추출합니다.
- 추출된 영역을 기반으로 BlazePose GHUM 3D Full Landmark 모델을 실행하여 신체 33개 주요 랜드마크를 감지합니다.
- 동적 관심 영역(ROI) 계산
- Pose 랜드마크 중 손목, 코, 입 등의 좌표를 이용하여 Hand 및 Face 모델의 Affine Matrix를 계산하고, 이 행렬을 기반으로 원본 이미지에서 최적화된 ROI를 동적으로 크롭합니다.
- 조건부 모델 추론
- 계산된 ROI 영역을 입력으로 Hand Landmark, Face Mesh V2모델을 실행합니다.
- Face Mesh에서 추론된 Landmark를 기반으로 Blendshape V2를 이용하여 Blendshape 값을 추론합니다.
성능 최적화 및 안정화 기법
- 최적화 - Presence 값 활용 리소스 절감
- 초기 Pose 감지 이후, Pose Landmark 결과의 Precense 값을 이용하여 신체 영역이 화면에 존재하는지 판단합니다. 영역이 안정적으로 추적되는 경우, Detection 모델을 생략하고 Landmark 모델만을 실행하여 리소스를 절감했습니다.
- 정확도 향상 - Landmark 좌표 기반 재추론
- Pose Landmark에서 추론된 초기 Face/Hand 랜드마크의 정확도 불안정성 문제를 해결하기 위해, 첫 추론 이후부터는 이전에 성공적으로 추론된 Face/Hand 랜드마크 좌표를 기반으로 다음 프레임의 ROI를 계산하여 추론 정확도를 높였습니다.
데이터 통합 및 디버깅 시스템
- 데이터 통합: 각 모델(Pose, Face, Hand)의 추론 결과를 이용하여 Scene과 Game View에서 보이도록 Visualization 했습니다.
- UI/디버깅 시스템: UI Toolkit(MVVM 패턴)을 적용했습니다. 이를 통해 디버깅 옵션(랜드마크 시각화, 추론 이미지 시각화 On/Off) 제어 기능을 구현하여 개발 및 테스트 편의성을 높였습니다.

코드 구조
MotionCaptureBehavior
IVideoInput
VideoInput:IVideoInput
WebcamInput:IVideoInput
IMotionCapture
MediapipeSO :IMotionCapture
PoseInferenceResult
InferenceBox
MediapipeModel
MediapipeFace:MediapipeModel
MediapipeHand:MediapipeModel
MediapipePose:MediapipeModel
Debug
MediapipeVisualizer
FaceVisualizer
HandVisualizer
PoseVisualizer
배운점
- Mediapipe Holistic의 내부 동작 원리와 ROI 기반 추론 파이프라인 이해
- Mediapipe 모델이 요구하는 Input Image를 위한 Crop 방식, Affine Matrix 계산, 랜드마크 좌표 변환에 대한 전처리 및 후처리 습득
- Sentis에 대한 이해 및 사용 방법 습득
참고자료
https://github.com/google-ai-edge/mediapipe/blob/master/docs/solutions/holistic.md
https://github.com/skykim/uniteseoul2025-motiontracking