CCIP Score
CCIP checks 'is that still her?'
- image
- reference_image
- distance
- pass_mask
- info
You render a batch of a hundred anime images with your character LoRA and about half come back wearing a different face. Your options: eyeball every one, or wire up a node that does the eyeballing for you. CCIP Score is that second option - it answers one question per image: is this still the same character?
It's the first of three scorers in the CCIP Judge pack (o-ankomochi-o/comfyui-ccip-judge), which together rate a batch on character appearance, pose, and composition before routing only the winners into a liked folder. The name is not an API - nothing here phones home for scoring. CCIP is a character-similarity embedding that ships inside dghs-imgutils, and it's the same metric the anime LoRA dataset tools use to pull one character out of a pile of video frames. So this isn't a toy the author invented; it's the standard anime-community measure of "same person."
How it works
For every image in the batch, the node extracts a CCIP feature embedding, then computes its distance to each embedding in your reference pool and averages them. Lower distance = closer to your character. Distance under the threshold (default 0.213) means pass.
One subtlety worth knowing: CCIP will happily score an empty image, so the node runs an anime person detector (with a face detector as backup) first. If no character is found, you get distance = NaN, which compares false against any threshold - a failed detection can never sneak into your liked pile.
The inputs that matter
image- your generated batch, straight fromVAEDecode.threshold- the pass line, default0.213. Lower is stricter. The author calibrated that on anime generally, not on your character, so expect to nudge it.reference_folder- a folder of reference images of your character. Thereference_imageIMAGE input takes precedence if both are wired, so you can either load refs from disk or connect a loaded batch.model- which CCIP model to use, defaultccip-caformer_b36-24. Leave it alone unless you know you want another.
You get three outputs: distance (one float per image, wiring into the pack's Three-Stage Filter or Image Router), pass_mask (one boolean per image), and info - a text summary of how many passed and how many failed detection. The info string is genuinely useful when you're calibrating: it tells you if a bad pass-rate is detection failures rather than a too-tight threshold.
Installing it
The whole pack installs in one shot:
cd ComfyUI/custom_nodes
git clone https://github.com/o-ankomochi-o/comfyui-ccip-judge.git
cd comfyui-ccip-judge
python -m pip install -r requirements.txt
ComfyUI Manager finds it as "CCIP Judge" if you prefer that route. On the Windows portable build, use ..\..\python_embeded\python.exe -m pip install -r requirements.txt. Two things to know: the DWPose model downloads from Hugging Face on first run (the pack's only network call), and you want Python 3.10–3.12 - 3.13 breaks the install because dghs-imgutils pins numpy<2, which has no 3.13 wheels. Don't install both onnxruntime and onnxruntime-gpu in the same environment.
Where people get burned
- Reference pool bias. If your references are all front-facing portraits and your generations are side profiles, the mean distance inflates and good images fail. Mix angles and poses in the reference folder.
- All references must contain a detectable character, or the node throws instead of scoring.
- The default threshold is a starting point, not gospel. Run a small labeled batch through Score Overlay first and re-calibrate - that's the honest workflow, and the README says so explicitly.
If your character consistency problem is about face identity across scenes, this node is the automation you were hand-doing. For pose and framing, the other two scorers in the pack - OKS and Angle - have you covered.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| threshold | FLOAT | 0.2130–2 | — |
| model | STRING | ccip-caformer_b36-24 | — |
| reference_folder | STRING | — | |
| reference_imageopt | IMAGE | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| distance | FLOAT | — |
| pass_mask | BOOLEAN | — |
| info | STRING | — |