글 목록

AI · Data

Pose Estimation: YOLO Pose vs. MediaPipe Pose

YOLO Pose와 MediaPipe Pose는 모두 사람의 자세를 추정하지만 설계 철학과 출력 형태가 꽤 다릅니다. 두 모델의 구조와 keypoint, multi-person, 3D 좌표, 실시간 처리 관점에서 차이를 정리합니다.

Pose Estimation이란?

Pose Estimation은 이미지나 영상 속 사람의 관절과 신체의 주요 지점(keypoint 또는 landmark)의 위치를 추정하는 기술​입니다.

예를 들어 어깨, 팔꿈치, 손목, 무릎, 발목의 좌표를 알아낼 수 있다면 단순히 이미지 안에 사람이 있다는 것을 넘어,

  • 팔을 들고 있는지
  • 무릎이 얼마나 굽혀졌는지
  • 어떤 자세로 운동하고 있는지
  • 사람이 넘어졌는지
  • 특정 동작을 수행하고 있는지

같은 정보를 계산할 수 있습니다.

그래서 Pose Estimation은 fitness application, sports analytics, motion analysis, gesture recognition, surveillance 등 여러 분야에서 활용됩니다.

이 분야에서 비교적 쉽게 사용할 수 있는 대표적인 선택지가 Ultralytics YOLO Pose와 Google MediaPipe Pose Landmarker입니다.

둘 다 사람의 자세를 찾는다는 점에서는 비슷하지만, 실제로 사용해 보면 꽤 다른 성격을 가지고 있습니다.

한 문장으로 먼저 정리하면 다음과 같습니다.

여러 사람을 찾고 detection pipeline과 결합하는 것이 중요하다면 YOLO Pose, 한 사람의 자세를 세밀하게 분석하고 실시간 application에 적용하는 것이 중요하다면 MediaPipe Pose가 편리합니다.

다만 이것만으로 모델을 선택하기에는 조금 부족합니다. 왜 그런 차이가 생기는지 하나씩 살펴보겠습니다.


1. 가장 먼저 보이는 차이: 17 vs. 33 landmarks

두 모델의 결과를 처음 비교하면 가장 눈에 띄는 차이가 있습니다.

기본 pretrained YOLO Pose 모델은 COCO pose 기준 17개의 keypoint를 사용합니다. Ultralytics의 현재 기본 pose 모델 역시 COCO keypoints dataset을 기반으로 하며 nose, eyes, ears, shoulders, elbows, wrists, hips, knees, ankles를 예측합니다.

반면 MediaPipe Pose Landmarker는 33개의 pose landmarks를 제공합니다.

YOLO Pose — 17 keypoints

YOLO의 기본 human pose model은 다음 keypoint를 사용합니다.

0  Nose
1  Left Eye
2  Right Eye
3  Left Ear
4  Right Ear
5  Left Shoulder
6  Right Shoulder
7  Left Elbow
8  Right Elbow
9  Left Wrist
10 Right Wrist
11 Left Hip
12 Right Hip
13 Left Knee
14 Right Knee
15 Left Ankle
16 Right Ankle

사람의 전체적인 skeleton을 파악하기에는 충분한 구성이지만 손과 발의 자세를 자세히 분석하기에는 제한이 있습니다.

MediaPipe Pose — 33 landmarks

MediaPipe는 여기에 훨씬 세밀한 landmark를 추가합니다.

예를 들어 눈의 inner/outer point뿐 아니라,

LEFT_PINKY
LEFT_INDEX
LEFT_THUMB

RIGHT_PINKY
RIGHT_INDEX
RIGHT_THUMB

LEFT_HEEL
RIGHT_HEEL

LEFT_FOOT_INDEX
RIGHT_FOOT_INDEX

등도 포함됩니다.

즉, 손목의 위치만 필요한 것과 손끝 방향까지 필요한 것은 서로 다른 문제입니다.

