The application performs three independent analyses to estimate the most probable source device of a photo:
- JPEG Compression analysis – examines quantization matrices and DCT artifacts.
- PRNU (Photo response non-uniformity) – extracts and matches sensor noise patterns unique to each device.
- CNN-Based noise residual analysis – uses a trained convolutional neural network to classify noise features.
The results from these three methods are fused to produce a combined prediction of the device using which the picture was taken.
- Train models from image folders organized by device type.
- Perform device detection on images with metadata removed.
- View detailed results for each method and combined output.
- Multithreaded training and analysis with progress and log display.
picture_device/
├── cnn_model.py
├── database.py
├── fusion_analysis.py
├── gui.py
├── jpeg_analyzer.py
├── main.py
├── prnu_analyzer.py
├── utils.py
├── requirements.txt
└── models/ (generated after the training)
-
Install the dependencies:
pip install -r requirements.txt -
Run the application:
python main.py -
Training
- Select a folder with images.
- Press "Start training" button to generate reference models for each analysis method.
- Detection
- Go to the "Device detection" tab.
- Select an image for testing.
- Press "Analyze image" button to see the results.
Additional Training
"About" Tab
Mansur Ozaman: https://github.com/ozxmn



