silva-aesthetic / README.md
Jannchie's picture
Add model card
fbec50c verified
|
Raw
History Blame Contribute Delete
2.73 kB
metadata
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-aesthetic
    results:
      - task:
          type: image-classification
          name: Personal Aesthetic Scoring
        metrics:
          - type: spearmanr
            value: 0.7671
          - type: pearsonr
            value: 0.7695
          - type: mae
            value: 0.4859

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.7671 0.7695 0.4859 0.4191

Architecture: embedding[1152] → LayerNorm → MLP [1024, 512, 256] → ordinal head. Trained on one person's private 1–5 ratings; 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},
}