dk2430098/Image-Forensics-Detect
ImageForensics-Detect
Research-grade multi-branch image forensics platform for detecting Real vs. AI-Generated images. B.Tech Final Year Project ยท IEEE-Style Research System
๐ง What This Does
ImageForensics-Detect analyzes uploaded images through 5 independent forensic detection branches and fuses their outputs using certainty-weighted probabilistic fusion to decide whether an image is:
- Real โ captured by a physical camera
- AI-Generated โ created by GANs or diffusion models (Stable Diffusion, DALL-E, Midjourney, etc.)
๐๏ธ Architecture
Input Image
โ
โโโโบ Spectral Branch (FFT/DCT analysis) [no training needed]
โโโโบ Edge Branch (Sobel/Laplacian forensics) [no training needed]
โโโโบ CNN Branch (EfficientNet-B0 / TF) [train_cnn.py]
โโโโบ ViT Branch (ViT-B/16 / PyTorch+timm) [train_vit.py]
โโโโบ Diffusion Branch (residual noise analysis) [no training needed]
โ
Certainty-Weighted Probabilistic Fusion
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Prediction: Real / AI-Gen โ
โ Confidence: 97.1% โ
โ Grad-CAM heatmap โ
โ Spectral anomaly map โ
โ Noise residual map โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ๐ Folder Structure
ImageForensics-Detect/
โโโ data/raw/{real,fake}/ โ Your dataset goes here
โโโ models/ โ Saved .h5 / .pth weights
โโโ branches/
โ โโโ spectral_branch.py โ
COMPLETE (signal processing)
โ โโโ edge_branch.py โ
COMPLETE (signal processing)
โ โโโ cnn_branch.py ๐ต BASELINE (needs training)
โ โโโ vit_branch.py ๐ต BASELINE (needs training)
โ โโโ diffusion_branch.py โ
COMPLETE (signal processing)
โโโ fusion/fusion.py โ
COMPLETE
โโโ explainability/
โ โโโ gradcam.py โ
COMPLETE
โ โโโ spectral_heatmap.py โ
COMPLETE
โโโ training/
โ โโโ dataset_loader.py โ
COMPLETE
โ โโโ train_cnn.py โ
COMPLETE
โ โโโ train_vit.py โ
COMPLETE
โ โโโ evaluate.py โ
COMPLETE
โโโ backend/app.py โ
COMPLETE (FastAPI)
โโโ frontend/{index.html,style.css,app.js} โ
COMPLETE
โโโ utils/{image_utils.py,logger.py} โ
COMPLETE
โโโ outputs/ โ Logs, heatmaps, eval resultsโ๏ธ Installation
Prerequisites
- Python 3.9+
- pip / conda
1. Create Virtual Environment
cd "ImageForensics-Detect"
python -m venv venv
source venv/bin/activate # macOS/Linux
# venv\Scripts\activate # Windows2. Install Dependencies
pip install -r requirements.txtNote: On Apple Silicon (M1/M2/M3), usepip install tensorflow-macos tensorflow-metalinstead oftensorflow.
๐๏ธ Dataset Setup
Populate the dataset folders before training:
data/raw/
โโโ real/ โ Real camera photos (.jpg, .png)
โโโ fake/ โ AI-generated images (.jpg, .png)Recommended datasets: | Type | Dataset | Source | |---|---|---| | Real | RAISE-1K / VISION / MIT-5k | Kaggle / research groups | | AI-Gen | ThisPersonDoesNotExist / SDXL outputs | Collected/scraped | | Mixed | ArtiFact / CNNDetection | GitHub papers |
The loader auto-splits: 70% train / 15% val / 15% test (stratified).
๐๏ธ Training
Train CNN Branch (EfficientNet-B0 / TensorFlow)
python training/train_cnn.py --epochs 30 --batch_size 32 --lr 1e-4
# Saves: models/cnn_branch.h5Train ViT Branch (ViT-B/16 / PyTorch)
python training/train_vit.py --epochs 20 --batch_size 16 --lr 1e-4
# Saves: models/vit_branch.pthWithout training: The system is still functional โ the 3 handcrafted branches (Spectral, Edge, Diffusion) produce real forensic outputs immediately. CNN/ViT branches return neutral 0.5 confidence and are flagged as "untrained" in the API response.๐ Evaluation
# Evaluate entire fusion system
python training/evaluate.py
# Evaluate individual branches
python training/evaluate.py --branch spectral
python training/evaluate.py --branch edge
python training/evaluate.py --branch cnn
python training/evaluate.py --branch vit
python training/evaluate.py --branch diffusionReports saved to outputs/:
confusion_matrix_<branch>.pngroc_curve_<branch>.pngevaluation_<branch>.csv
๐ Running the System
Step 1: Start Backend API
uvicorn backend.app:app --reload --host 0.0.0.0 --port 8000Step 2: Open Frontend
Open frontend/index.html in your browser (double-click, or use Live Server in VS Code).
Step 3: Upload and Analyze
Drag-and-drop any image โ Click Analyze Image โ View results.
๐ API Reference
POST /predict
Upload an image and receive full forensic analysis.
Request:
curl -X POST "http://localhost:8000/predict" \
-F "file=@your_image.jpg"Response:
{
"prediction": "AI-Generated",
"confidence": 97.1,
"prob_fake": 0.9855,
"branches": {
"spectral": { "prob_fake": 0.9420, "confidence": 0.8800, "label": "AI-Generated" },
"edge": { "prob_fake": 0.8100, "confidence": 0.7200, "label": "AI-Generated" },
"cnn": { "prob_fake": 0.9820, "confidence": 0.9640, "label": "AI-Generated" },
"vit": { "prob_fake": 0.9600, "confidence": 0.9200, "label": "AI-Generated" },
"diffusion": { "prob_fake": 0.8900, "confidence": 0.8300, "label": "AI-Generated" }
},
"gradcam_b64": "<base64-encoded JPEG>",
"spectrum_b64": "<base64-encoded JPEG>",
"noise_map_b64": "<base64-encoded JPEG>",
"edge_map_b64": "<base64-encoded JPEG>",
"low_certainty": false
}GET /health
{ "status": "ok", "service": "ImageForensics-Detect", "version": "1.0.0" }GET /logs
{ "total": 42, "real": 18, "ai_generated": 24 }๐ Research Methodology
Title (Suggested)
"Multi-Branch Certainty-Weighted Forensic Detection of AI-Generated Images Using Spectral Analysis, Edge Statistics, CNN, and Vision Transformers"
Abstract
This work presents ImageForensics-Detect, a multi-branch forensic analysis framework for distinguishing real camera photographs from AI-generated images produced by GANs and diffusion models. The system integrates five complementary detection branches: (1) spectral analysis using FFT and DCT to capture frequency-domain artifacts; (2) edge analysis using Sobel/Laplacian operators and gradient distribution statistics; (3) a CNN branch (EfficientNet-B0) for local texture and patch-level artifact detection; (4) a ViT branch (ViT-B/16) for global semantic inconsistency detection; and (5) a diffusion residual branch analyzing noise kurtosis and spatial uniformity. Branch predictions are combined using certainty-weighted probabilistic fusion, ensuring that uncertain or untrained branches contribute proportionally less to the final decision.
Key Design Decisions
References (Key Papers)
- Wang et al. (2020). CNN-generated images are surprisingly easy to spot... for now. CVPR.
- Frank et al. (2020). Leveraging Frequency Analysis for Deep Fake Image Recognition. ICML.
- Corvi et al. (2023). On the detection of synthetic images generated by diffusion models. ICASSP.
- Ojha et al. (2023). Towards Universal Fake Image Detection. CVPR.
- Selvaraju et al. (2017). Grad-CAM: Visual Explanations from Deep Networks. ICCV.
๐ ๏ธ Tech Stack
๐ Status Summary
Built for IEEE-style research deployment. B.Tech Final Year Project.