운동 자세를 분석한다고 생각해 보겠습니다.

squat의 knee angle 정도만 계산한다면 YOLO의 hip-knee-ankle keypoint로도 충분할 수 있습니다.

하지만 발뒤꿈치가 들렸는지, 발끝 방향이 어떤지까지 분석해야 한다면 heel과 foot index를 제공하는 MediaPipe가 훨씬 편리합니다.


2. YOLO Pose는 Detection의 성격이 강하다

YOLO Pose를 이해할 때 중요한 점은 이름 그대로 YOLO object detection architecture에서 확장된 pose estimator라는 것입니다.

Ultralytics의 Pose predictor 역시 Detection predictor를 확장하고 있으며 결과에는 keypoints뿐 아니라 각 instance에 해당하는 bounding box도 포함됩니다.

개념적으로 보면 다음과 같습니다.

Input Image
    ↓
YOLO Backbone
    ↓
Person Detection + Pose Prediction
    ↓
Person A
 ├─ Bounding Box
 └─ 17 Keypoints

Person B
 ├─ Bounding Box
 └─ 17 Keypoints

따라서 한 화면에 사람이 여러 명 존재하는 상황에서 특히 자연스럽습니다.

예를 들어 CCTV 영상에 사람이 5명 있다면 각 사람의 bounding box와 pose를 함께 얻을 수 있습니다.

Python에서는 결과 역시 익숙한 YOLO API 형태로 접근할 수 있습니다.

from ultralytics import YOLO

model = YOLO("yolo26n-pose.pt")

results = model("image.jpg")

for result in results:
    boxes = result.boxes
    keypoints = result.keypoints

    print(keypoints.xy)
    print(keypoints.xyn)

keypoints.xy는 pixel coordinate, keypoints.xyn은 normalized coordinate를 제공합니다.

Detection과 pose를 하나의 pipeline에서 다루고 싶다면 이 구조가 상당히 편합니다.


3. MediaPipe Pose는 Landmark Tracking에 가깝다

MediaPipe Pose Landmarker의 접근은 조금 다릅니다.

MediaPipe는 단순히 이미지에서 keypoint를 한 번 찾는 것뿐 아니라 video와 live stream에서 pose를 지속적으로 추적하는 사용 사례를 API 자체에서 중요하게 다룹니다.

Pose Landmarker에는 세 가지 running mode가 있습니다.

IMAGE
VIDEO
LIVE_STREAM

특히 VIDEO와 LIVE_STREAM mode에서는 tracking을 활용할 수 있으며 min_tracking_confidence 같은 설정도 제공합니다.

따라서 webcam 기반 fitness application처럼,

Camera
  ↓
Frame
  ↓
Pose Detection / Tracking
  ↓
33 Landmarks
  ↓
Joint Angle
  ↓
Exercise State

와 같은 pipeline을 만들기에 잘 맞습니다.

예를 들어 squat counter를 만든다면,

hip
 ↓
knee
 ↓
ankle

세 landmark를 이용해 knee angle을 계산하고,

170° → standing
 90° → squat
170° → standing

과 같은 state machine을 구성할 수 있습니다.

이런 single-user interaction 중심 application에서는 MediaPipe의 구조가 상당히 직관적입니다.


4. 2D 좌표만 보면 중요한 차이를 놓친다

MediaPipe의 큰 특징 중 하나는 결과로 pose_world_landmarks를 제공한다는 점입니다.

Pose Landmarker의 결과 구조는 크게 다음과 같습니다.

PoseLandmarkerResult

├─ pose_landmarks
├─ pose_world_landmarks
└─ segmentation_masks (optional)

pose_landmarks는 normalized image coordinates를 제공하고, pose_world_landmarks는 world coordinates 형태의 landmark를 제공합니다.

각 landmark는 모델이 지원하는 경우 다음과 같은 값을 가질 수 있습니다.

x
y
z
visibility
presence

