Skip to content

Official PyTorch implementation of "Composite Data Augmentations for Synthetic Image Detection Against Real-World Perturbations" (EUSIPCO 2025)

Notifications You must be signed in to change notification settings

efthimia145/sid-composite-data-augmentation

Repository files navigation

Composite Data Augmentations for Synthetic Image Detection Against Real-World Perturbations

Official implementation of "Composite Data Augmentations for Synthetic Image Detection Against Real-World Perturbations"
Accepted at EUSIPCO 2025 (33rd European Signal Processing Conference)

Overview

This repository implements a robust deep learning framework for detecting GAN-generated synthetic images with robustness to real-world perturbations. The approach combines multiple data augmentation techniques with a dual-criteria training pipeline to enhance model robustness against common image distortions encountered in practice. It also explores the utilization of a genetic algorithm for finding the optimal augmentaions to use during training.

Key Features

  • Composite Data Augmentations: Multiple augmentation strategies including JPEG compression, Gaussian blur, noise, sharpening, color transformations, and more
  • Dual-Criteria Training Pipeline: Novel training approach combining two losses
  • Genetic Algorithm Optimization: Automated augmentation strategy selection using PyGAD
  • Comprehensive Evaluation: Testing across 13 different synthetic image datasets
  • ResNet-50 Backbone: Pre-trained on ImageNet with custom binary classification head

Installation

  1. Clone the repository

  2. Create and activate a virtual environment:

    # Create virtual environment
    python -m venv venv
    
    # Activate virtual environment
    # On Windows:
    venv\Scripts\activate
    
    # On macOS/Linux:
    source venv/bin/activate
  3. Install dependencies:

    pip install -r requirements.txt
  4. Set up your dataset directory structure:

    dataset/
    ├── train/
    │   ├── class1/
    │   └── class2/
    ├── val/
    │   ├── class1/
    │   └── class2/
    └── test/
        ├── progan/
        ├── stylegan/
        ├── biggan/
        └── ...
    

Dataset Structure

Organize your datasets in the following structure:

dataset/
├── train/
│   ├── class1/
|   |   ├──0_real
|   |   ├──1_fake
│   ├── class2/
|   |   ├──0_real
|   |   ├──1_fake
├── val/
│   ├── class1/
|   |   ├──0_real
|   |   ├──1_fake
│   ├── class2/
|   |   ├──0_real
|   |   ├──1_fake
└── test/
    ├── progan/
    |   ├──0_real
    |   ├──1_fake
    ├── stylegan/
    ├── biggan/
    ├── cyclegan/
    ├── stargan/
    ├── gaugan/
    ├── crn/
    ├── imle/
    ├── seeingdark/
    ├── san/
    ├── deepfake/
    ├── stylegan2/
    └── whichfaceisreal/

Usage

Basic Training

python train.py --name experiment_name --lr 0.001 --optim adam --num_epochs 25

Dual-Criteria Training

python double_criteria_pipeline.py --name dual_experiment --lr 0.001 --optim adam

Genetic Algorithm Optimization

python sid_ga.py --name ga_experiment --num_generations 10 --solutions_per_population 8

Evaluation

python evaluate.py --model_path best_model --runner local  # For local testing
python evaluate.py --model_path best_model --runner hpc    # For full evaluation on HPC environments

Results

The model outputs comprehensive evaluation metrics:

  • Accuracy: Overall classification accuracy
  • Average Precision (AP): Area under precision-recall curve
  • Real Accuracy: Accuracy on real images
  • Fake Accuracy: Accuracy on synthetic images

Results are automatically logged to TensorBoard and saved as formatted tables.

About

Official PyTorch implementation of "Composite Data Augmentations for Synthetic Image Detection Against Real-World Perturbations" (EUSIPCO 2025)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published