Skip to content
/ POSE Public

This is the official repository for the code and datasets in the paper "Progressive Open Space Expansion for Open-Set Model Attribution", CVPR 2023.

Notifications You must be signed in to change notification settings

ICTMCG/POSE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

185b25d · Oct 22, 2023

History

14 Commits
Jun 21, 2023
Jun 21, 2023
Jun 21, 2023
Jun 21, 2023
Jun 21, 2023
Jun 21, 2023
Jun 21, 2023
Jun 21, 2023
Jun 21, 2023
Oct 22, 2023
Jun 21, 2023
Jun 21, 2023
Jun 21, 2023
Jun 21, 2023
Jun 21, 2023

Repository files navigation

POSE

Progressive Open Space Expansion for Open-Set Model Attribution

Tianyun Yang, Danding Wang, Fan Tang, Xinying Zhao, Juan Cao, Sheng Tang, CVPR 2023 Paper, Slide

Abstract

Despite the remarkable progress in generative technology, the Janus-faced issues of intellectual property protection and malicious content supervision have arisen. Efforts have been made to manage synthetic images by attributing them to a set of potential source models. However, the closed-set classification setting limits the application in real-world scenarios for handling contents generated by arbitrary models. In this work:

  1. We tackle an important challenge for applying model attribution to open scenarios, the Open-Set Model Attribution (OSMA) problem, which attributes images to known models and identifies images from unknown ones.
  2. We propose a novel Progressive Open Space Expansion (POSE) solution, which simulates the potential open space of unknown models progressively by a set of lightweight augmentation models and consequently reduces open space risk.
  3. We construct an OSMA benchmark simulating the real-world scenarios, on which extensive experiments prove the superiority of POSE compared with existing GAN attribution methods and off-the-shelf OSR methods.

Prerequisites

  • Linux
  • NVIDIA GPU + CUDA 11.1
  • Python 3.7.13
  • PyTorch 1.10.0

Dataset

The whole dataset is hosted here. Download, unzip, and put the dataset into the directory ./dataset/.

As the size of the whole dataset is up to 50GB. We provide a small subset of the dataset in DatasetSubset. You can use this for the evaluation and visualization demos below. Also, download and put the subset into the directory ./dataset/.

The annotation files are in ./dataset and can be downloaded along with the project. The organization is as follows:

dataset
├── $split{id}_test
│   └── annotations
│       ├── $split{id}_test.txt
│       ├── $split{id}_test_out.txt
│       ├── $split{id}_test_out_seed.txt
│       ├── $split{id}_test_out_arch.txt
│       └── $split{id}_test_out_dataset.txt
├── $split{id}_train
│   └── annotations
│       └── $split{id}_train.txt
└── $split{id}_val
    └── annotations
        └── $split{id}_val.txt

where split{id}_train.txt, split{id}_val.txt, split{id}_test.txt are the annotation files for training, validation, closed-set testing. split{id}_test_out.txt is the annotation file for all open-set/unknown data. split{id}_test_out_seed.txt, split{id}_test_out_arch.txt, split{id}_test_out_dataset.txt are annotation files for unseen seed, unseen architecture, and unseen dataset respectively.

Training

  • Run the following script:
sh ./script/run_train.sh
  • Following is a training script example for split1:
python3 main.py --config_name progressive --mode POSE --device cuda:0 --data split1

Checkpoints

  • We provide checkpoints trained on five splits of the dataset in Checkpoints. Download and put files into the directory ./checkpoints. Each file split#/model.pth corresponds to the weight trained on split#. The directory also includes augmentation models and model weights for split1 and split2 during the progressive training progress.

Demo

  • Demo1 for open-set evaluation, including metric calculation, confidence histogram, ROC curve, and detailed results for each unknown class.

  • Demo2 for t-SNE visualization of known, unknown, and augmented data. (Fig.4 in our paper)

  • Demo3 for t-SNE visualization of the progressive open space expansion process. (Fig.5 in our paper)

Testing

  • For result reproduction, you may download the whole dataset and run the following:
    sh ./script/run_test.sh
    
  • Following is a testing script example for split1:
    python3 test.py --model_path ./checkpoints/split1/model.pth --device cuda:0 -data split1
    

Acknowledgement

We sincerely appreciate the following repositories where generative models in our dataset are mainly from:

https://github.com/ningyu1991/GANFingerprints
https://github.com/TuBui/image_attribution
https://github.com/kwotsin/mimicry
https://github.com/yunjey/stargan
https://github.com/LynnHo/AttGAN-Tensorflow
https://github.com/tkarras/progressive_growing_of_gans
https://github.com/NVlabs/stylegan
https://github.com/NVlabs/stylegan2
https://github.com/NVlabs/stylegan3
https://github.com/POSTECH-CVLab/PyTorch-StudioGAN
https://github.com/ondyari/FaceForensics
https://github.com/Rudrabha/Wav2Lip
https://github.com/YuvalNirkin/fsgan
https://github.com/richarduuz/Research_Project/tree/master/ModelC

How to Cite

@inproceedings{yang2023progressive,
  title={Progressive Open Space Expansion for Open-Set Model Attribution},
  author={Yang, Tianyun and Wang, Danding and Tang, Fan and Zhao, Xinying and Cao, Juan and Tang, Sheng},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  pages={15856--15865},
  year={2023}
}

About

This is the official repository for the code and datasets in the paper "Progressive Open Space Expansion for Open-Set Model Attribution", CVPR 2023.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published