yolov8-pose-coreml / README.md
devilyouwei's picture
Add YOLOv8 Pose n, s, and m Core ML packages
8d8d85e verified
|
Raw
History Blame Contribute Delete
2.91 kB
---
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.