Nodes/comfyui-face-liquify/Face Liquify Effect
ComfyUI Node

Face Liquify Effect

Photoshop-style face warping in ComfyUI (and why \"Thin Face\" is a lie)

By yichengup·Created about a year ago·Updated 8 months ago· 4
Face Liquify Effect
  • image
  • IMAGE
effect_type
strength0.50
eye_scale0.30
smooth0.50
area_scale1.0
frame_blend0.20
face_order
face_indicesall

Face Liquify Effect is a Photoshop-style "liquify" warper that runs entirely inside ComfyUI - no diffusion, no sampling, no seed. You feed it an image or a batch of video frames and it pushes pixels around to fatten a face, shrink it, or enlarge the eyes. It's the node you reach for when you want a quick, deterministic reshape that doesn't change the person's identity, and especially when you're working with video, where re-sampling every frame is slow and ends up flickering.

The example workflow bundled with the pack spells out the intended use: load a video with VideoHelperSuite's VHS_LoadVideo, push the frames through this node, and combine them back into a clip. That's the sweet spot. A per-frame geometric warp stays temporally stable in a way frame-by-frame img2img never will, and frame_blend smooths any residual jitter between frames for you.

How it works

Under the hood it's two familiar things bolted together. First, insightface runs face detection and pulls 106-point landmarks per face - the same library that powers every identity tool in the ecosystem. Second, it applies a classic radial warp: each pixel near a face gets remapped by a distance-based influence curve using cv2.remap with cubic interpolation. No latent space involved, so the output is pixel-identical in every way except the geometry you asked for.

The four effect types map to different warp modes, and this is where the README's naming gets cute:

  • Fat Face pulls pixels toward the face center - genuinely fattening.
  • Small Face pushes pixels outward, shrinking the face at 80% strength.
  • Big Face pinches, which reads as enlarging the face.
  • Thin Face doesn't slim anything. It runs the eye-enlargement routine (apply_eye_enlargement) - a PUSH warp at each eye's landmarks. The author's own Chinese label for it is 大眼, "big eyes." So if you pick Thin Face expecting a slimmer jaw, you get bigger eyes instead. That's not a bug; it's the effect just wearing a misleading name.

The inputs that matter

Most of the defaults are sane, so a beginner can set three things and go:

  • effect_type - the four-way enum above.
  • strength (0–1, default 0.5) - how hard the warp pushes. This is the one you'll ride up and down.
  • face_indices - all or a comma list like 0,1,2 to touch only specific faces in a group shot.

The rest are refinements. eye_scale (0–1) only does anything for Thin Face. area_scale (0.5–2) grows or shrinks the warp radius, so crank it up if you want the effect bleeding past the face. smooth (0–1) Gaussian-blurs the result, and the README flatly recommends 0 - it's a cheap softening that mostly trades sharpness for "vibes." frame_blend (0–1) matters only for batches, blending each frame with the previous processed one. face_order decides which face gets treated first when there are several.

The single output is an IMAGE of the same shape as the input - a single frame or a full batch - so it plugs straight back into whatever handled your frames before.

Installing it

The README gives the standard two-step: clone into custom_nodes, install requirements, restart.

cd ComfyUI/custom_nodes
git clone https://github.com/yichengup/comfyui-face-liquify
cd comfyui-face-liquify
pip install -r requirements.txt

ComfyUI Manager should also find it if you search "Face Liquify"; the node lives under Face Liquify/image in the node browser. Then comes the heavy part: requirements.txt pulls insightface, onnxruntime, and onnxruntime-gpu. InsightFace has a well-earned reputation as one of the worst installs in local generation, and onnxruntime-gpu in particular demands its CUDA/cuDNN versions line up - the README warns that system CUDA and torch's CUDA must match, and that CPU-only processing is painfully slow versus ~20s a frame on GPU. First run also auto-downloads the buffalo_l model pack (~326MB) into ~/.insightface/models/, so don't panic when the first execution hangs on a download. One quirk: both onnxruntime and onnxruntime-gpu are listed, and they're the same Python package fighting over the same module - if the install balks, try installing just one flavor.

Gotchas worth knowing

If the node silently returns your image unchanged, it means the detector found no face - it passes input straight through on a detection miss or an exception. Watch that face_indices indexing matches the order set by face_order; the indices are positional in the sorted list, not the original left-to-right scan. And a word on licensing: the code is MIT, but the insightface weights this node downloads are non-commercial. Fine for personal and hobby work, a non-starter if you're shipping a product. Also remember what this isn't: it's a geometric warp, not a face fixer like Impact Pack's FaceDetailer. If your problem is a distorted face baked in by the sampler, liquifying it won't help - that's a re-generation job, and this is a retouch job.

CategoryFace Liquify/image

Inputs (9)

NameTypeDefaultDescription
imageIMAGE
effect_typeCOMBO4 options: Fat Face, Thin Face, Big Face, Small Face
strengthFLOAT0.500–1
eye_scaleFLOAT0.300–1
smoothFLOAT0.500–1
area_scaleFLOAT1.00.5–2
frame_blendFLOAT0.200–1
face_orderCOMBO4 options: Large to Small, Small to Large, Left to Right, Right to Left
face_indicesSTRINGall

Outputs (1)

NameTypeDescription
IMAGEIMAGE