2
0
mirror of https://github.com/Shawn-Shan/fawkes.git synced 2025-02-24 00:57:06 +05:30
This repository is a clone of "fawkes" by Shawn-Shan (on GitHub). https://github.com/Shawn-Shan/fawkes
Go to file
John Pulford 5e9bef774d Situation: Fawkes is a brilliant research project. I personally enjoyed reading the research paper. However, numerous issues and pull requests have resulted from how difficult it is to run after initially downloading it due to poorly documented python version requirements and compatibility collapse with numerous dependencies following ~4 years of drift. Example links in the last paragraph for brevity.
Action: I rewrote the setup code to depend on pyenv and poetry allowing us to explicitly require the use of python 3.9.0 rather than having users guess at how best to execute the code. I've used stricter dependency requirements (lots of ~= in pyproject.toml dependencies) as the project is unlikely to be maintained regularly and reviving the code required a lot of dependency incompatibility navigation we should avoid for future users.

Result: A new user can build this great research project with ~10 lines! A big win in my opinion.

Some relevant pull requests and issues.
https://github.com/Shawn-Shan/fawkes/pull/168
https://github.com/Shawn-Shan/fawkes/pull/158
https://github.com/Shawn-Shan/fawkes/issues/186
https://github.com/Shawn-Shan/fawkes/issues/178
2025-02-08 22:36:57 +00:00
app 1.0 beta update 2021-03-07 00:39:19 -06:00
fawkes Situation: Fawkes is a brilliant research project. I personally enjoyed reading the research paper. However, numerous issues and pull requests have resulted from how difficult it is to run after initially downloading it due to poorly documented python version requirements and compatibility collapse with numerous dependencies following ~4 years of drift. Example links in the last paragraph for brevity. 2025-02-08 22:36:57 +00:00
.gitignore 0.0.6 2020-07-07 11:15:47 -05:00
.python-version Situation: Fawkes is a brilliant research project. I personally enjoyed reading the research paper. However, numerous issues and pull requests have resulted from how difficult it is to run after initially downloading it due to poorly documented python version requirements and compatibility collapse with numerous dependencies following ~4 years of drift. Example links in the last paragraph for brevity. 2025-02-08 22:36:57 +00:00
LICENSE merge 2020-07-15 09:38:12 -05:00
poetry.lock Situation: Fawkes is a brilliant research project. I personally enjoyed reading the research paper. However, numerous issues and pull requests have resulted from how difficult it is to run after initially downloading it due to poorly documented python version requirements and compatibility collapse with numerous dependencies following ~4 years of drift. Example links in the last paragraph for brevity. 2025-02-08 22:36:57 +00:00
publish.sh Situation: Fawkes is a brilliant research project. I personally enjoyed reading the research paper. However, numerous issues and pull requests have resulted from how difficult it is to run after initially downloading it due to poorly documented python version requirements and compatibility collapse with numerous dependencies following ~4 years of drift. Example links in the last paragraph for brevity. 2025-02-08 22:36:57 +00:00
pyproject.toml Situation: Fawkes is a brilliant research project. I personally enjoyed reading the research paper. However, numerous issues and pull requests have resulted from how difficult it is to run after initially downloading it due to poorly documented python version requirements and compatibility collapse with numerous dependencies following ~4 years of drift. Example links in the last paragraph for brevity. 2025-02-08 22:36:57 +00:00
README.md Situation: Fawkes is a brilliant research project. I personally enjoyed reading the research paper. However, numerous issues and pull requests have resulted from how difficult it is to run after initially downloading it due to poorly documented python version requirements and compatibility collapse with numerous dependencies following ~4 years of drift. Example links in the last paragraph for brevity. 2025-02-08 22:36:57 +00:00

Fawkes

⚠️ Check out our MacOS/Windows Software on our official webpage.

Fawkes is a privacy protection system developed by researchers at SANDLab, University of Chicago. For more information about the project, please refer to our project webpage. Contact us at fawkes-team@googlegroups.com.

We published an academic paper to summarize our work "Fawkes: Protecting Personal Privacy against Unauthorized Deep Learning Models" at USENIX Security 2020.

This code is intended only for personal privacy protection or academic research.

Usage

Local Development (Most reliable and future-proof method of running fawkes)

# Install pyenv before running these commands
# Instructions to install pyenv vary per OS.
pyenv install 3.9.0
pyenv global 3.9.0
pip install poetry 
# After this point global python can be anything
# the fawkes repos .python-version file tells pyenv to use 3.9.0 when inside the fawkes folder.

pip install poetry # Install poetry

pyenv install 3.9.0
cd fawkes
poetry install
poetry run python .\fawkes\protection.py -d ./imgs --mode low

$ fawkes

Options:

  • -m, --mode : the tradeoff between privacy and perturbation size. Select from low, mid, high. The higher the mode is, the more perturbation will add to the image and provide stronger protection.
  • -d, --directory : the directory with images to run protection.
  • -g, --gpu : the GPU id when using GPU for optimization.
  • --batch-size : number of images to run optimization together. Change to >1 only if you have extremely powerful compute power.
  • --format : format of the output image (png or jpg).

Example

fawkes -d ./imgs --mode low

Tips

  • The perturbation generation takes ~60 seconds per image on a CPU machine, and it would be much faster on a GPU machine. Use batch-size=1 on CPU and batch-size>1 on GPUs.
  • Run on GPU. The current Fawkes package and binary does not support GPU. To use GPU, you need to clone this repo, install the required packages in setup.py, and replace tensorflow with tensorflow-gpu. Then you can run Fawkes by python3 fawkes/protection.py [args].

How do I know my images are secure?

We are actively working on this. Python scripts that can test the protection effectiveness will be ready shortly.

Quick Installation

Install from PyPI:

pip install fawkes

If you don't have root privilege, please try to install on user namespace: pip install --user fawkes.

Academic Research Usage

For academic researchers, whether seeking to improve fawkes or to explore potential vunerability, please refer to the following guide to test Fawkes.

To protect a class in a dataset, first move the label's image to a separate location and run Fawkes. Please use --debug option and set batch-size to a reasonable number (i.e 16, 32). If the images are already cropped and aligned, then also use the no-align option.

Citation

@inproceedings{shan2020fawkes,
  title={Fawkes: Protecting Personal Privacy against Unauthorized Deep Learning Models},
  author={Shan, Shawn and Wenger, Emily and Zhang, Jiayun and Li, Huiying and Zheng, Haitao and Zhao, Ben Y},
  booktitle={Proc. of {USENIX} Security},
  year={2020}
}