SILVA β Personal Aesthetic Head
βΆ Try it in your browser β upload an illustration, see this person's score live.
Scores an illustration by one specific person's taste β 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 person'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
# pip install "silva-scorer[backbone] @ git+https://github.com/Jannchie/silva"
from silva import SilvaScorer
scorer = SilvaScorer.from_pretrained("Jannchie/silva-aesthetic")
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:
# pip install "silva-scorer @ git+https://github.com/Jannchie/silva"
from silva import EmbeddingAestheticModel
head = EmbeddingAestheticModel.from_pretrained("Jannchie/silva-aesthetic").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.7342 | 0.7541 | 0.4141 | 0.3523 |
Architecture: embedding[1152] β LayerNorm β MLP [1024, 512, 256] β ordinal head. Trained on
one person's private 1-5 ratings, pairwise preferences, and listwise rankings; labels and images not released. Source
Citation
@software{pan2026silva,
author = {Pan, Jianqi},
title = {{SILVA}: {SigLIP}-based Illustration Visual Aesthetic Scorer},
year = {2026},
url = {https://github.com/Jannchie/silva},
}
Model version v3.0.0
Released 2026-09-08. Model versions are independent of the Python package version. This is the latest completed non-augmented joint-training baseline (seed 43, dropout 0.5, pairwise/listwise weights 0.05, selected epoch 32). Variant replacement remains disabled because the ablation did not establish improvement. Validation Spearman is 0.721608; the table above reports held-out test metrics of the raw ordinal score, before distribution calibration. Calibration uses the frozen grade manifests, including their test rows, to reproduce the historical label distribution; calibrated scores have no independent test metric here. The small, actively sampled preference validation pool does not establish a general fine-ranking improvement. Training data remain private.
Pin the head to this release:
from silva import EmbeddingAestheticModel, SilvaScorer
head = EmbeddingAestheticModel.from_pretrained("Jannchie/silva-aesthetic", revision="v3.0.0").eval()
scorer = SilvaScorer(head)
Pictoria backfill uses this exact head's calibrated_score, with no library-wide remapping.
The previous main revision is preserved as pre-v3-20260908.
See release.json for checkpoint hashes and evaluation provenance.
- Downloads last month
- 69
Model tree for Jannchie/silva-aesthetic
Base model
google/siglip2-so400m-patch14-384