ArtSleuth

Where connoisseurship meets computation

A computational art-analysis framework that formalises what connoisseurs have done for centuries — examining the physical evidence a painter leaves on a canvas — using self-supervised vision transformers, Bayesian inference, and cross-attention fusion.

Python 3.10+ PyTorch DINOv2 + CLIP Cross-Attention Gaussian Process Bayesian Mixture MCP Server MIT
Capabilities

Six Analytical Axes

Each grounded in art-historical practice and modern computer vision

Brushstroke Analysis

Structure-tensor analysis and coherence clustering reveal the characteristic facture of individual painters.

Structure TensorDINOv2K-Means

Style Classification

Multi-axis classification along period, school, and genre using dual-backbone embeddings.

CLIPDINOv2Multi-Axis

Artist Attribution

Cosine-similarity ranking against a reference gallery with confidence intervals and temporal cross-validation.

Cosine SimilarityBayesian CI

Anomaly Screening

One-class anomaly detection with z-score indicators, stress-tested against adversarial forgery simulations.

MahalanobisAdversarial

Workshop Decomposition

Dirichlet Process Gaussian Mixture Models infer how many distinct hands contributed to a painting.

DPGMMBayesianNon-parametric

Temporal Dating

Gaussian process regression over dated embeddings models an artist's stylistic evolution over time.

Gaussian ProcessStyle Drift
Empirical Evaluation

Benchmark Results

WikiArt (81,444 images) and 126-artist forgery validation

72.7%
Style Accuracy
79.0%
Artist Top-1
96.9%
Artist Top-5
0.918
Median AUC (Fused)
BackboneStyleF1ArtistTop-5Genre
DINOv2 ViT-B/1457.5%0.55364.7%90.9%71.0%
CLIP ViT-L/1467.1%0.65674.6%95.9%75.0%
Fusion (frozen)65.0%0.63371.0%94.2%74.2%
Fusion (fine-tuned)71.6%0.70377.8%96.2%75.1%
Fusion (end-to-end)72.7%79.0%96.9%76.6%

All numbers macro-averaged. Fine-tuning: SupCon + CE, 3-block unfreeze, 5 epochs, Tesla P100.

126
Artists Validated
0.958
Mean AUC (CLIP)
0.873
Mean AUC (DINOv2)
0.897
Mean AUC (Fused)

One-class anomaly detection per artist. ROC-AUC on held-out sets. Results vary by corpus size.

System Design

Architecture

Dual backbones, cross-attention fusion, and six analytical heads

Artwork Input
Art-Specific Preprocessing
DINOv2 · Texture
CLIP · Semantics
Cross-Attention Fusion
Brushstroke
Style
Attribution
Screening
Workshop
Temporal
Unified Report
Academic Context

Related Work

Building on decades of computational art analysis and self-supervised vision

  1. Morelli, G. (1890). Italian Painters: Critical Studies of Their Works. John Murray.
  2. Lyu, S., Rockmore, D. & Farid, H. (2004). A digital technique for art authentication. PNAS, 101(49). doi
  3. Johnson, C. R. et al. (2008). Image processing for artist identification. IEEE Signal Proc. Mag., 25(4). doi
  4. Saleh, B. & Elgammal, A. (2016). Large-scale classification of fine-art paintings. JOCCH, 8(4). doi
  5. Vaswani, A. et al. (2017). Attention is all you need. NeurIPS. arXiv
  6. Caron, M. et al. (2021). Emerging properties in self-supervised vision transformers. ICCV. arXiv
  7. Radford, A. et al. (2021). Learning transferable visual models from natural language supervision. ICML. arXiv
  8. Oquab, M. et al. (2024). DINOv2: Learning robust visual features without supervision. TMLR. arXiv
  9. Blei, D. M. & Jordan, M. I. (2006). Variational inference for Dirichlet process mixtures. Bayesian Analysis, 1(1). doi
  10. Rasmussen, C. E. & Williams, C. K. I. (2006). Gaussian Processes for Machine Learning. MIT Press.

Full bibliography with DOIs available in the README and methodology documentation.

Get Started

Installation

From pip install to first analysis in under a minute

# Install core package
pip install artsleuth

# Quick analysis
artsleuth analyze painting.jpg

# Full suite with web UI
pip install artsleuth[web,benchmarks]

# Launch interactive demo
artsleuth demo
# Python API
from artsleuth import analyze

result = analyze("painting.jpg")
print(result.summary())