| --- |
| license: agpl-3.0 |
| library_name: coremltools |
| pipeline_tag: keypoint-detection |
| tags: |
| - coreml |
| - apple-silicon |
| - yolo |
| - pose-estimation |
| - macos |
| --- |
| |
| # YOLOv8 Pose — Core ML |
|
|
| Ready-to-use Core ML conversions of Ultralytics YOLOv8 Pose for human pose estimation on Apple Silicon. The `n`, `s`, and `m` variants are provided as `.mlpackage` models for use with the CPU, GPU, and Apple Neural Engine. |
|
|
| These models power pose-driven apps and games in [Hugging Mac](https://github.com/devilyouwei/hugging-mac), an open-source platform for building local AI experiences on macOS. |
|
|
| ## Models |
|
|
| | Variant | Package size | Best for | |
| |---|---:|---| |
| | `yolov8n-pose` | 6.8 MB | Lowest latency and resource usage | |
| | `yolov8s-pose` | 23.5 MB | Balanced speed and accuracy | |
| | `yolov8m-pose` | 53.2 MB | Higher accuracy | |
|
|
| ## Provenance and conversion |
|
|
| - Source: [Ultralytics assets v8.2.0](https://github.com/ultralytics/assets/releases/tag/v8.2.0) |
| - Task: person detection and COCO 17-keypoint pose estimation |
| - Input size: fixed `640 × 640`, batch size 1 |
| - Precision: FP16 conversion |
| - NMS: not embedded; apply confidence filtering and NMS after inference |
|
|
| ## Input and output |
|
|
| | Name | Type | Shape | Description | |
| |---|---|---|---| |
| | `image` | RGB image | `640 × 640` | Letterboxed model input | |
| | `predictions` | FP32 multi-array | `1 × 56 × 8400` | Boxes, person scores, and 17 keypoints (`x`, `y`, visibility) | |
|
|
| ## Core ML example |
|
|
| ```python |
| from pathlib import Path |
| |
| import coremltools as ct |
| from huggingface_hub import snapshot_download |
| from PIL import Image, ImageOps |
| |
| root = Path(snapshot_download( |
| repo_id="hugging-mac/yolov8-pose-coreml", |
| allow_patterns=["yolov8n-pose.mlpackage/**"], |
| )) |
| model = ct.models.MLModel( |
| root / "yolov8n-pose.mlpackage", |
| compute_units=ct.ComputeUnit.ALL, |
| ) |
| image = ImageOps.pad( |
| Image.open("person.jpg").convert("RGB"), |
| (640, 640), |
| color=(114, 114, 114), |
| ) |
| predictions = model.predict({"image": image})["predictions"] |
| print(predictions.shape) # (1, 56, 8400) |
| ``` |
|
|
| The output is raw. See the [Hugging Mac YOLOv8 Pose SDK](https://github.com/devilyouwei/hugging-mac/tree/main/packages/hugging_mac_sdk/src/hugging_mac_sdk/models/yolov8_pose) for complete preprocessing, NMS, keypoint decoding, and coordinate restoration. |
|
|
| ## Integrity |
|
|
| | Package | Directory SHA-256 | |
| |---|---| |
| | `yolov8n-pose.mlpackage` | `84d3154a02c99307ec9e5bab023551eaa4cd16660d61b61fc361ac3c760eb863` | |
| | `yolov8s-pose.mlpackage` | `660389b72cf309e66af18fdafe80d1c719809921b77ea2d417b76686cf44801c` | |
| | `yolov8m-pose.mlpackage` | `da9a330d271eac5b1b740b2b78b2fbcc3a3406a5e5d25cb459afd122d091092a` | |
|
|
| ## License |
|
|
| The converted models retain the upstream Ultralytics licensing terms and are published under AGPL-3.0. Review Ultralytics licensing requirements before commercial or closed-source use. Hugging Mac is not affiliated with or endorsed by Ultralytics. |
|
|