| --- |
| library_name: pytorch |
| pipeline_tag: feature-extraction |
| license: other |
| license_name: circlestone-labs-non-commercial-license |
| license_link: LICENSE.md |
| base_model: |
| - circlestone-labs/Anima |
| - timm/vit_so400m_patch16_siglip_gap_512.v2_webli |
| tags: |
| - anime |
| - style-embedding |
| - image-retrieval |
| - reference-image |
| - siglip2 |
| - anima |
| - pytorch |
| --- |
| |
| # Anima Style Embedding v1.0 |
|
|
| **A multi-reference style encoder for person-centric anime and illustration images.** |
|
|
| Anima Style Embedding converts one to eight reference images into a normalized 512-dimensional style vector. It combines multi-level SigLIP2 features from the full image and face with internal Anima features, then grounds the result across the complete reference set. The embedding is designed for open-set style retrieval and reference-driven style transfer systems rather than a fixed bank of known artists. |
|
|
| | Model size | References | Embedding | Modalities | |
| |---:|---:|---:|---| |
| | 17.49M parameters | 1–8 images | 512-D, L2-normalized | Full image + face + Anima internals | |
|
|
|  |
|
|
| ## Highlights |
|
|
| - **Open-set style representation:** unseen artists can be embedded directly from reference images. |
| - **Native multi-reference grounding:** Reference Consensus Re-reading lets each image be interpreted in the context of the complete 1–8 image set. |
| - **Full-image and face awareness:** the encoder combines global composition and rendering cues with face-specific style information. |
| - **Anima-aware features:** three internal Anima blocks complement SigLIP2 visual features with representations aligned to the target generator. |
| - **Strong retrieval gains:** unseen synthetic-style MRR improves from 32.0% with the frozen SigLIP2 Full+Face baseline to 60.8% with the learned encoder on the 4,500-way validation gallery. |
|
|
| ## Performance |
|
|
| Retrieval uses cosine similarity between normalized query embeddings and five-image style prototypes. |
|
|
| ### 4,500-way validation — unseen identities |
|
|
| The unseen subset contains 500 identities retrieved against a gallery of 4,500 styles. |
|
|
| | Source | Top-1 | Top-5 | MRR | |
| |---|---:|---:|---:| |
| | Synthetic | 51.8% | 71.7% | 60.8% | |
| | Human | 56.4% | 75.3% | 65.0% | |
|
|
| ### 500-way sealed test — unseen identities |
|
|
| | Source | Top-1 | Top-5 | MRR | |
| |---|---:|---:|---:| |
| | Synthetic | 73.8% | 90.3% | 81.1% | |
| | Human | 76.1% | 92.0% | 83.0% | |
|
|
| The sealed test uses a smaller gallery than validation, so its absolute scores should be read independently. |
|
|
|  |
|
|
| ### Reference count |
|
|
| More references consistently improve human-style grounding. Synthetic K=5 uses the locked controlled/matched/cross-content protocol and is shown separately from the generic K diagnostics. |
|
|
|  |
|
|
| ## Architecture |
|
|
| The encoder projects full-image, face, and Anima tokens into a shared 512-wide space and reads them with four eight-head mixer blocks. Functional Style Factorization introduces four auxiliary style queries during training. Reference Consensus Re-reading computes a consensus across the reference set, re-reads every image under that context, and forms an agreement-weighted prototype. |
|
|
| | Input | Shape per batch | |
| |---|---| |
| | Full-image SigLIP2 features | `[B, R, 30, 1152]` | |
| | Face SigLIP2 features | `[B, R, 30, 1152]` | |
| | Face validity mask | `[B, R]` | |
| | Anima internal features | `[B, R, 3, 4096]` | |
| | Reference mask | `[B, R]` | |
|
|
| SigLIP2 features use [`timm/vit_so400m_patch16_siglip_gap_512.v2_webli`](https://huggingface.co/timm/vit_so400m_patch16_siglip_gap_512.v2_webli) at 512×512 and three backbone depths. Anima features use 768×768 inputs and blocks 8, 18, and 26 at sigma 0.1. |
|
|
| ## Quick start |
|
|
| ```python |
| import json |
| |
| import torch |
| from huggingface_hub import hf_hub_download |
| from safetensors.torch import load_file |
| |
| from modeling_anima_style_embedding import UnifiedStyleEncoder |
| |
| repo_id = "Baragi-AI/Anima-Style-Embedding" |
| config = json.load(open(hf_hub_download(repo_id, "config.json"), encoding="utf-8")) |
| cfg = config["architecture"] |
| |
| encoder = UnifiedStyleEncoder( |
| width=cfg["width"], |
| blocks=cfg["blocks"], |
| heads=cfg["heads"], |
| embedding_dim=cfg["embedding_dim"], |
| dropout=cfg["dropout"], |
| use_anima=True, |
| reference_grounding=cfg["reference_grounding"], |
| functional_factors=cfg["functional_factors"], |
| ) |
| encoder.load_state_dict( |
| load_file(hf_hub_download(repo_id, "model.safetensors")), |
| strict=True, |
| ) |
| encoder.eval() |
| ``` |
|
|
| ```python |
| with torch.inference_mode(): |
| style_embedding, per_image_embeddings = encoder( |
| full_features, |
| reference_mask, |
| face_features=face_features, |
| face_mask=face_mask, |
| anima_features=anima_features, |
| ) |
| |
| assert style_embedding.shape == (full_features.shape[0], 512) |
| ``` |
|
|
| `modeling_anima_style_embedding.py` contains the matching encoder definition. The checkpoint expects precomputed SigLIP2 and Anima features; RGB and Anima feature extraction are supplied by downstream integrations. |
|
|
| ## Training |
|
|
| The model was trained on 320,000 person-centric style records: 160,000 Anima-generated images and 160,000 human-created illustrations across 8,000 training identities. Synthetic and human examples are mixed within each batch. Training uses four RTX 5090 GPUs, BF16 DistributedDataParallel, 16-way episodes, two queries per prototype, variable 1–8 image support, global negatives, and weak hard-negative sampling. The 4,500-step checkpoint produced the best full-validation score. |
|
|
|  |
|
|
| The training record is available in [Weights & Biases](https://wandb.ai/1wndrla17-kyung-hee-university/anima-style-embedding/runs/5c9ae843a14f46529fe9aaa604a78d3b). Machine-readable evaluation results are included under `metrics/`. |
|
|
| ## Applications |
|
|
| - reference-driven style transfer for Anima; |
| - artist-style retrieval and clustering; |
| - aggregation of multiple references into a single style prototype; |
| - open-set style recognition for previously unseen artists; |
| - similarity scoring and reference-set curation. |
|
|
| ## Files |
|
|
| | File | Contents | |
| |---|---| |
| | `model.safetensors` | Encoder weights | |
| | `config.json` | Architecture and feature contract | |
| | `modeling_anima_style_embedding.py` | PyTorch model definition | |
| | `metrics/` | Training curves and retrieval results | |
| | `SHA256SUMS.json` | Release checksums | |
|
|
| ## Limitations |
|
|
| - The model is optimized for person-centric anime and illustration images; other domains are not evaluated. |
| - Retrieval metrics measure representation quality, not generated-image fidelity. |
| - Style and artist-associated content preferences are not completely disentangled. |
| - Anima features must follow the documented model, block, resolution, and sigma configuration. |
|
|
| ## License |
|
|
| The model weights are distributed under the [CircleStone Labs Non-Commercial License v1.2](LICENSE.md). Commercial or production use requires appropriate authorization from CircleStone Labs. |
|
|
| The original source code supplied with this release is available under the [Apache License 2.0](CODE_LICENSE). Third-party components remain subject to their respective licenses; attribution details are listed in [NOTICE](NOTICE) and [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). |
|
|
| Built on NVIDIA Cosmos. |
|
|
| ## Citation |
|
|
| ```bibtex |
| @misc{baragi2026animastyleembedding, |
| title = {Anima Style Embedding v1.0}, |
| author = {{Baragi AI}}, |
| year = {2026}, |
| howpublished = {Hugging Face model repository}, |
| url = {https://huggingface.co/Baragi-AI/Anima-Style-Embedding} |
| } |
| ``` |
|
|