반면 기본 YOLO Pose의 COCO 모델은 일반적으로 keypoint마다 image상의 x, y와 confidence/visibility에 해당하는 값을 중심으로 사용합니다.

따라서 두 모델을 단순히 다음처럼 비교하면 조금 부족합니다.

YOLO      = 17 points
MediaPipe = 33 points

조금 더 정확하게는,

YOLO Pose
→ detection + 2D keypoint estimation에 강점

MediaPipe Pose
→ detailed body landmarks + world landmarks + tracking에 강점

이라고 이해하는 것이 좋습니다.

여기서 주의할 점도 있습니다.

MediaPipe의 world coordinate가 있다고 해서 일반 monocular camera 영상에서 얻은 값을 곧바로 정밀한 motion capture 장비의 절대 3D 좌표와 동일하게 취급하면 안 됩니다.

특히 정확한 거리 측정이나 biomechanical measurement가 필요한 경우에는 별도의 calibration이나 depth information, multi-camera setup 등이 필요할 수 있습니다.


5. Multi-person에서는 YOLO가 자연스럽다

두 솔루션 모두 여러 pose를 다룰 수 있지만, multi-person scene을 중심으로 생각하면 YOLO의 장점이 명확합니다.

YOLO Pose 결과에는 사람별 detection과 keypoint가 연결되어 있습니다.

예를 들어 다음과 같은 장면이 있다고 해보겠습니다.

┌───────────────────────────────┐
│                               │
│   Person A       Person B     │
│      O               O        │
│     /|\             /|\       │
│     / \             / \       │
│                               │
└───────────────────────────────┘

YOLO는 이를 자연스럽게

Detection 1
 ├─ bbox
 └─ keypoints

Detection 2
 ├─ bbox
 └─ keypoints

형태로 처리합니다.

그래서 다음과 같은 application이라면 YOLO Pose가 잘 맞습니다.

CCTV analytics
crowd analysis
sports video
multi-person activity recognition
worker safety monitoring

MediaPipe Pose Landmarker에도 num_poses 옵션이 있으며 최대 검출 pose 수를 설정할 수 있습니다.

따라서 MediaPipe를 단순히 "single-person only"라고 설명하는 것은 정확하지 않습니다.

다만 설계 철학과 downstream pipeline까지 생각하면 multi-person detection을 중심으로 시스템을 구성할 때 YOLO 쪽이 더 자연스러운 경우가 많습니다.


6. 반대로 Fitness App에서는 MediaPipe가 매력적이다

이번에는 스마트폰이나 webcam 앞에서 한 명이 운동하는 상황을 생각해 보겠습니다.

필요한 기능은 보통 다음과 같습니다.

Camera
 ↓
Pose
 ↓
Joint Angle
 ↓
Exercise Classification
 ↓
Rep Counting

여기에서는 bounding box 자체가 중요한 경우가 많지 않습니다.

오히려 중요한 것은

elbow angle
knee angle
hip angle
shoulder position
foot position

처럼 신체 landmark 간 관계입니다.

MediaPipe의 33 landmarks는 이런 경우 유용합니다.

특히 heel과 foot index까지 있기 때문에 lower-body exercise를 분석할 때 기본 COCO 17-keypoint skeleton보다 얻을 수 있는 정보가 많습니다.

또 VIDEO / LIVE_STREAM running mode와 tracking 관련 옵션이 이미 제공되기 때문에 camera application을 빠르게 prototype하기 좋습니다.


7. Segmentation Mask도 생각보다 유용하다

MediaPipe Pose Landmarker에는 output_segmentation_masks 옵션도 있습니다.

활성화하면 pose 결과와 함께 segmentation mask를 받을 수 있습니다.

즉,

Pose Landmarks
      +

Person Segmentation

을 함께 사용할 수 있습니다.

예를 들어 virtual trainer application에서 사용자의 body 영역을 분리하거나, 배경과 사용자를 구분해 UI effect를 적용해야 한다면 유용합니다.

