SILVA

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
Safetensors
Model size
1.84M params
Tensor type
F32
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for Jannchie/silva-aesthetic

Adapter
(4)
this model

Space using Jannchie/silva-aesthetic 1