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.
HUMAN OR AI? / IMAGE INTELLIGENCE
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.
THE PRODUCT / OUR FOCUS
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.
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.
The local prototype returns an estimated AI probability and a plain-language explanation. A result is decision support, not a claim of verified authenticity.
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
Image statistics and learned visual features offer different views of the same input. A calibrated classifier brings them together; no individual signal establishes authenticity.
Validate a supported still image, then measure frequency, compression, texture, noise, and metadata signals.
Join 85 classical features with a 768-dimensional DINOv2 embedding and 2 perturbation-drift features.
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
The classical branch has 11 feature groups. These are statistical signals, not independent verdicts.
Patterns in the spectrum, JPEG blocks, and recompression.
Image gradients, fine texture, up-sampling residue, and screenshot characteristics.
Noise correlations, EXIF metadata, and changes under controlled perturbation.
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
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
Known limitations
These are part of the result, not exceptions to it.
Rectified-flow generators such as Flux and SD3 are a documented weak case. Continuous-token autoregressive generators remain untested.
Video, video-frame screenshots, deepfakes, face swaps, and localized photo edits are outside the supported use.
An AI estimate can be wrong. Do not use it as sole evidence for legal, journalistic, moderation, or other consequential decisions.
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.
| Model | Features | Accuracy | ROC-AUC | Detection @ 5% FAR |
|---|---|---|---|---|
| Unified | 855 | 86.4% | 0.940 | 71.5% |
| Classical fallback | 85 | 78.1% | 0.863 | 43.6% |
Measured 0.947Target 0.950
Measured 0.867Target 0.900
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.
Each condition is measured on variants of the held-out base images. Select a condition to see its recorded results.
OUR DIRECTION / DEVELOPMENT PRIORITIES
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
Address the recorded gaps on unfamiliar generators and non-photographic real images, and measure uncertainty at the base-image level.
EXPLAIN
Make the signals, caveats, and failure cases easier to understand. Keep estimated probability separate from proof of origin.
DEVELOP
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
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.
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:8000LIVE DEMO
The local browser app accepts still images and returns the model’s probability and explanation. This website does not process or collect image uploads.