YOLO ecosystem에서도 별도의 segmentation model을 조합할 수 있지만, Pose Landmarker에서는 pose task 결과의 optional output으로 segmentation mask를 사용할 수 있다는 차이가 있습니다.


8. Custom Training이 필요하면 이야기가 달라진다

여기까지 보면 MediaPipe가 landmark 수도 많고 world coordinate도 제공하니 더 좋아 보일 수 있습니다.

하지만 custom training이 필요해지는 순간 YOLO Pose의 장점이 커집니다.

Ultralytics YOLO Pose는 custom dataset을 이용한 training workflow를 공식적으로 지원합니다.

예를 들어 pretrained pose model에서 시작해 다음과 같이 학습할 수 있습니다.

from ultralytics import YOLO

model = YOLO("yolo26n-pose.pt")

model.train(
    data="custom-pose.yaml",
    epochs=100,
    imgsz=640,
)

YOLO pose dataset에서는 kpt_shape를 통해 keypoint 구성도 정의할 수 있기 때문에 반드시 사람의 COCO 17 keypoint에만 제한되는 것은 아닙니다.

따라서 문제 자체가

human skeleton

이 아니라,

specific industrial posture
animal pose
custom object keypoints
domain-specific landmarks

라면 YOLO의 training ecosystem이 큰 장점이 됩니다.

MediaPipe의 pretrained Pose Landmarker를 사용하는 것과 내 데이터셋으로 pose model 자체를 다시 학습하는 문제는 구분해서 생각하는 것이 좋습니다.


9. Deployment에서도 방향이 조금 다르다

YOLO는 model export 선택지가 매우 다양합니다.

현재 Ultralytics에서는 pose model을 ONNX, OpenVINO, TensorRT, LiteRT 등 여러 형식으로 export할 수 있습니다.

예를 들어,

model.export(format="onnx")

처럼 사용할 수 있습니다.

따라서 NVIDIA GPU server에서 TensorRT로 최적화하거나 특정 inference runtime을 사용하는 등 deployment infrastructure를 직접 설계하는 경우 YOLO의 flexibility가 좋습니다.

반대로 MediaPipe는 mobile, edge, camera 기반 application에서 바로 pose tracking pipeline을 구축할 때 편리합니다.

결국 deployment 관점에서도 질문이 조금 달라집니다.

"어떤 inference backend에서 모델을 돌릴 것인가?"
→ YOLO가 매력적

"camera frame에서 pose landmark를 빠르게 사용하고 싶은가?"
→ MediaPipe가 매력적

10. 한눈에 비교하기

항목 YOLO Pose MediaPipe Pose
기본 Human Keypoints 17 33
기본 좌표 2D image coordinates normalized + world landmarks
Bounding Box 제공 핵심 output 아님
Multi-person 강점 지원
Video / Live Tracking 별도 tracking pipeline과 결합 가능 API에서 직접 지원
Segmentation Mask 별도 segmentation model과 조합 optional output 지원
Custom Training 강력한 지원 pretrained task 사용 중심
Custom Keypoints 가능 기본 pose landmark 구조 중심
Mobile / Camera App 가능 특히 편리
Server / GPU Pipeline 특히 편리 가능
ONNX / TensorRT 등 Export 강점 MediaPipe runtime 중심
Fitness / Exercise 좋음 특히 적합
CCTV / Multi-person 특히 적합 사용 가능

11. 그래서 무엇을 선택해야 할까?

결국 모델 선택은 정확도 숫자 하나로 결정하기 어렵습니다.

두 모델이 출력하는 keypoint의 정의부터 다르기 때문에 동일한 benchmark 숫자만 보고 단순 비교하는 것도 적절하지 않습니다.

대신 application의 요구사항을 먼저 보는 편이 좋습니다.

YOLO Pose를 먼저 고려할 상황

