A re-analysis of the contempArt study (Huckle, Garcia & Nakashima, ECCV Workshop 2020) across 16 modern image embeddings (content, style, appearance, general, duplicate).
See also: contempart-eccv2020 (2020 reproduction) and contempart (dataset).
The original paper found no link between artistic style and artist demographics. Using 16 embedding heads across 9 backbones (CLIP, OpenCLIP, DINOv2, CSD, SCFlow, GOYA, SD 2.1 VAE, SSCD) on the same 441-artist corpus, the same pattern holds for pure-appearance features (SD VAE / KIM-A), while every content-oriented head picks up a strong professor-class signal (~10% of variance explained). Most of the school effect in the old paper is absorbed by professor class.
- Embeddings
- db-RDA: which demographics predict embedding distances?
- Social network: do embedding distances track follower-graph distances?
- Reproduce
- Data provenance
16 embedding heads extracted from 9 backbones. Files live in
embeddings/<backbone>/<backbone>_contempart.npz. 14,390 images,
441 artists.
| Head | Role | Backbone | Dim | Paper | Code |
|---|---|---|---|---|---|
| CLIP-L | content | CLIP ViT-L/14 (OpenAI) | 768 | Radford 2021 | openai/CLIP |
| CLIP-B32 | content | CLIP ViT-B/32 (OpenAI) | 512 | Radford 2021 | openai/CLIP |
| OpenCLIP-L | content | OpenCLIP ViT-L/14 (LAION-2B) | 768 | Cherti 2023 | mlfoundations/open_clip |
| CSD-Content | content | CSD ViT-L/14 | 768 | Somepalli 2024 | learn2phoenix/CSD |
| SCFlow-Content | content | SCFlow (ICCV 2025) | 768 | Ma 2025 | compvis/scflow |
| GOYA-Content | content | GOYA MLP (on CLIP-B32) | 2048 | Gou 2023 | yankungou/GOYA |
| KIM-C | content | OpenCLIP ViT-H/14 (LAION-2B) | 1024 | Kim 2025 | mlfoundations/open_clip |
| DINOv2-Style | style | DINOv2 ViT-L/14 | 1024 | Oquab 2024 + fruit-SALAD (Schaldenbrand 2024) | facebookresearch/dinov2 |
| DINOv2-Gram | style | DINOv2 ViT-L/14 | 1024 | Oquab 2024 | facebookresearch/dinov2 |
| CSD-Style | style | CSD ViT-L/14 | 768 | Somepalli 2024 | learn2phoenix/CSD |
| SCFlow-Style | style | SCFlow (ICCV 2025) | 768 | Ma 2025 | compvis/scflow |
| GOYA-Style | style | GOYA MLP (on CLIP-B32) | 2048 | Gou 2023 | yankungou/GOYA |
| DINOv2-CLS | general | DINOv2 ViT-L/14 | 1024 | Oquab 2024 | facebookresearch/dinov2 |
| DINOv2-L12 | general | DINOv2 ViT-L/14 | 1024 | Oquab 2024 | facebookresearch/dinov2 |
| KIM-A | appearance | SD 2.1 VAE | 16384 | Rombach 2022 | huggingface.co/sd2-community |
| SSCD | duplicate | SSCD ResNet50 | 512 | Pizzi 2022 | facebookresearch/sscd |
Roles: content (what is depicted), style (how it looks at texture level), appearance (colour / composition), general (generic visual features), duplicate (near-duplicate detection).
Distance-based Redundancy Analysis (Legendre & Anderson 1999) on cosine distances over artist-aggregated embeddings. Effect size = partial variance explained: the fraction of total inertia in embedding distances that each variable accounts for after controlling for the other three. Columns are sorted by mean effect size across heads; rows are grouped by role. Checkmarks mark p < 0.05 (999 permutations, marginal test). The column-max (per demographic) is bolded to highlight which head picks up the strongest signal, regardless of significance.
| Head | Role | professor | continent | gender | school |
|---|---|---|---|---|---|
| CLIP-L | content | 9.8% ✓ | 2.4% ✓ | 1.5% ✓ | 0.6% ✓ |
| CLIP-B32 | content | 10.3% ✓ | 1.2% ✓ | 1.8% ✓ | 0.8% ✓ |
| OpenCLIP-L | content | 10.5% ✓ | 1.7% ✓ | 1.5% ✓ | 0.6% ✓ |
| CSD-Content | content | 10.3% ✓ | 2.3% ✓ | 1.1% ✓ | 0.4% |
| SCFlow-Content | content | 8.3% ✓ | 1.6% ✓ | 1.5% ✓ | 0.6% |
| GOYA-Content | content | 6.5% | 0.4% | 0.6% | 0.3% |
| KIM-C | content | 10.5% ✓ | 1.9% ✓ | 1.3% ✓ | 0.4% |
| DINOv2-Style | style | 9.5% ✓ | 2.1% ✓ | 2.1% ✓ | 1.0% ✓ |
| DINOv2-Gram | style | 9.5% ✓ | 2.8% ✓ | 1.8% ✓ | 0.6% |
| CSD-Style | style | 10.2% ✓ | 2.5% ✓ | 1.2% ✓ | 0.3% |
| SCFlow-Style | style | 9.5% ✓ | 1.6% ✓ | 1.3% ✓ | 0.3% |
| GOYA-Style | style | 12.0% ✓ | 1.3% ✓ | 0.9% ✓ | 0.8% ✓ |
| DINOv2-CLS | general | 10.5% ✓ | 0.6% | 1.4% ✓ | 0.6% ✓ |
| DINOv2-L12 | general | 9.0% ✓ | 2.1% ✓ | 1.9% ✓ | 1.0% ✓ |
| KIM-A | appearance | 7.1% | 1.6% ✓ | 1.2% ✓ | 0.3% |
| SSCD | duplicate | 7.5% ✓ | 0.9% ✓ | 0.9% ✓ | 0.2% |
Take-aways. Professor class is the dominant signal across nearly every head (~8-12% of variance). Pure-appearance KIM-A (SD VAE) and specialised GOYA-Content lose the professor effect, matching the 2020 null result for visual style. Continent and gender are consistently smaller but significant; school barely registers once professor is controlled for (school-unique variance is < 1% everywhere; the bulk is shared with professor).
For each head, Mantel correlation between the artist-aggregated cosine distance matrix and a pre-computed 2020 node2vec distance matrix from the Instagram follower graph (364-artist subset). Positive r means artists who are closer in embedding space are also closer in the follower graph. Checkmarks mark p < 0.05 (9,999 permutations). The column-max is bolded to highlight the top head, regardless of significance.
- G^U: artist-to-artist sub-graph (only edges between artists)
- G^Y: full network (includes galleries, friends, non-artist accounts)
| Head | Role | G^U (artist-to-artist) | G^Y (full network) |
|---|---|---|---|
| CLIP-L | content | r = +0.105 ✓ | r = +0.020 |
| CLIP-B32 | content | r = +0.089 ✓ | r = -0.003 |
| OpenCLIP-L | content | r = +0.096 ✓ | r = -0.006 |
| CSD-Content | content | r = +0.080 ✓ | r = +0.025 |
| SCFlow-Content | content | r = +0.105 ✓ | r = +0.003 |
| GOYA-Content | content | r = -0.066 | r = -0.022 |
| KIM-C | content | r = +0.089 ✓ | r = -0.008 |
| DINOv2-Style | style | r = +0.031 | r = -0.030 |
| DINOv2-Gram | style | r = -0.005 | r = +0.001 |
| CSD-Style | style | r = +0.042 | r = +0.049 |
| SCFlow-Style | style | r = +0.105 ✓ | r = -0.024 |
| GOYA-Style | style | r = +0.020 | r = -0.052 |
| DINOv2-CLS | general | r = +0.061 | r = -0.028 |
| DINOv2-L12 | general | r = +0.037 | r = -0.019 |
| KIM-A | appearance | r = +0.011 | r = +0.039 |
| SSCD | duplicate | r = +0.037 | r = +0.003 |
| VGG-2020 (2020 paper baseline) | — | r = +0.042 | r = -0.036 |
Take-aways. Content-oriented CLIP variants and SCFlow correlate significantly with G^U at r = 0.08-0.11, higher than the VGG-2020 baseline (r = 0.04, n.s. in the 2020 paper). Pure style heads (DINOv2-Style/Gram, CSD-Style, GOYA-Style) show no social signal. G^Y is noise for every head, matching the original paper: adding non-artist accounts drowns the signal.
The supplementary Mantel-plus-PERMANOVA table (same variables, no
partial controls) and cross-embedding VGG-2020 correlations live at
results/all_mantel_permanova.csv
and results/all_social.csv.
# 1. Environment
uv sync # Python deps
Rscript -e 'renv::restore()' # R deps (vegan, parallel, etc.)
# 2. Data (from Zenodo: images + metadata + 16 embedding npz files)
uv run python scripts/setup_data.py /path/to/zenodo/download
# 3. Pipeline (or just: uv run python scripts/run_all.py)
uv run python -m src.step1_link # validate 16 npz files, build manifest
uv run python -m src.step2_statistics # Mantel + PERMANOVA, all heads
Rscript R/dbrda.R # db-RDA + varpart, all heads (parallel)
uv run python -m src.step4_graph # social network, all heads
uv run python scripts/make_readme_tables.pyFull pipeline runs in ~15 min on an M1 with 8 cores (db-RDA dominates the cost). Permutation counts: 9,999 for Mantel / PERMANOVA / social Mantel; 999 for db-RDA (multi-core).
| Source | License | Refresh | Location |
|---|---|---|---|
| contempArt images + metadata | CC-BY 4.0 | static | Zenodo DOI 10.5281/zenodo.19365430 |
| 16 embedding npz files | CC-BY-NC 4.0 | static | Zenodo DOI 10.5281/zenodo.19685514 (concept: 19685513) |
| 2020 node2vec + VGG distances | as original paper | static | included in data/original_2020/ |