MediaPipe vs YOLO Pose: One Person in 3D or Everyone in 2D?
Last verified October 22, 2026 · 7 min read
Sources checked (11) · October 22, 2026
- storage.googleapis.com/mediapipe-assets/Model%20Card%20BlazePose%20GHUM%203D.pdf — single-person scope, Pixel 3 FPS per variant, z up to scale, Apache-2.0
- github.com/google-ai-edge/mediapipe/blob/master/docs/solutions/pose.md — BlazePose research, world landmarks, Yoga/Dance/HIIT quality table
- github.com/google-ai-edge/mediapipe/blob/master/mediapipe/tasks/python/vision/pose_landmarker.py — num_poses default 1; PoseLandmark indices
- github.com/google-ai-edge/mediapipe/blob/master/README.md — Android, iOS, Python and web apps; pre-trained, ready-to-run models
- github.com/google-ai-edge/mediapipe/blob/master/LICENSE — Apache-2.0
- github.com/ultralytics/ultralytics/blob/main/docs/en/tasks/pose.md — YOLO26 pose, Results fields, COCO keypoint order, training and custom datasets, benchmark conditions
- github.com/ultralytics/ultralytics/blob/main/docs/macros/yolo-pose-perf.md — five-size table
- github.com/ultralytics/ultralytics/blob/main/docs/macros/export-table.md — 23 export formats; no TensorFlow.js row
- github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco-pose.yaml — kpt_shape and the single person class
- github.com/ultralytics/ultralytics/blob/main/README.md — tracking across frames; AGPL-3.0 and Enterprise License
- github.com/ultralytics/ultralytics/blob/main/LICENSE — GNU AGPL version 3, section 13
Covered here:MediaPipe
Disclosure: this site is funded by KinesteX, which sells a motion-tracking SDK that sits a layer above pose models like these. Neither model on this page is ours, and we have no reason to prefer either. MediaPipe facts come from Google's BlazePose GHUM model card and the google-ai-edge/mediapipe repository; Ultralytics facts come from the docs, README and LICENSE in the ultralytics/ultralytics repository. All were read on October 22, 2026, and every Ultralytics figure is Ultralytics' own.
A note on names, since searches mix them: BlazePose is the model family behind MediaPipe Pose, which Google's documentation says is built on its BlazePose research, and the current packaging is the MediaPipe Pose Landmarker task. On the other side, Ultralytics' pose docs now present YOLO26 as the current generation of YOLO pose models.
Two models for two different scenes#
MediaPipe is built for one person. Google's model card describes "3D full body pose estimation for single-person videos on mobile, desktop and in browser", says the model "Tracks only one person on scene if multiple present", and lists multiple people in an image as out of scope. The Tasks API has a num_poses option, but it defaults to 1 and the card does not evaluate more.
YOLO pose is built for everyone in the frame. Ultralytics documents one Results object per image, with result.keypoints shaped (N, K, 2 or 3), N instances of K keypoints, and result.boxes for "the detected instances that those keypoints belong to". The training config's only class is person, and the default models predict the 17 COCO keypoints for each one.
MediaPipe vs YOLO pose at a glance#
| MediaPipe Pose Landmarker (BlazePose GHUM) | Ultralytics YOLO26 pose | |
|---|---|---|
| Keypoints | 33 landmarks | 17 COCO keypoints in the default models |
| Per point | x, y, z, visibility, presence; world landmarks in meters | x, y, plus optional visibility or confidence |
| People | One, per the model card | Every detected person, each with a box |
| Sizes | Lite, Full, Heavy | n, s, m, l, x |
| Published speed | Frames per second on a Pixel 3 through TFLite | Milliseconds on a CPU with ONNX and on an NVIDIA T4 with TensorRT10 |
| Deployment | MediaPipe Tasks on Android, iOS, web and Python | Export table of 23 formats, including ONNX, CoreML, LiteRT, NCNN, ExecuTorch and TensorRT |
| Your own keypoints | Pre-trained models; no pose training recipe in the files we read | Training on your own keypoint datasets is documented |
| Licence | Apache-2.0 | AGPL-3.0, or a paid Ultralytics Enterprise License |
Where MediaPipe wins#
Depth and detail on one body. Of the 33 landmarks, 16 are not in COCO's 17: eye corners, mouth corners, three knuckles per hand, heels and foot index points. MediaPipe's documentation describes world landmarks as "Real-world 3D coordinates in meters with the origin at the center between hips". The card is honest that z is "not metric but up to scale", but in our reading it still lets a knee or hip angle survive the user turning side-on. Ultralytics' results table documents only 2D coordinates: pixel and normalized x, y, plus an optional visibility or confidence value.
Phone numbers you can read. Google's card gives on-device figures: on a Pixel 3, the Lite model runs at about 44 FPS on CPU and 49 FPS on GPU, Full at about 18 and 40, and Heavy at about 4 and 19. Ultralytics' table measures a CPU through ONNX and an NVIDIA T4 through TensorRT10, so nothing in it says how a phone will do.
A permissive licence. The MediaPipe repository's LICENSE is Apache-2.0, and the BlazePose GHUM card is "LICENSED UNDER Apache License, Version 2.0". No copyleft, no key and no fee.
A browser path. MediaPipe Tasks covers web apps. Ultralytics' export table, as we read it, lists no TensorFlow.js target; whether a browser runtime can run one of its other formats is something to test yourself.
Where YOLO pose wins#
Several people. Each detected person comes back with a box and 17 keypoints, and the Ultralytics README says its models can track detected objects across video frames. Keeping identities stable is the hard part of group scenes; multi-person pose tracking covers it.
A size dial with published accuracy. Ultralytics' table runs from YOLO26n-pose at 57.2 mAP pose 50-95, 2.9 M parameters and 1.8 ms on a T4, to YOLO26x-pose at 71.6 mAP, 57.6 M parameters and 12.2 ms, all at 640 pixels on COCO Keypoints val2017. The same table puts YOLO26n-pose at 40.3 ms on a CPU through ONNX. Ultralytics YOLO pose models has the full table.
Your own keypoints. The pose docs show training on your own data, converting COCO keypoint JSON with convert_coco and use_keypoints=True, and point to datasets such as Tiger-Pose, Hand Keypoints and Dog-Pose. Ultralytics' annotation tool supports "custom keypoint layouts". MediaPipe ships "Pre-trained, ready-to-run models", and we found no training recipe for the pose landmarker in the files we read.
Export breadth. Ultralytics' export table lists 23 formats counting PyTorch itself, from CoreML (.mlpackage) and LiteRT (.tflite) for phones to TensorRT, OpenVINO and vendor formats such as Qualcomm QNN, Hailo and RKNN.
The licence often decides first#
The ultralytics/ultralytics LICENSE is the GNU Affero General Public License, version 3. Its section 13 says that if you modify the program, your modified version "must prominently offer all users interacting with it remotely through a computer network" an opportunity to receive its source. The Ultralytics README describes its Enterprise License as covering "business products and services, including internal tools, automated workflows, and production deployments, bypassing the open-source requirements of AGPL-3.0". In our reading, a closed-source app or service built on YOLO pose needs either full AGPL-3.0 compliance or that paid licence; Ultralytics publishes no price for it in the files we read. This is not legal advice: pose estimation model licenses reads the terms in full, and a lawyer should read them for your product.
MediaPipe raises no such question. If you need several people and an Apache-2.0 codebase, RTMPose is the alternative to weigh, with its checkpoint terms checked separately.
The accuracy numbers do not cross#
Google's MediaPipe Pose documentation reports BlazePose GHUM Heavy at 68.1, 73.0 and 74.0 mAP on its own Yoga, Dance and HIIT validation sets, scored on the 17 COCO keypoints with one person 2 to 4 meters from the camera. Ultralytics reports YOLO26x-pose at 71.6 mAP pose 50-95 on COCO Keypoints val2017. Different test sets, different scenes, different hardware: neither vendor benchmarks the other, so the only comparison that means anything is one you run on your own footage. Pose estimation accuracy explains the metrics.
Moving keypoints between them#
YOLO pose returns the 17 points in COCO order, from 0 nose to 16 right ankle. MediaPipe's 33 include the same 17 body points under the same names, at different indices: left hip is 11 in COCO and LEFT_HIP is 23 in MediaPipe's PoseLandmark enum. Map by name, using the COCO 17 keypoint map, the BlazePose 33 keypoint map and the crosswalk that joins them.
Which should you pick?#
- One user in front of a phone, joint angles for form feedback → MediaPipe: 33 landmarks, world coordinates and published phone figures, under Apache-2.0.
- A group class, a gym floor, or two people in one frame → YOLO pose, once the licence question is settled.
- Keypoints that are not on the human body, or a layout of your own → YOLO pose, which documents training on custom keypoint datasets.
- A closed-source product with no budget for a licence → MediaPipe for one person; for several, an Apache-2.0 option such as RTMPose.
- A web app → MediaPipe, whose Tasks API covers the web; see also MediaPipe vs MoveNet for the lighter browser option.
Neither returns reps or form feedback. That layer is yours to build or buy; AI workout tracking APIs compares the products that sell it.
Frequently asked questions
- Can YOLO pose run on a phone like MediaPipe?
- It can be exported for one: Ultralytics' export table lists CoreML (.mlpackage) and LiteRT (.tflite) among 23 formats. What Ultralytics does not publish is a phone benchmark; its table measures a CPU through ONNX and an NVIDIA T4 through TensorRT10. Google's BlazePose card, by contrast, reports frames per second on a Pixel 3. Measure YOLO pose on your own target phones before you commit.
- Does YOLO pose output 3D keypoints?
- Not in the results Ultralytics documents. Its pose results table lists keypoints.xy in pixels and keypoints.xyn normalized, both 2D, and keypoints.data as x, y plus an optional visibility or confidence value. MediaPipe Pose Landmarker returns a z value per landmark and world landmarks in meters from the hip centre, though its model card says that depth is up to scale rather than metric.
- Is YOLO pose more accurate than MediaPipe?
- The published numbers cannot answer that. Ultralytics reports YOLO26x-pose at 71.6 mAP pose 50-95 on COCO Keypoints val2017; Google reports BlazePose GHUM Heavy at 68.1 to 74.0 mAP on its own Yoga, Dance and HIIT sets with one person in frame. Different datasets and scenes mean the figures do not compare, so test both on footage of your own exercises.
- Do I need an Ultralytics Enterprise License to ship a YOLO pose app?
- If you cannot meet AGPL-3.0, in our reading yes. Ultralytics' code is licensed under the GNU AGPL version 3, and its README describes the Enterprise License as covering business products, internal tools and production deployments, bypassing the open-source requirements of AGPL-3.0. Ultralytics publishes no price for it in the files we read. Have a lawyer read the terms for your product.
- Can I train YOLO pose on my own keypoints?
- Yes. Ultralytics' pose docs walk through training YOLO26n-pose, converting existing COCO keypoint JSON with convert_coco and use_keypoints=True, and point to keypoint datasets such as Tiger-Pose, Hand Keypoints and Dog-Pose. Its annotation tool supports custom keypoint layouts. MediaPipe ships pre-trained pose models, and we found no training recipe for its pose landmarker in the files we read.
Keep reading
Elsewhere on the site
Pages that share this one’s concepts and sources, from other sections.
Next steps
Was this page useful?
Independent comparison, last reviewed October 22, 2026. Pricing, rate limits, and feature availability change often — confirm current details in each provider’s official documentation before you commit. Product and company names are trademarks of their respective owners; AIFitnessAPI is not affiliated with, endorsed by, or sponsored by any product listed here.
← All comparisons · by AIFitnessAPI