Nodes/ComfyUI-Apt_Preset/Mask_FaceSegment
ComfyUI Node

Mask_FaceSegment

Masking individual facial features in ComfyUI

By cardenluo·Created 2 years ago·Updated 4 days ago· 347
Mask_FaceSegment
  • images
  • IMAGE
  • MASK
◄Skinfalse►
◄Nosefalse►
◄Eyeglassesfalse►
◄Left-eyefalse►
◄Right-eyefalse►
◄Left-eyebrowfalse►
◄Right-eyebrowfalse►
◄Left-earfalse►
◄Right-earfalse►
◄Mouthfalse►
◄Upper-lipfalse►
◄Lower-lipfalse►
◄Hairfalse►
◄Earringfalse►
◄Neckfalse►
◄backgroundAlpha►

Retouching just the lips, relighting just the eyes, or building a mask for a targeted inpaint that leaves the rest of the face alone - all of those need masking finer than "the whole face." Mask_FaceSegment is cardenluo's ComfyUI-Apt_Preset node for exactly that level of detail: a face-parsing model exposed as a checklist of facial features.

What it does

This wraps a SegFormer face-parsing model - the README names 1038lab/segformer_face as the download. Feed it an image, toggle on whichever of fifteen facial regions you want (Skin, Nose, Eyeglasses, Left-eye, Right-eye, Left-eyebrow, Right-eyebrow, Left-ear, Right-ear, Mouth, Upper-lip, Lower-lip, Hair, Earring, Neck), and it returns a combined mask of just those parts. Everything defaults off - you're building the mask up region by region, not trimming down from "whole face."

This is a finer-grained cousin of general background removal: where a background-removal model like BiRefNet or RMBG-2.0 gives you subject-versus-background as a single mask, a face-parsing model like this one classifies pixels within the subject itself into named anatomical regions - the same category of tool as the CelebAMask-style face taxonomies used elsewhere in the ecosystem for detail-preserving face edits.

Inputs and outputs

  • images - the input image (required).
  • Fifteen boolean toggles listed above, all optional, all default false.
  • background - fill for unselected regions: Alpha, white, black, green, red, blue, or gray.

Outputs: IMAGE (the composited result) and MASK (the combined selection). The mask is what you'll typically chain forward - into an inpaint step scoped to Mouth + Upper-lip + Lower-lip for a lip-only edit, say, or Left-eye + Right-eye for eye-specific work.

Toggle one or two related features at a time when you're first testing this node - Left-eye and Right-eye together, for instance - rather than flipping on everything at once, so a bad segmentation on one feature doesn't get lost in a busy combined mask.

Installing it

ComfyUI Manager: search ComfyUI-Apt_Preset. Manual install:

cd ComfyUI/custom_nodes
git clone https://github.com/cardenluo/ComfyUI-Apt_Preset.git

Run install.bat (Windows) or install requirements.txt yourself, restart ComfyUI.

This node needs a model file that isn't part of the base install. Grab 1038lab/segformer_face (or the pack's bundled resource pack, linked in the README) and place it at:

ComfyUI/models/Apt_File/segformer_face

Without it, the node has nothing to run inference with.

Troubleshooting

If the node doesn't show up at all, check for a pack-wide import failure before anything else - ComfyUI-Apt_Preset is large and there's a documented IMPORT FAILED report for it; the ComfyUI console at startup will show the real error if a dependency is missing.

If it loads but fails to run, check the Apt_File/segformer_face folder first - this is the most likely culprit given the model isn't auto-downloaded. And if the mask boundary looks rougher than you expected on features like Left-eyebrow or Earring, that's a limitation of the underlying model on small, thin regions rather than a setup mistake - small facial features are consistently the hardest case for this style of parsing model, the same way flyaway hair is the hardest case for general background removal.

CategoryApt_Preset/mask

Inputs (17)

NameTypeDefaultDescription
imagesIMAGE—
SkinoptBOOLEANfalse—
NoseoptBOOLEANfalse—
EyeglassesoptBOOLEANfalse—
Left-eyeoptBOOLEANfalse—
Right-eyeoptBOOLEANfalse—
Left-eyebrowoptBOOLEANfalse—
Right-eyebrowoptBOOLEANfalse—
Left-earoptBOOLEANfalse—
Right-earoptBOOLEANfalse—
MouthoptBOOLEANfalse—
Upper-lipoptBOOLEANfalse—
Lower-lipoptBOOLEANfalse—
HairoptBOOLEANfalse—
EarringoptBOOLEANfalse—
NeckoptBOOLEANfalse—
backgroundoptCOMBOAlpha7 options: Alpha, white, black, green, red, blue, +1

Outputs (2)

NameTypeDescription
IMAGEIMAGE—
MASKMASK—