Nodes/ComfyUI-Inference-Core-Nodes/[Inference.Core] AnimalPose Estimator (AP10K)
ComfyUI Node

[Inference.Core] AnimalPose Estimator (AP10K)

OpenPose, but for four-legged subjects

By LykosAI·Created 2 years ago·Updated about a year ago· 33
[Inference.Core] AnimalPose Estimator (AP10K)
  • image
  • IMAGE
  • POSE_KEYPOINT
bbox_detectoryolox_l.torchscript.pt
pose_estimatorrtmpose-m_ap10k_256_bs5.torchscript.pt
resolution512

Human OpenPose is useless on a dog. Its whole skeleton assumes two arms, two legs, and a head sitting on top - feed it a cat and it either finds nothing or hallucinates a person-shaped skeleton where the cat is. AnimalPose fixes that by using a keypoint scheme trained specifically for quadrupeds (AP10K: roughly ten thousand annotated images across mammal species), so you can pose-condition generations of animals the same way DWPose lets you pose-condition humans. It's a narrow tool, but for animal work it's the only correct one in this pack.

How it works

Same two-stage recipe as DWPose: a bounding-box detector (YOLOX, by default) finds the animals in the frame, then a pose estimator - RTMPose, trained on the AP10K dataset - places keypoints tuned for animal anatomy: spine, legs, head, tail, rather than a human joint layout. Point it at an animal-openpose ControlNet checkpoint and the model regenerates an animal matching that pose, free to change species details, color, breed, or setting around the fixed skeleton.

The inputs and outputs that matter

  • image - required, your source photo of the animal.
  • bbox_detector (default yolox_l.torchscript.pt) - the detector. TorchScript vs ONNX here isn't cosmetic, it's a backend choice (see troubleshooting below).
  • pose_estimator (default rtmpose-m_ap10k_256_bs5.torchscript.pt) - the keypoint model, same TorchScript/ONNX split.
  • resolution (default 512) - working resolution.

Two outputs: IMAGE, the rendered animal skeleton for your ControlNet Apply node, and POSE_KEYPOINT, the raw keypoint data as structured JSON if you want to save or reuse it. The animal-pose ControlNet model itself is a separate download and load - this node only makes the conditioning map.

How to install it

ComfyUI Manager: search ComfyUI-Inference-Core-Nodes, install, restart. By hand:

cd ComfyUI/custom_nodes
git clone https://github.com/LykosAI/ComfyUI-Inference-Core-Nodes

then run install.py, or pick the extra matching your hardware: pip install -e .[cuda12], .[cuda], .[rocm], .[directml], or .[cpu]. Restart ComfyUI. The detector and pose weights download from Hugging Face the first time you run the node.

Common issues & troubleshooting

The speed trap that catches nearly everyone with this node family: if it's crawling, it's almost certainly fallen back to CPU. The .onnx checkpoint options need a matching onnxruntime-gpu build for your exact CUDA version, and when they don't match, onnxruntime silently drops acceleration and prints a warning about missing providers - DWPose's flagship version of this same problem is one of the most reported issues in this pack's community threads. The fix that needs zero extra setup: leave both bbox_detector and pose_estimator on their default .torchscript.pt options. TorchScript runs GPU-accelerated out of the box with no separate onnxruntime dependency to get wrong.

Second, detection quality lives and dies on framing - a clearly visible, unobstructed animal detects cleanly; a partially hidden or oddly posed one gives you a broken skeleton and, downstream, a broken generation. And the constant reminder for every preprocessor in this pack: no animal-pose ControlNet model loaded means this node's output does nothing at all in your final image, no matter how clean the skeleton looks.

CategoryControlNet Preprocessors/Faces and Poses Estimators

Inputs (4)

NameTypeDefaultDescription
imageIMAGE
bbox_detectoroptCOMBOyolox_l.torchscript.pt5 options: yolox_l.torchscript.pt, yolox_l.onnx, yolo_nas_l_fp16.onnx, yolo_nas_m_fp16.onnx, yolo_nas_s_fp16.onnx
pose_estimatoroptCOMBOrtmpose-m_ap10k_256_bs5.torchscript.pt2 options: rtmpose-m_ap10k_256_bs5.torchscript.pt, rtmpose-m_ap10k_256.onnx
resolutionoptINT51264–2048

Outputs (2)

NameTypeDescription
IMAGEIMAGE
POSE_KEYPOINTPOSE_KEYPOINT