Nodes/ComfyUI_PuLID_Flux_ll/Pulid Flux Face Detector
ComfyUI Node Runs on cloud

Pulid Flux Face Detector

See exactly which face PuLID is about to use

By lldacing·Created 2 years ago·Updated 9 months ago· 475
Pulid Flux Face Detector
  • face_analysis
  • image
  • options
  • embed_face
  • align_face
  • face_bbox_image

A debug window into what PuLID is actually seeing. ApplyPulidFlux detects a face, crops it, and builds an embedding from it - all invisibly. This node runs that same detection and shows you the crops, so instead of generating, squinting, and guessing whether it grabbed the right face, you just look. It doesn't feed the generation at all. It's a preview node, and on a fiddly multi-face reference it saves you a pile of wasted runs.

Think of it as the companion to PulidFluxOptions. Options lets you choose which face by order and index; this detector lets you verify that your choice resolved to the face you meant. Wire them together and dialing in a group photo becomes look-and-adjust instead of trial-and-error.

Inputs and outputs

Three inputs, all required:

  • face_analysis - the FACEANALYSIS from your InsightFace (or FaceNet) loader. Same one you feed ApplyPulidFlux, so the detection matches.
  • image - the reference photo you're inspecting.
  • options - an OPTIONS bundle from PulidFluxOptions, so the ordering and index you're testing are the ones being visualized.

Three image outputs, each a list (one entry per detected face):

  • embed_face - the crop the identity embedding is built from. This is the face whose likeness actually gets transferred.
  • align_face - the crop used for feature alignment.
  • face_bbox_image - your original image with the detected bounding box drawn on it. The quickest "did it find the right face?" check.

One nuance the README calls out: with input_faces_align_mode = 0, embed_face and align_face are produced by different detectors and may not even be the same face - that's the old inconsistency. With align_mode = 1 (the default in PulidFluxOptions), they're always the same face. If you see embed_face and align_face showing two different people, that's your align_mode.

Hook any of these outputs into a PreviewImage node to actually see them.

Installing it

Bundled with ComfyUI_PuLID_Flux_ll. Manager search ComfyUI_PuLID_Flux_ll, or clone into custom_nodes, pip install -r requirements.txt, pip install facenet-pytorch --no-deps, restart. ComfyUI ≥ 0.3.7, disable old balazik PuLID nodes first. It reuses the same face-analysis models the loader already pulled, so no extra downloads.

Common issues & troubleshooting

embed_face and align_face show different faces. You're on input_faces_align_mode = 0. Set it to 1 in PulidFluxOptions and they'll match - same detector, same face.

The bounding box is on the wrong person. Adjust input_faces_order and input_faces_index in the PulidFluxOptions feeding this node, re-run, and watch face_bbox_image until the box lands on your subject. Then wire those same options into ApplyPulidFlux.

Outputs look empty or nothing previews. These are IMAGE list outputs - route them through a PreviewImage (or SaveImage) node to view them; they don't display on their own. If detection genuinely found no face, check the reference photo actually has a clear, detectable face in it.

Do I even need this in my final graph? No. It's a diagnostic. Once you've confirmed the right face is selected, you can leave the detector out of the production workflow - the real selection happens in PulidFluxOptions → ApplyPulidFlux.

Categorypulid

Inputs (3)

NameTypeDefaultDescription
face_analysisFACEANALYSIS
imageIMAGE
optionsOPTIONS

Outputs (3)

NameTypeDescription
embed_faceIMAGE
align_faceIMAGE
face_bbox_imageIMAGE