Nodes/Arc2Face ComfyUI Node Library/Arc2Face Img2Img Generator
ComfyUI Node

Arc2Face Img2Img Generator

The Arc2Face Img2Img Generator

By caleboleary·Created 2 years ago·Updated 2 years ago· 53
Arc2Face Img2Img Generator
  • face_embedding
  • unet
  • encoder
  • initial_image
  • IMAGE
negative_promptugly, deformed, noisy, blurry, low contrast, split image
num_inference_steps30
guidance_scale2.7
num_images1
seed-1
denoise_strength0.50
extra_param

The plain Arc2Face Generator is fun, but it drops a face onto a random background with random clothes - the model has no way to control anything except who it is. The Arc2Face Img2Img Generator fixes the interesting part: give it an initial image and it redraws toward your face identity while keeping the pose, framing, clothes, and scene. This is the node people actually reach for, and it's the one the author's own release post was most excited about.

The mechanism is standard img2img. It builds an AutoPipelineForImage2Image on the same SD1.5 base as the Generator, swaps in the Arc2Face UNet and encoder, and injects the face embedding the same way - fixed "photo of a id person" prompt with the vector at the "id" token. The init image gets noise added and partially denoised, and denoise_strength decides how much of the original survives. Low denoise, low change; high denoise, the embedding dominates.

The inputs that matter

  • face_embedding, unet, encoder - the same three wiring sockets as the Generator, fed by the Face Extractor and the two loaders.
  • initial_image - your starting photo or render. Needs to be at least 64px on each side, or the node raises a hard error.
  • denoise_strength - 0.5 default. The practical range from the author's release thread is 0.4–0.55: enough to pull the face toward the identity, low enough to keep the original composition intact. Above ~0.7 you're mostly re-generating, and the lack of prompt control starts to hurt.
  • seed, num_inference_steps, guidance_scale, num_images, negative_prompt - same defaults as the Generator (30 steps, CFG 2.7), and the same advice applies: keep them low and keep the default negative prompt.
  • extra_param - a STRING appended to the fixed prompt. It's the only prompt lever in the entire pack, and the author's own testing found positive text generally made output worse. Leave it empty unless you're experimenting.

Output

IMAGE - the transformed image(s), same shape as the input, ready for Save or Preview.

The workflow that makes this node great

The canonical use, straight from the README and the author's videos: crop the face region, img2img it at low denoise, paste it back. Feed the generator a close crop of the face from a render, run it at ~0.45 denoise, and it swaps in the reference identity while your crop keeps the lighting and angle. The README suggests pairing this with cubiq's ComfyUI_FaceAnalysis nodes to do the cropping and a mask-based paste-back automatically - see Latent Vision's video on that workflow. This is how you get a specific real face into a scene you composed with another model, which is exactly what the face-embedding ecosystem is for per the KB's identity-preservation notes: getting a specific face into a generation from a photo, no training.

Gotchas

  • First run downloads the SD1.5 base from Hugging Face (the botp/stable-diffusion-v1-5 pipeline) just like the Generator. Looks like a hang, is a download, caches after one run.
  • Face quality depends on the input crop. A tiny, angled, heavily-shadowed face in the init image gives the extractor weak material. Feed it a decent face crop, not a 20px thumbnail.
  • It's not a face-swap. High denoise on a full-body image will drift the whole scene, not just the face. Low denoise on a tiny face won't move the likeness far enough. The crop-and-paste approach sidesteps both.

If you want a quick win: extract the embedding from two or three good photos of your subject, drop the denoise to ~0.5, and watch a generic render take on the right face.

CategoryArc2Face

Inputs (11)

NameTypeDefaultDescription
face_embeddingFACE_EMBEDDING
unetARC2FACE_UNET
encoderARC2FACE_ENCODER
initial_imageIMAGE
negative_promptSTRINGugly, deformed, noisy, blurry, low contrast, split image
num_inference_stepsINT301–100
guidance_scaleFLOAT2.70.1–30
num_imagesINT11–4
seedINT-1
denoise_strengthFLOAT0.500–1
extra_paramSTRING

Outputs (1)

NameTypeDescription
IMAGEIMAGE