silva-luna / README.md
Jannchie's picture
Add model card
e1be778 verified
|
Raw
History Blame Contribute Delete
3 kB
---
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
---
<p align="center">
<img src="https://raw.githubusercontent.com/Jannchie/silva/main/assets/silva-header.png" alt="SILVA" width="100%">
</p>
# 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},
}
```