yeardater (v8)

Guesses the year a photo was taken, 1930-2026, as a probability over 97 years. Demo: https://huggingface.co/spaces/chiemekakalu/yeardater

Model

  • Backbone: openai/clip-vit-large-patch14-336 vision tower at 336 px, fine-tuned; head: LayerNorm, Dropout 0.1, Linear to 512, GELU, Dropout, Linear to 97 year bins.
  • Training: soft labels (Gaussian, sigma 2.0), 5 epochs (backbone frozen for the first 1), AdamW (head 0.001, backbone 2e-05), effective batch 256, bf16, grayscale augmentation p=0.3, data manifest_v2.csv.
  • Files: best.pt (PyTorch state_dict for model.YearDater), config.json (backbone, input size).
  • Point estimate: the median of the predicted distribution (lowest absolute error); 80% interval from the 10th and 90th percentiles.

Evaluation

Validation: 14,192 images, 5% of the data stratified by year (the same ids for every run). A constant guess scores 20.94 years MAE.

val set MAE (years) within 5 years within 10 years
color 3.66 77.9% 92.4%
same images in grayscale 4.71 69.8% 87.9%

MAE above uses the expected value of the distribution. The median (what the demo shows) scores 3.62 on color val.

Per decade (color): 1930s 3.94, 1940s 3.71, 1950s 3.60, 1960s 3.06, 1970s 3.06, 1980s 3.60, 1990s 3.06, 2000s 3.71, 2010s 3.29, 2020s 4.95.

Data and limits

  • 1930-1999: DEW (Müller, Springstein, Ewerth, MMM 2017; metadata DOI 10.22000/43, CC BY 4.0), images fetched from their Flickr URLs. 2000-2026: Flickr API (exact EXIF timestamps). No training images are redistributed.
  • Weak before 1960 and on scanned prints; modern photos styled to look old (sepia, B&W filters) are guessed old.
  • Dates come from camera clocks and uploaders; some labels are wrong.

Built by Chiemeka Kalu with a coding agent (Claude Code) doing most of the typing.

Downloads last month
43
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Space using chiemekakalu/yeardater-model 1