We use [EG3D](https://github.com/NVlabs/eg3d) as a pretrained face generator network based on generative neural radiance fields (GNeRF). Therefore, you need to clone its git repository and download [available pretrained model](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/research/models/eg3d):
```sh
$ git clone https://github.com/NVlabs/eg3d.git
```
We use `ffhq512-128.pkl`[checkpoint](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/research/models/eg3d/files) in our experiments.
## Downloading the datasets
In our experiments, we use [FFHQ](https://github.com/NVlabs/ffhq-dataset) dataset for training our face reconstruction network.
Also we used [MOBIO](https://www.idiap.ch/dataset/mobio) and [LFW](http://vis-www.cs.umass.edu/lfw/) datasets for evaluation.
All of these datasets are publicly available. To download the datasets please refer to their websites:
-[FFHQ](https://github.com/NVlabs/ffhq-dataset)
-[MOBIO](https://www.idiap.ch/dataset/mobio)
-[LFW](http://vis-www.cs.umass.edu/lfw/)
## Configuring the directories of the datasets
Now that you have downloaded the three databases. You need to set the paths to
those in the configuration files. [Bob](https://www.idiap.ch/software/bob) supports a configuration file
(`~/.bobrc`) in your home directory to specify where the
databases are located. Please specify the paths for the database like below:
```sh
# Setup FFHQ directory
$ bob config set bob.db.ffhq.directory [YOUR_FFHQ_IMAGE_DIRECTORY]
# Setup MOBIO directories
$ bob config set bob.db.mobio.directory [YOUR_MOBIO_IMAGE_DIRECTORY]
$ bob config set bob.db.mobio.annotation_directory [YOUR_MOBIO_ANNOTATION_DIRECTORY]
# Setup LFW directories
$ bob config set bob.db.lfw.directory [YOUR_LFW_IMAGE_DIRECTORY]
$ bob config set bob.bio.face.lfw.annotation_directory [YOUR_LFW_ANNOTATION_DIRECTORY]
```
## Running the Experiments
### Step 1: Training face reconstruction model
You can train the face reconstruction model by running `train.py`. For example, for blackbox attack against `ElasticFace` using `ArcFace` in loss function, you can use the following commands:
After the model is trained, you can use it to run evaluation.
For evaluation, you can use `evaluation_pipeline` script and evaluate on an evaluation dataset (MOBIO/LFW). For example, for evaluation of a face reconstruction of ElasticFace to attack the same system on MOBIO dataset, you can use the following commands:
After you ran the evaluation pipeline, you can use `eval_SAR_TMR.py` to caluclate the vulnaribility in terms of Sucess Attack Rate (SAR).
## Project Page
You can find general information about this work, including general block diagarm of the proposed method and experiments in the [project page](https://www.idiap.ch/paper/gafar/).
## Contact
For questions or reporting issues to this software package, please contact the first author (hatef.otroshi@idiap.ch) or our development [mailing list](https://www.idiap.ch/software/bob/discuss).