Instructions to use 0ppxnhximxr/snapref-v1b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use 0ppxnhximxr/snapref-v1b with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("0ppxnhximxr/snapref-v1b", dtype=torch.bfloat16, device_map="cuda") prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k" image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- Draw Things
- DiffusionBee
SnapRef v1b
One reference image. Your character, in any pose and scene you prompt.
A reference adapter for Anima base v1.0. The reference is read once and reused at every sampling step, so it adds only a little to generation time.
v1b is the larger sibling of SnapRef v1a: the same method and data, with twice the LoRA rank. It follows the prompt slightly more closely, and keeps the character about as well as v1a. If you are unsure which one to use, start with v1a: it is smaller and a little faster.
| v1a | v1b | |
|---|---|---|
| LoRA rank (reference / target branch) | 128 / 64 | 256 / 128 |
| file size, bf16 / FP8 | 382 / 195 MB | 910 / 460 MB |
| seconds per image ¹ | 8.9 | 9.9 |
| DINOv2 similarity to the true image ² ↑ | 0.722 | 0.720 |
| CLIP image-text similarity (prompt following) ² ↑ | 0.249 | 0.256 |
¹ A100, 832×1216, 28 steps, default settings. ² 52 cases with the same seeds, 32 of them characters not seen in
training; the "true image" is another picture of the same character in the prompted pose. Per-case scores are in
scores_v1a_v1b.json.
Quick start
- Install Anima base v1.0 with its text encoder and VAE.
- Copy
comfyui/snapref/intoComfyUI/custom_nodes/and restart ComfyUI. It is the same node as in v1a. - Put
snapref_v1b.safetensors(orsnapref_v1b_fp8.safetensors) intoComfyUI/models/loras/. - Open
workflows/snapref_v1b_simple.json, click the picture slot in the SnapRef node and queue.
Write only the scene. Hair, eyes, outfit and style come from the reference.
masterpiece, best quality, score_7, safe, 1girl, solo, full body, sitting, crossed legs, bench, street, night
The adapter is not a regular LoRA. Load it with the SnapRef node, not with LoraLoader. Direct loading with the Diffusers API is not supported.
Two nodes. SnapRef is the simple one: pick one or two pictures of the character inside the node, choose Character & Style or Character, and set Strength and Fidelity. SnapRef (Advanced) has every setting described below. Saved workflows open on SnapRef (Advanced) unchanged.
Settings
The settings below are the inputs of SnapRef (Advanced). The simple node keeps everything else at these defaults.
| setting | default | what it does |
|---|---|---|
mode |
cs |
cs copies the character and the style. char copies only the character, so you can set the style with artist tags |
strength |
0 |
how closely to follow the reference. Try 1–2 for more detail (trims, sleeves, accessories) |
ref_guidance_on |
off | a stronger push toward the reference, at about 1.4× the time |
ref_guidance |
4.5 |
strength of that push; 6–8 for a closer match |
All settings
| setting | default | |
|---|---|---|
adapter |
snapref_v1b.safetensors |
the bf16 file or the FP8 file |
ref_in_uncond |
off | on: the reference is followed more loosely and the prompt more closely |
fidelity |
1.0 | 0-1; lower follows the prompt more freely. Ignored when ref_in_uncond or ref_guidance_on is on |
ref_megapixels |
1.0 |
the reference is shrunk to this size if it is larger |
ref_caption |
empty | optional appearance tags of the reference; can help with accessories |
correction |
apg |
with ref_guidance_on: keeps colors from over-saturating |
ref_end |
1.0 |
with ref_guidance_on: 0.6 is faster with nearly the same result |
Several references and reference weights (node update of 2026-11-01)
| setting | default | |
|---|---|---|
image_2, image_3 |
more references of the same character, e.g. a full-body shot when image is an upper-body shot |
|
use_batch |
off | use every image of an IMAGE batch as a reference |
multi_layout |
separate |
separate: each reference on its own. stitch: side by side in one reference (same speed as one image) |
weight_1 … weight_3 |
1.0 |
how much each reference counts (0–2, 0 = skipped); separate layout only |
strength and the weights no longer slow sampling down. With everything left at the defaults, the images are
the same as with the previous node (bit-identical). See workflows/snapref_v1b_multi_reference.json.
Recommended sampling: euler or er_sde, simple, 28–30 steps, cfg 4.5.
Two characters
Put the two references side by side with the core Image Stitch node and connect the result as the reference.
In the prompt, use 2girls (or 1boy, 1girl) instead of solo, and say in a few words who is on the left and who
is on the right. A landscape size works best. See workflows/snapref_v1b_two_characters.json.
Results
Characters that were not in the training data. Each column uses the same prompt and seed. The prompt describes only the scene.
More examples
| SnapRef v1b | SnapRef v1a | ElectronGirl v2 | Role-Ref-KV | Anima, no reference | |
|---|---|---|---|---|---|
| seconds per image ¹ | 9.9 | 8.9 | 14.4 | 12.5 | 7.7 |
| DINOv2 similarity to the true image ² ↑ | 0.720 | 0.722 | 0.675 | – | 0.493 |
On characters not seen in training, the adapter predicts images better with the right reference than with a
wrong one: identity gap 0.0038 on the held-out denoising loss (v1a: 0.0040). The numbers are in
heldout_loss.json.
How it works
The reference goes through the model once, through its own branch, and every layer's attention keys and values are cached. While the image is generated, each layer attends to its own tokens and to the cached reference. Each branch has its own LoRA. The reference sits at a separate position in the model's coordinate space, so it is read for appearance and not copied as a layout.
Training used the same 58,300 Anima-generated images as v1a (scenes3x4), 10,000 steps at batch 16, on an
RTX PRO 6000 Blackwell. training_config.json has every setting.
FP8
snapref_v1b_fp8.safetensors is half the size (460 MB) and gives practically the same images. It also works
with the FP8 Anima base.
Compatibility and troubleshooting
- Black image with an fp16 model or
--fast. Fixed in the node update of 2026-10-31. Anima overflows in fp16. ComfyUI runs the model in fp16 when the checkpoint is stored in fp16 (many merges), with--fp16-unet, or with--fast/--fast fp16_accumulation. The old node encoded the reference in fp16 there and produced NaN. The new node keeps that part in fp32, as ComfyUI itself does. bf16 output is unchanged (same bits). With the old node, add--bf16-unetto the ComfyUI launch arguments, or dropfp16_accumulationfrom--fast. - Anzhc Mod Guidance: works in either node order with the updated node. Before, applying Mod Guidance first dropped the reference.
- Spectrum: works with
ref_guidance_onoff. With it on, Spectrum-type step forecasting breaks; the node now logs a warning. - sorryhyun Mod Guidance: with the default settings it can stop with a tensor-size error (4 vs 2). Turning on
ref_in_uncondorref_guidance_onavoids it.
Known limitations
- Very small details (earrings, fine patterns, scars) can be simplified.
- A dark-skinned reference can come out with lighter skin.
- With some outdoor full-body prompts, the bottom of the image can turn into a plain white floor. Naming the
ground (
grass,path) fixes it. - A scene can override the reference outfit (beach → swimsuit). Raise
strengthor name the outfit. - With two characters, attributes the references do not show clearly (for example, closed eyes) can be mixed between the two.
What's next
Preview builds of v2a are v2a-pre1 and
v2a-pre2: a much stronger mode char (the character without
the reference's art style). The next full version is trained on generated images only. Progress is on
GitHub.
Files
| file | |
|---|---|
snapref_v1b.safetensors |
adapter, bf16 (910 MB) |
snapref_v1b_fp8.safetensors |
adapter, FP8 (460 MB) |
comfyui/snapref/ |
ComfyUI nodes: SnapRef (simple) and SnapRef (Advanced), for every SnapRef version |
workflows/ |
simple (SnapRef node), single character, two characters, several references of one character, side-by-side comparison with other adapters |
scores_v1a_v1b.json |
per-case embedding scores of v1a, v1b, ElectronGirl v2 and base |
License
The weights are a derivative of the CircleStone Model and are distributed under the CircleStone Labs Non-Commercial License v1.2 (LICENSE.md, NOTICE.txt). Non-commercial use only. Not affiliated with or endorsed by CircleStone Labs.
- Downloads last month
- -
Model tree for 0ppxnhximxr/snapref-v1b
Base model
nvidia/Cosmos-Predict2-2B-Text2Image