Text-to-Image
Diffusers
anima
lora
in-context
character-reference
ip-adapter-alternative
comfyui
anime
Instructions to use darask0/Anima-InContext-Character with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use darask0/Anima-InContext-Character with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("circlestone-labs/Anima", dtype=torch.bfloat16, device_map="cuda") pipe.load_lora_weights("darask0/Anima-InContext-Character") 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
| license: other | |
| license_name: circlestone-labs-non-commercial | |
| license_link: https://huggingface.co/circlestone-labs/Anima | |
| base_model: circlestone-labs/Anima | |
| tags: | |
| - anima | |
| - lora | |
| - in-context | |
| - character-reference | |
| - ip-adapter-alternative | |
| - comfyui | |
| - anime | |
| pipeline_tag: text-to-image | |
| library_name: diffusers | |
| # Anima In-Context Character | |
| **Reference-driven character generation for [Anima](https://huggingface.co/circlestone-labs/Anima)** — attach a few images of a character and generate that character in new poses, scenes and expressions. No per-character training. Works on characters the base model has never seen. | |
| This is a LoRA + a small ComfyUI node pack. Unlike CLIP-embedding IP-Adapters, the reference enters the model as its **own VAE latent inside self-attention**, so fine details (hair ornaments, clothing patterns, eye color) are preserved in principle rather than summarized into a single embedding. | |
| | | | | |
| |---|---| | |
| | Base model | Anima 2B (Cosmos-Predict2 DiT + Qwen3-0.6B text encoder, WanVAE) | | |
| | Type | in-context reference LoRA (DiT, rank 64) + ComfyUI nodes | | |
| | Trained on | ~994k anime images / ~62k (reference≠target) character pairs | | |
| | Use | attach 1–3 reference images → generate in any pose/scene | | |
| ## Samples | |
| Original characters, unseen by the base model — generated from reference images alone. | |
| | Yanineko (ヤニネコ) | Nihon / "Japan" flag-girl (国旗娘・日本) | | |
| |:---:|:---:| | |
| |  |  | | |
| *Cat-eared original character with grey hair, tabby tail, casual outfit and yellow crocs (left); an original fox-shrine-maiden "flag-girl" personification of Japan in white-and-pink miko attire (right). Both reproduced in new renders from reference images.* | |
| --- | |
| ## How it works | |
| Anima's DiT is a **video** architecture: latents flow as `(B, C, T, H, W)` and self-attention runs over the flattened `(t h w)` sequence with 3D RoPE (`max_frames=128`, `patch_temporal=1`). | |
| This adapter exploits that: | |
| 1. The reference image's VAE latent is **concatenated as an extra frame on the T axis** — `[generated frame, reference frame(s)]`. It gets a distinct temporal RoPE coordinate, so it never collides spatially with the generated frame. | |
| 2. Per-frame timesteps: the reference frame is conditioned at **timestep 0 (a clean image)** while the generated frame follows the sampler. This is the OminiControl-style "clean condition token" recipe. | |
| 3. The generated frame attends to the reference tokens via **shared self-attention** — the reference's appearance flows in directly, not through a lossy embedding. | |
| 4. Reference frames are sliced off the output before the sampler sees it. | |
| The LoRA teaches the base T2I model to *use* those reference tokens. It was trained on **same-character / different-artist** pairs with character names removed from the captions, so identity must flow through the reference frames (not the text) — the network learns a transferable "copy this character into a new context" skill rather than memorizing specific characters. | |
| ## How it was made | |
| - **Data**: ~994k tagged anime images → grouped by character → **same character, different artist** pairs (so the character stream carries identity, not style) → filtered by anime-character identity similarity (deepghs *ccip*) to drop costume/wrong-tag noise → references composited onto white via anime segmentation. | |
| - **Captions**: general tags only ([OppaiOracle](https://huggingface.co/Grio43/OppaiOracle)), with character/artist/copyright tags stripped — so identity can only flow through the reference. | |
| - **Training**: DiT LoRA (rank 64, α 32), reference frames appended at timestep 0, loss on the generated frame only, 10% reference-dropout for CFG. Multi-view pairs (2 references from distinct artists) so "attach a few images" is trained, not just inference-time. | |
| - Full pipeline & node source: [github.com/daraskme/anima-duet](https://github.com/daraskme) *(see project repo)*. | |
| --- | |
| ## ComfyUI usage | |
| ### 1. Install the custom nodes | |
| Clone the node pack into `ComfyUI/custom_nodes/`: | |
| ``` | |
| comfyui-anima-incontext/ (from this repo's `comfyui-anima-incontext/` folder) | |
| ``` | |
| Restart ComfyUI. You should see nodes under the **anima/incontext** category. | |
| ### 2. Get the models | |
| | File | Put in | | |
| |---|---| | |
| | `anima-incontext-character.safetensors` (this repo) | `ComfyUI/models/loras/` | | |
| | `anima-base-v1.0.safetensors` | `ComfyUI/models/diffusion_models/` | | |
| | `qwen_3_06b_base.safetensors` | `ComfyUI/models/text_encoders/` | | |
| | `qwen_image_vae.safetensors` | `ComfyUI/models/vae/` | | |
| (The three base files come from the [Anima](https://huggingface.co/circlestone-labs/Anima) release.) | |
| ### 3. Load the workflow | |
| Drag `workflow_anima_incontext_character.json` onto the ComfyUI canvas. It's wired as: | |
| ``` | |
| UNETLoader ─► LoraLoaderModelOnly (this LoRA) ─┐ | |
| LoadImage ×2 ─► AnimaRefEncode ×2 ─► AnimaRefLatentBatch ─► AnimaInContextApply ─► KSampler ─► VAEDecode ─► SaveImage | |
| ``` | |
| ### 4. Nodes | |
| - **Anima Reference Encode** — IMAGE (+ optional MASK) → LATENT. A mask composites the subject on white (recommended). `target_width/height` resizes onto a white canvas so refs match the generation resolution. | |
| - **Anima Reference Latent Batch** — combine 2+ references (full-body + face works best). | |
| - **Anima In-Context Reference Apply** — attach references to the model. | |
| - `strength` 1.0 = neutral, >1 stronger reference pull, 0 = off | |
| - `cond_only` (default on) — reference masked on the CFG-uncond half; matches training | |
| - `fit_mode` `pad` (aspect-preserving, default) / `stretch` / `crop` | |
| - `start_percent`/`end_percent` — sampling window | |
| ## Tips for best results | |
| - **Attach a full-body shot + a face close-up.** Two references (batched) noticeably improve hair-length and face fidelity over a single one. | |
| - **Also describe the appearance in the prompt** (hair color, outfit, ears, etc.). Reference + matching tags is the strongest combination — the prompt describes the *pose/scene*, the reference carries the *identity*. | |
| - Composite the subject on a **white background** (use the mask input) — reduces background bleed. | |
| - If identity drifts, raise `strength` to 1.2–1.5 or add a third reference. | |
| - Recommended base sampler: `er_sde` / `simple`, 30 steps, CFG 4, `discrete_flow_shift` 3.0. | |
| ## Limitations | |
| - Fine ornament/pattern detail can drift; multi-reference + appearance tags mitigate it. | |
| - Strong reference pull can slightly wash out backgrounds — trade off with `strength` and the sampling window. | |
| - Anime domain (the training data is anime illustration). | |
| ## License | |
| Base model **Anima** is under the **CircleStone Labs Non-Commercial License** (derives from Cosmos-Predict2 → NVIDIA Open Model License also applies). **This LoRA is a derivative and is released for non-commercial use.** Generated images may be usable commercially per the base license, but **verify the current Anima LICENSE before any commercial use or redistribution.** Training data is derived from public booru sources. | |
| --- | |
| ## 日本語 | |
| **Anima 向けの参照画像キャラ生成 LoRA。** キャラ画像を数枚添付するだけで、そのキャラを別ポーズ・別シーンで生成できます(キャラ毎の学習不要、未知キャラも可)。 | |
| CLIP 埋め込み型 IP-Adapter と違い、参照画像を**モデル自身の VAE latent のまま self-attention に入れる**ため、髪飾り・服の柄・瞳の色などの細部が原理的に落ちません。参照を DiT の時間軸に「クリーンフレーム(timestep=0)」として連結する OminiControl 系の方式です。 | |
| **使い方**: `comfyui-anima-incontext` ノードを導入 → このLoRAを `models/loras/` へ → `workflow_anima_incontext_character.json` を読み込み → 参照は**全身1枚+顔アップ1枚**を推奨、プロンプトにも外見タグを併記すると最も安定します。`strength` は 1.0 中立、効きが弱ければ 1.2〜1.5。 | |
| **ライセンス**: ベースの Anima は CircleStone Labs 非商用ライセンス。本LoRAは派生物として**非商用**での配布です。商用利用・再配布前に最新 LICENSE を確認してください。 | |