WithAnyone ArcFace Embedding Extractor
The identity half of WithAnyone
- withAnyone_pipeline
- ref_img
- arcface_infos
WithAnyone doesn't decide who a face is by looking at the whole photo. It decides by compressing the face into two numbers: an ArcFace embedding that says whose face it is, and a SigLIP embedding that remembers what the photo actually looked like. This node is the first half of that pair - the identity half, the half that knows the person behind the pixels.
If that sounds familiar, it's because this is the same recognition backbone that's been quietly running under InstantID, PuLID, and IP-Adapter FaceID for years: InsightFace's antelopev2 model pack, which detects the face, aligns it, and produces a 512-dimensional ArcFace vector encoding facial geometry rather than appearance. WithAnyone is built on Flux, not SDXL, but it kept the old-school ArcFace step, and this node exposes it directly.
What it does
Feed it two things:
- withAnyone_pipeline - the pipeline object from the WithAnyone Model Loader. This is where the face extractor lives; the node doesn't download anything itself.
- ref_img - a reference image. It's processed as a batch, so you can pass several images at once, but each one must contain a single, clearly visible face.
It hands back one output, arcface_infos, which bundles the extracted 512-d embeddings together with the cropped, aligned face images. That's the output you pass into the SigLIP extractor next, because SigLIP wants the cropped face, not your original upload.
The honest part: the shipped workflows don't use it
Open the example workflow from the pack and you won't find this node in it. The WithAnyone Single Person Conditioning node runs ArcFace and SigLIP both in one pass and emits the ready-to-eat PERSON_CONDITIONING object the sampler wants. The extractor pair is the dissected, modular version - useful when you want the raw embeddings for debugging, want to inspect what identity information actually survives extraction, or are building your own conditioning logic on top. If you just want a working workflow, skip to Single Person Conditioning. If you want to understand the machinery, this is where you start.
Getting it installed
WithAnyone is a single custom node pack, so installing the node is installing the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/okdalto/ComfyUI-WithAnyone
cd ComfyUI-WithAnyone
pip install -r requirements.txt
Or search "WithAnyone" in ComfyUI Manager and let it do the work. Either way, the ArcFace model is downloaded automatically by the Model Loader into ComfyUI/custom_nodes/ComfyUI-WithAnyone/models/ - you don't fetch that one by hand.
Where people get burned
"Failed to extract face from one of the reference images." That's the node's own error, and it means InsightFace found no face it was confident about. Small faces, heavy blur, extreme angles, sunglasses over the eyes - all classic triggers. InsightFace is genuinely good at angles, but it's not magic; give it a decent, front-facing crop.
The other recurring pain is install-side rather than this node's fault: InsightFace is one of the most notorious dependencies in the whole local-AI stack, and the assert 'detection' in self.models AntelopeV2 folder-structure bug used to trip people up constantly. The Model Loader in this pack auto-fixes that one for you, which is a small mercy.
One more thing worth knowing, because it decides what you can do with the output: the ArcFace models are non-commercial. Fine for personal and research use, a legal problem the moment you ship a product - same trap every other ArcFace-based tool inherits.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| withAnyone_pipeline | WITHANYONE_PIPELINE | — | |
| ref_img | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| arcface_infos | ARCFACE_INFOS | — |