FaceShaper Load FaceAlignment
FaceShaper's third detector option, zero manual downloads
- cropper
The display name - "FaceShaper Load FaceAlignment" - puts it in the same family as the other two loaders (FaceShaperLoadInsightFaceCropper, FaceShaperLoadMediaPipeCropper), but it's built on a different library entirely: 1adrianb/face-alignment, a BlazeFace-based face detector and landmark model with a free, unrestricted license. If InsightFace's non-commercial weight license rules it out and MediaPipe's weaker extreme-angle detection worries you, this is the third door.
Where it fits
All three loader nodes produce the same thing - a cropper handle that plugs into FaceShaperCropper - and are interchangeable for that purpose. This one's specific selling point, per the pack's own README, is that it's free to use with no licensing caveat attached (unlike InsightFace), and unlike the other two, its model weights don't need to be fetched by hand at all - they download themselves automatically the first time the node runs.
The inputs that matter
This loader has more knobs than the other two, because it's stitching together two separate sub-components - a face detector and a landmark runner - each with its own device setting:
face_detector(blazeface/blazeface_back_camera/sfd, defaultblazeface_back_camera) - which underlying detector model to use.blazeface_back_camerais tuned for the kind of framing a rear phone camera produces;blazefaceis the plain front-camera-style variant;sfd(S3FD) is a heavier, generally more accurate detector if you'd rather trade speed for accuracy.landmarkrunner_device(defaulttorch_gpu) andface_detector_device(defaultcuda) - separate device controls for the landmark model and the face detector respectively. They're independent settings because the two pieces come from different underlying libraries; if you're troubleshooting a slow or failing run, check both, not just one.face_detector_dtype(fp16/bf16/fp32, defaultfp16) - precision for the detector.fp16is the default and fine for most GPUs; drop tofp32if you're getting numerically odd detections on older hardware that doesn't handle fp16 well.keep_model_loaded(defaulttrue) - keeps both sub-models resident between runs.
The single output, same as the other loaders, is cropper (FSMCROPPER), wired into FaceShaperCropper's cropper input.
Installing it
Through ComfyUI Manager, search "ComfyUI_FaceShaper," or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/fssorc/ComfyUI_FaceShaper
then restart. Unlike the InsightFace and MediaPipe loaders, this one has no separate pip install or manual model-download step called out in the README beyond the pack's own requirements - the three model files it needs (anchors.npy, blazeface.pth, blazefaceback.pth) download automatically the first time you run this node, landing in your system's torch hub cache (~/.cache/torch/hub/checkpoints/ on Linux, C:\Users\[UserName]\.cache\torch\hub\checkpoints\ on Windows). You still need the shared landmark.onnx / landmark_model.pth files from Kijai/LivePortrait_safetensors under models/liveportrait, same as the other two loaders - that part isn't optional regardless of which detector backend you choose.
Common issues & troubleshooting
First run fails or hangs with no obvious model-loading error. Since the BlazeFace weights auto-download on first use rather than being bundled or pre-fetched, this node needs working internet access the first time it runs. If you're on an isolated or firewalled machine, download anchors.npy, blazeface.pth, and blazefaceback.pth manually from the BlazeFace-PyTorch repo and place them in the torch hub cache path yourself.
Confusing device settings, or a run that's slower than expected. Because landmarkrunner_device and face_detector_device are separate controls, it's easy to set one to a GPU device and leave the other on CPU by accident. Check both if performance seems off - this is the most beginner-unfriendly part of an otherwise straightforward loader.
Detections look off on unusual framing. Try swapping face_detector between blazeface, blazeface_back_camera, and sfd - they're tuned differently, and a mismatch between the detector variant and your actual photo framing is a plausible, cheap thing to try before assuming something's broken.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| face_detector | COMBO | blazeface_back_camera | 3 options: blazeface, blazeface_back_camera, sfd |
| landmarkrunner_device | COMBO | torch_gpu | 5 options: CPU, CUDA, ROCM, CoreML, torch_gpu |
| face_detector_device | COMBO | cuda | 3 options: cuda, cpu, mps |
| face_detector_dtype | COMBO | fp16 | 3 options: fp16, bf16, fp32 |
| keep_model_loaded | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| cropper | FSMCROPPER | — |