Face Keypoints Preprocessor
Turn any photo into a pose reference for InstantID
- faceanalysis
- image
- IMAGE
By default, InstantID poses your generated face the same way your reference photo is posed - it extracts five facial keypoints from that image and conditions on them. But the README is explicit that you don't have to accept that: "you can use a different pose by sending an image to the image_kps input." Face Keypoints Preprocessor is the node that produces that alternate keypoint image - feed it any face photo, and it draws out just the pose/landmark map, decoupled from whose face it is.
This is a small, single-purpose node, and its low search traffic reflects that most people never touch it directly - the all-in-one nodes extract keypoints from your reference automatically. You reach for this when you specifically want a different pose than your identity photo provides, or when you want to see, visually, what InstantID's keypoint detection is actually picking up.
How it works
It runs the same InsightFace-based keypoint detection that InstantID uses internally, but as a standalone step that outputs the visualization instead of feeding straight into a controlnet. The five points are the classic face landmarks - eyes, nose, mouth corners - drawn onto a blank or overlaid canvas, essentially an OpenPose-style preview for faces. That output image is a valid image_kps input anywhere InstantID accepts one.
The inputs and outputs that matter
Two required inputs, nothing optional: faceanalysis (the loaded InsightFace engine, from InstantID Face Analysis) and image (whatever photo you want the pose extracted from - it doesn't need to be the same person as your identity reference).
One output: IMAGE - the keypoint visualization, ready to plug into the image_kps input on Apply InstantID, Apply InstantID Advanced, or Apply InstantID ControlNet.
Installing it
Comes bundled with the main pack - search "ComfyUI InstantID (Native Support)" in ComfyUI Manager, or git clone https://github.com/cubiq/ComfyUI_InstantID into ComfyUI/custom_nodes and restart. Since it needs InstantID Face Analysis upstream, you need the same InsightFace setup as everything else in the pack: insightface + onnxruntime/onnxruntime-gpu installed, and the antelopev2 model manually placed in ComfyUI/models/insightface/models/antelopev2. Nothing extra beyond that - this node doesn't need the InstantID model or controlnet weights, since it never touches identity, only pose.
Common issues
There isn't much of a failure surface unique to this node - if InstantID Face Analysis is loaded correctly, this one mostly just works. The problems you'll hit are upstream of it:
No face detected in the pose-source image. If the photo you feed in doesn't have a clearly visible, front-facing-ish face, keypoint detection can fail silently or produce a garbage map. Use a reasonably clear reference photo, same as you would for the identity image.
Confusing this with the identity reference. This node's image input has nothing to do with who the generated face looks like - that's entirely determined by whatever photo goes into the identity path (Face Analysis → the Apply InstantID nodes). This node only controls how the face is posed and angled. It's easy to assume feeding a photo here will also carry that person's identity; it won't.
Not knowing you need it at all. Most workflows don't - if you're happy with InstantID posing the output the way your reference photo is already posed, the all-in-one nodes extract keypoints internally and you never need this preprocessor. It's specifically for when you want to separate "whose face" from "what pose," which is the classic InstantID demo trick (someone else's identity, a wildly different reference pose).
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| faceanalysis | FACEANALYSIS | — | |
| image | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |