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-336vision 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 formodel.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