- ibb_pose_nodes.py: full implementation with Body/OpenPose (YOLO11) and WholeBody (DWPose ONNX) backends, single/multi-person detection, pose image + OpenPose JSON output, auto-download support - requirements.txt: pinned dependency list - README.md: full installation and usage documentation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: kukulu00 <1170651+kukulu00@users.noreply.github.com>
138 lines
3.8 KiB
Markdown
138 lines
3.8 KiB
Markdown
# IBB_POSE — ComfyUI Pose Estimation Node
|
||
|
||
A ComfyUI custom node for robust human pose estimation.
|
||
Inspired by [SDPose-OOD](https://github.com/judian17/ComfyUI-SDPose-OOD).
|
||
|
||
**Compatibility**: Python 3.13 · torch 2.10+ · CUDA 12/13 · ComfyUI Portable
|
||
|
||
---
|
||
|
||
## Features
|
||
|
||
| Feature | Details |
|
||
|---|---|
|
||
| **Skeleton types** | Body (17 kpts COCO), OpenPose (18 kpts), WholeBody (133 kpts) |
|
||
| **Detection modes** | Single person · Multi-person |
|
||
| **Output** | Pose image · OpenPose JSON · Both |
|
||
| **Auto-download** | Models fetched automatically on first use |
|
||
| **Compatibility** | Python 3.13, torch 2.x, CUDA 12/13, CPU |
|
||
|
||
---
|
||
|
||
## Installation
|
||
|
||
1. Clone into your `ComfyUI/custom_nodes/` directory:
|
||
```bash
|
||
cd ComfyUI/custom_nodes
|
||
git clone https://github.com/IBB666/IBB_POSE
|
||
```
|
||
2. Install dependencies:
|
||
```bash
|
||
cd IBB_POSE
|
||
pip install -r requirements.txt
|
||
```
|
||
3. Start ComfyUI – models download automatically on first use.
|
||
|
||
### Manual model placement
|
||
|
||
| Mode | Model | Destination |
|
||
|---|---|---|
|
||
| Body / OpenPose | `yolo11n-pose.pt` (small), `yolo11m-pose.pt` (medium), `yolo11x-pose.pt` (large) | `ComfyUI/models/IBB_POSE/` |
|
||
| WholeBody | `dw-ll_ucoco_384.onnx` + `yolox_l.onnx` | `ComfyUI/models/IBB_POSE/` |
|
||
|
||
WholeBody models: [yzd-v/DWPose](https://huggingface.co/yzd-v/DWPose)
|
||
|
||
---
|
||
|
||
## Nodes
|
||
|
||
### `IBB Pose — Load Model`
|
||
|
||
Loads and caches the pose estimation model.
|
||
|
||
| Parameter | Options | Description |
|
||
|---|---|---|
|
||
| `skeleton_type` | Body / WholeBody / OpenPose | Pose skeleton format |
|
||
| `model_size` | small / medium / large | Model size / accuracy tradeoff |
|
||
| `device` | auto / cuda / cpu | Inference device |
|
||
| `precision` | fp32 / fp16 / bf16 | Numeric precision (fp32 for CPU) |
|
||
| `auto_download` | True / False | Fetch model files automatically |
|
||
|
||
**Output**: `IBB_POSE_MODEL`
|
||
|
||
---
|
||
|
||
### `IBB Pose — Run Estimation`
|
||
|
||
Runs pose estimation on one or more images.
|
||
|
||
| Parameter | Options | Description |
|
||
|---|---|---|
|
||
| `ibb_pose_model` | IBB_POSE_MODEL | Model from Load node |
|
||
| `image` | IMAGE | Input image(s) |
|
||
| `detection_mode` | single / multi | Person detection strategy |
|
||
| `output_type` | PoseImage / JSON / Both | What to compute |
|
||
| `score_threshold` | 0.05–0.95 | Minimum keypoint confidence |
|
||
| `overlay_alpha` | 0.0–1.0 | 0=original, 1=pure pose map |
|
||
| `pose_scale` | 0.1–5.0 | Line / dot thickness multiplier |
|
||
| `keep_face` | bool | Include face keypoints (WholeBody) |
|
||
| `keep_hands` | bool | Include hand keypoints (WholeBody) |
|
||
| `keep_feet` | bool | Include foot keypoints (WholeBody) |
|
||
| `save_json` | bool | Save JSON to `ComfyUI/output/` |
|
||
| `filename_prefix` | string | Output JSON file prefix |
|
||
|
||
**Outputs**: `pose_image` (IMAGE) · `pose_json` (STRING)
|
||
|
||
---
|
||
|
||
### `IBB Pose — JSON to Image`
|
||
|
||
Renders an OpenPose JSON string to a pose visualisation image.
|
||
|
||
---
|
||
|
||
## JSON Format
|
||
|
||
Output follows the standard OpenPose JSON format:
|
||
|
||
```json
|
||
{
|
||
"people": [
|
||
{
|
||
"pose_keypoints_2d": [x, y, score, ...],
|
||
"face_keypoints_2d": [...],
|
||
"hand_left_keypoints_2d": [...],
|
||
"hand_right_keypoints_2d": [...],
|
||
"foot_keypoints_2d": [...]
|
||
}
|
||
],
|
||
"canvas_width": 512,
|
||
"canvas_height": 768
|
||
}
|
||
```
|
||
|
||
Compatible with [ComfyUI-OpenPose-Editor](https://github.com/judian17/ComfyUI-OpenPose-Editor-jd).
|
||
|
||
---
|
||
|
||
## Skeleton Keypoint Layout
|
||
|
||
### Body / OpenPose (18 pts)
|
||
OpenPose-18: nose · neck · shoulders · elbows · wrists · hips · knees · ankles · eyes · ears
|
||
|
||
### WholeBody (133 pts, DWPose)
|
||
- 0–16: Body (COCO-17)
|
||
- 17–22: Feet (6)
|
||
- 23–90: Face (68)
|
||
- 91–111: Left hand (21)
|
||
- 112–132: Right hand (21)
|
||
|
||
---
|
||
|
||
## Recommended Workflow
|
||
|
||
```
|
||
Load Image → IBB Pose Load Model → IBB Pose Run Estimation → Preview Image
|
||
└→ Save Text (JSON)
|
||
```
|