HUMAN OR AI? / IMAGE INTELLIGENCE

AI image detection.Evidence in view.

We’re building an image-review product around transparent AI detection. Our starting point is an open source detector that brings image-forensics signals and a learned visual representation into one advisory estimate.

An estimate, not proof. Built for exploration, not consequential decisions.

UNIFIED DETECTOR / V2
FORENSICS + VISUAL REPRESENTATION855 D
Architecture illustration · not an analyzed image
855combined feature dimensions
85classical forensic features
34generator families in the dataset

THE PRODUCT / OUR FOCUS

More context for every image.

Human or AI? starts with a straightforward question: was this still image fully generated by AI? Our aim is to make the answer easier to inspect, understand, and question.

A research foundation

An existing detector combines classical forensic features, a frozen DINOv2 representation, and a calibrated classifier. The code, model records, and evaluations are open to inspection.

An understandable result

The local prototype returns an estimated AI probability and a plain-language explanation. A result is decision support, not a claim of verified authenticity.

A responsible direction

The product direction is a clearer image-review experience, with uncertainty and known failure cases visible alongside the result. A hosted detection service is not available on this website yet.

01 / THE METHOD

One image. Multiple signals.

Image statistics and learned visual features offer different views of the same input. A calibrated classifier brings them together; no individual signal establishes authenticity.

The unified detector pipelineA still image branches into 85 classical forensic features, a frozen 768-dimensional DINOv2 embedding, and 2 embedding-drift features. The 855-dimensional vector is standardized and classified by a calibrated SVM to produce an advisory probability and explanation. Still imageJPEG · PNG · WebPClassical forensics85 dimensionsFrozen DINOv2768 dimensionsEmbedding drift2 dimensionsCombined vector855 dimensionsCalibrated SVMProbability + explanation The unified detector pipelineA still image branches into 85 classical forensic features, a frozen 768-dimensional DINOv2 embedding, and 2 embedding-drift features. The 855-dimensional vector is standardized and classified by a calibrated SVM to produce an advisory probability and explanation. Still imageJPEG · PNG · WebPClassical forensics85 dimensionsFrozen DINOv2768 dimensionsEmbedding drift2 dimensionsCombined vector855 dimensionsCalibrated SVMProbability + explanation
01

Read the image

Validate a supported still image, then measure frequency, compression, texture, noise, and metadata signals.

02

Combine the features

Join 85 classical features with a 768-dimensional DINOv2 embedding and 2 perturbation-drift features.

03

Return an estimate

Standardize the vector and apply a group-aware, sigmoid-calibrated SVM. Return the estimated AI probability with a plain-language explanation.

Without PyTorch, or if embedding extraction fails, the detector uses its 85-feature classical fallback. Its benchmark results are lower than the full model’s.

02 / THE ANALYZERS

Different traces. A shared view.

The classical branch has 11 feature groups. These are statistical signals, not independent verdicts.

Frequency & compression

Patterns in the spectrum, JPEG blocks, and recompression.

FFT power spectrum
4 features
Eigenvalues + spectral bands
12 features
DCT / JPEG statistics
8 features
Error Level Analysis
5 features

Texture & local structure

Image gradients, fine texture, up-sampling residue, and screenshot characteristics.

Gradient statistics
5 features
PatchCraft texture
3 features
NPR residue
6 features
Screenshot forensics
10 features

Noise & supporting signals

Noise correlations, EXIF metadata, and changes under controlled perturbation.

Noise residuals
11 features
EXIF metadata
6 features
Classical perturbation drift
15 features

A learned visual representation

The frozen DINOv2 ViT-B/14 branch adds 768 visual features. Two RIGID embedding-drift features measure change under a small noise perturbation. The backbone is not fine-tuned here.

Analyzer failures return finite fallback values to let processing continue. Those values do not guarantee an unbiased prediction.

03 / RESULTS & LIMITS

The benchmark. The boundaries.

Published results from the June 15, 2026 evaluation. Read the measured performance together with the cases this detector does not handle reliably.

Measured on the test split

6,414 rows · 3,216 AI / 3,198 real

Accuracyat a 0.5 probability threshold
86.4%
ROC-AUCranking across thresholds
0.940
AI detection at 5% FARevaluation reference operating point
71.5%

Known limitations

These are part of the result, not exceptions to it.

  • Novel generators remain difficult.

    Rectified-flow generators such as Flux and SD3 are a documented weak case. Continuous-token autoregressive generators remain untested.

  • Still images only.

    Video, video-frame screenshots, deepfakes, face swaps, and localized photo edits are outside the supported use.

  • False positives have consequences.

    An AI estimate can be wrong. Do not use it as sole evidence for legal, journalistic, moderation, or other consequential decisions.

What this evaluation measures

6,414 test rows come from 802 base images, so rows are correlated. Base-image confidence intervals have not been computed.

All variants of a base image stay in one split. Evaluation covers clean images, screenshots, Facebook / X / Telegram recompression, and chained transforms.

5% FAR is measured on photographic real images at an evaluation threshold. It is not a universal false-positive guarantee or the inference decision rule.

The separate 2,520-row generator holdout contains only AI images. Its standalone ROC-AUC is undefined; five generator families were excluded from training.

Unified model and classical fallback — same test split
ModelFeaturesAccuracyROC-AUCDetection @ 5% FAR
Unified85586.4%0.94071.5%
Classical fallback8578.1%0.86343.6%

Three acceptance gates remain unmet.

Clean ROC-AUC

Measured 0.947Target 0.950

Clean accuracy

Measured 0.867Target 0.900

Held-out generator detection @ 5% FAR

Measured 0.513Target 0.600

Photographic training sources do not characterize performance on real artwork, documents, or scientific imagery. Very small images and heavy post-processing can degrade detection.

Explore the test conditions

Each condition is measured on variants of the held-out base images. Select a condition to see its recorded results.

Rows802
Accuracy86.7%
ROC-AUC0.947
Detection @ 5% FAR72.9%

OUR DIRECTION / DEVELOPMENT PRIORITIES

Build on the evidence.

The next stage is to turn the research foundation into a useful review experience. These are development priorities, not features already shipped or guaranteed outcomes.

EVALUATE

Broader testing

Address the recorded gaps on unfamiliar generators and non-photographic real images, and measure uncertainty at the base-image level.

EXPLAIN

Clearer uncertainty

Make the signals, caveats, and failure cases easier to understand. Keep estimated probability separate from proof of origin.

DEVELOP

A reliable review workflow

Develop an accessible product experience around the detector, and validate reliability and image handling before offering hosted inference.

Current stage: open source research prototype. The website shares the project and its direction; it does not process image uploads.

04 / GET STARTED

An open source foundation.

Run the existing detector on your laptop. The code and trained model bundles are in the repository; the recorded dataset is available separately.

Python 3.10+ · A CPU works; GPU acceleration is optional.

  • The full install includes PyTorch and timm. The frozen DINOv2 weights may download on first use.
  • For a smaller, classical-only installation, use requirements-runtime.txt instead of requirements.txt.
  • Training and reproducing evaluation require restoring the recorded dataset. Dataset access does not establish redistribution rights for every image.
Laptop quick start
git clone https://github.com/aman696/aidetector.git
cd aidetector

python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

# Classify a single image
python main.py --image path/to/image.jpg

# Batch classify a directory
python main.py --batch path/to/folder/

# Web interface (drag-and-drop)
python app.py   # -> http://localhost:8000

LIVE DEMO

Try the detector.

Live demo offline, run it locally

The local browser app accepts still images and returns the model’s probability and explanation. This website does not process or collect image uploads.

See laptop instructions