LivePortrait Load FaceAlignmentCropper
For the small faces MediaPipe misses
- cropper
The newest detector in the pack, added in a later update to fix the exact gap the other two leave open: small faces. LivePortraitLoadFaceAlignmentCropper loads a detector built on the face-alignment library (1adrianb's), which can use two blazeface variants and the SFD detector - and crucially, blazeface's back-camera model detects faces much farther away than the short-range blazeface that MediaPipe is stuck with. If you've ever run a wide shot through LivePortrait and gotten a row of black frames where the face should be, this is the node that fixes it.
The detector choice
- blazeface_back_camera (default) - the model tuned for selfie-camera and rear-camera distances, i.e. it finds small faces at distance. This is the whole reason to use this node.
- blazeface - the short-range front-camera model; about on par with what MediaPipe offers.
- sfd - the older Single Shot Face Detector. Different failure profile, sometimes better in odd lighting.
Two things worth knowing before you switch:
- The first warmup is slow. The README warns the initial run can take a long time while it loads. Subsequent runs are quick. Don't assume it's hung - let it finish once.
- The license story stays clean. This detector path doesn't pull in InsightFace's non-commercial weights, so you keep the permissive stack.
The device controls
Three device/dtype inputs to get right:
- landmarkrunner_device - where the landmark model runs; includes
torch_gpulike the MediaPipe node (the PyTorch-converted landmark runner, no ONNX needed). - face_detector_device (
cuda/cpu/mps) - where the detector itself runs. Defaultcuda; on Apple silicon pickmps. - face_detector_dtype (
fp16/bf16/fp32, defaultfp16) - precision for the detector. fp16 is fast and fine; drop to fp32 if you see detection weirdness.
Plus keep_model_loaded (default on). Output is a cropper (LPCROPPER) into LivePortrait Cropper - same hand-off as the other two loaders, so swapping detectors in an existing workflow is a one-node change.
Where it fits
The decision tree for the three loaders: InsightFace when you need extreme-angle robustness and don't care about the license, MediaPipe as the clean default, and this one when MediaPipe can't find the face - small faces, wide shots, faces far from the driver. It's the least-tested of the three, so expect to fiddle with face_detector_dtype or switch to sfd if your source confuses it. And remember that warmup cost is one-time; after that it behaves like a normal detector.
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 | LPCROPPER | — |