--- library_name: silva pipeline_tag: image-classification license: mit base_model: google/siglip2-so400m-patch14-384 base_model_relation: adapter tags: - aesthetic - siglip2 - ordinal-regression metrics: - spearmanr - pearsonr - mae model-index: - name: silva-luna results: - task: type: image-classification name: Distilled Aesthetic Scoring dataset: type: Jannchie/silva-luna-25k name: silva-luna-25k metrics: - type: spearmanr value: 0.8105 - type: pearsonr value: 0.7986 - type: mae value: 0.4331 ---

SILVA

# SILVA — Distilled VLM Judge **[▶ Try it in your browser](https://huggingface.co/spaces/Jannchie/silva-aesthetic-demo)** — upload an illustration, see this judge's score live. Scores an illustration by the taste of a **VLM judge**, distilled — not a universal quality model, so it won't match anyone else's preferences. Output is a single number in `[0, 1]`; higher means more to this judge's liking. **Only the head ships here (~7 MB), not an image model.** It runs on top of the frozen `google/siglip2-so400m-patch14-384` backbone, which `silva[backbone]` installs and loads for you. ## Quickstart ```python # pip install "silva-scorer[backbone] @ git+https://github.com/Jannchie/silva" from silva import SilvaScorer scorer = SilvaScorer.from_pretrained("Jannchie/silva-luna") print(scorer.score("your_image.jpg")) # 0.73 print(scorer.score(["a.jpg", "b.jpg"])) # [0.73, 0.41] ``` Already have `google/siglip2-so400m-patch14-384` embeddings? Skip the backbone and score them directly: ```python # pip install "silva-scorer @ git+https://github.com/Jannchie/silva" from silva import EmbeddingAestheticModel head = EmbeddingAestheticModel.from_pretrained("Jannchie/silva-luna").eval() score = head(embedding)["calibrated_score"] # calibrated to the label distribution; ["score"] for raw. embedding: [B, 1152] pooler_output ``` ## Scores (held-out test split) | Spearman | Pearson | MAE (1–5) | Top-5% | |---|---|---|---| | 0.8105 | 0.7986 | 0.4331 | 0.4672 | Architecture: `embedding[1152] → LayerNorm → MLP [1024, 512, 256] → ordinal head`. Trained on rankings from `openai:gpt-5.6-luna`, which ordered eight illustrations at a time; the orderings were pooled with Plackett-Luce into one latent per picture (degree 14, split-half reliability 0.827). The labels ARE published -- see the dataset link above. [Source](https://github.com/Jannchie/silva) ## Citation ```bibtex @software{pan2026silva, author = {Pan, Jianqi}, title = {{SILVA}: {SigLIP}-based Illustration Visual Aesthetic Scorer}, year = {2026}, url = {https://github.com/Jannchie/silva}, } ```