다음 조건이 중요하다면 YOLO Pose부터 검토하는 것이 좋습니다.

✓ 한 화면에 사람이 여러 명 있다.
✓ 사람별 bounding box가 필요하다.
✓ 기존 YOLO detection pipeline을 사용하고 있다.
✓ custom pose dataset으로 학습해야 한다.
✓ custom keypoint를 정의해야 한다.
✓ TensorRT / ONNX 기반 deployment가 중요하다.
✓ CCTV 또는 sports analytics 시스템이다.

MediaPipe Pose를 먼저 고려할 상황

다음 조건이 중요하다면 MediaPipe Pose가 좋은 출발점입니다.

✓ webcam / mobile camera 기반 application이다.
✓ 한 명 또는 소수 사용자의 자세 분석이 중심이다.
✓ 17개보다 세밀한 body landmark가 필요하다.
✓ heel, foot index, finger landmark 등이 필요하다.
✓ world landmark가 필요하다.
✓ video/live stream tracking을 빠르게 구현하고 싶다.
✓ fitness / exercise application을 만들고 있다.

12. 실제 프로젝트에서는 둘을 함께 사용할 수도 있다

흥미로운 점은 두 모델이 반드시 경쟁 관계일 필요는 없다는 것입니다.

예를 들어 사람이 많은 gym 영상을 분석한다고 생각해 보겠습니다.

YOLO를 이용해 먼저 사람을 찾습니다.

Full Frame
   ↓
YOLO Person Detection
   ↓
Person ROI

그다음 특정 사람의 ROI에 MediaPipe를 적용할 수도 있습니다.

Person ROI
   ↓
MediaPipe Pose
   ↓
33 Landmarks
   ↓
Detailed Motion Analysis

즉,

YOLO
→ Who and where?

MediaPipe
→ How is the body moving?

처럼 역할을 나누는 것입니다.

물론 두 모델을 연속으로 실행하면 inference cost가 증가하므로 항상 좋은 방법은 아닙니다. 하지만 multi-person detection과 detailed landmark analysis가 동시에 필요한 경우 충분히 검토할 만한 architecture입니다.


마무리

YOLO Pose와 MediaPipe Pose는 모두 Pose Estimation이라는 같은 문제를 해결하지만 출발점이 다릅니다.

YOLO Pose는 object detection의 강점을 pose estimation으로 확장한 모델에 가깝습니다.

그래서 multi-person detection, custom training, GPU inference pipeline, bounding box와 pose를 함께 다루는 시스템에 강합니다.

MediaPipe Pose는 body landmark를 application에서 바로 활용하기 위한 framework에 더 가깝습니다.

33개의 상세한 landmark, world landmarks, video/live-stream mode, tracking, optional segmentation mask 덕분에 fitness나 real-time interactive application을 빠르게 구현하기 좋습니다.

그래서 “어느 모델이 더 좋은가?”보다 다음 질문이 더 중요합니다.

내가 필요한 것은 사람을 잘 찾아내는 pose detector인가, 아니면 한 사람의 움직임을 세밀하게 이해하기 위한 body landmark tracker인가?

전자의 비중이 크다면 YOLO Pose, 후자의 비중이 크다면 MediaPipe Pose가 자연스러운 출발점입니다.

그리고 두 요구사항이 모두 중요하다면, 하나만 고집하기보다 YOLO와 MediaPipe를 함께 사용하는 pipeline도 충분히 좋은 선택이 될 수 있습니다.


References

  • Ultralytics, Pose Estimation with Ultralytics YOLO
  • Ultralytics, Pose Estimation Datasets
  • Google AI for Developers, MediaPipe PoseLandmarker
  • Google AI for Developers, MediaPipe PoseLandmark — 33 pose landmarks
  • Google AI for Developers, PoseLandmarkerResult

Tags

태그

Pose EstimationYOLOYOLO PoseMediaPipeMediaPipe Pose