imagerecogniser / README.md
Joergenator's picture
updated readme
540535c verified

A newer version of the Streamlit SDK is available: 1.57.0

Upgrade
metadata
title: Real vs AI-generated image classifier
emoji: 🖼️
colorFrom: blue
colorTo: purple
sdk: streamlit
sdk_version: 1.38.0
app_file: app.py
pinned: false
license: mit

Real vs AI-generated image classifier

Course project for DAT255 — Deep Learning Engineering. Given an uploaded image, four different models predict whether it's a real photograph or AI-generated.

Try it

Pick a model from the dropdown, upload a JPG/PNG/WebP, and the app returns the probability that the image is AI-generated.

Models

Model Strategy Test AUC
ViT-B/16 (transfer learning) Fine-tuned ImageNet backbone 0.9950
DenseNet-121 (transfer learning) Fine-tuned ImageNet backbone 0.9854
ResNet-50 (transfer learning) Fine-tuned ImageNet backbone 0.9749
ResNet-50 (from scratch, GELU) Random init, ReLU → GELU 0.9349

All four were trained on a 60 000-image dataset split 80/10/10. Weights are hosted on the HuggingFace Hub and pulled at first use.

Running locally

pip install -r requirements.txt
streamlit run app.py

The app prefers local weights at results/checkpoints/<tag>/best.pt if they exist; otherwise it downloads from the configured HF Hub repo. Override the repo with HF_WEIGHTS_REPO=username/reponame.

Source

Training code and experiment history: github.com/Joergenator/ImageRecogniser. The four scratch-resnet50-gelu* branches record the iterations behind the from-scratch model.