This repo presents an official implementation of FairGRAPE: Fairness-aware GRAdient Pruning mEthod for Face Attribute Classification
The code has been tested on the following environment:
python 3.9
pytorch 1.11.0
dlib 19.22.0
opencv2 4.5.5
Use Anaconda and the following command to replicate the full environment:
conda env create -f environment.yml
This code automatically downloads the following datasets for trianing, cross validation and testing: FairFace, UTKFace and CelebA. Request demographics labels of the Imagenet person subtree through the offical database, save the annotation file under /csv and images under /Images/Imagenet.
UTKFace experiments:
python main_test.py --sensitive_group 'gender' --loss_type 'race' --prune_type 'FairGRAPE' --network 'resnet34' --dataset 'UTKFace' --prune_rate 0.9 --keep_per_iter 0.975
FairFace experiments
python main_test.py --sensitive_group race--loss_type 'race' --prune_type 'FairGRAPE' --network 'resnet34' --dataset 'FairFace' --prune_rate 0.99
CelebA experiments
python main_test.py --sensitive_group 'gender' --loss_type 'classes' --prune_type 'FairGRAPE' --network 'mobilenetv2' --dataset 'CelebA' --prune_rate 0.9
Imagenet experiments:
python main_test.py --sensitive_group 'gender' --loss_type 'classes' --prune_type 'FairGRAPE' --network 'resnet34' --dataset 'Imagenet' --prune_rate 0.5
Download trained models here.
Loading a trained model:
python main_test.py --sensitive_group 'gender' --loss_type 'race' --prune_type 'FairGRAPE' --network 'mobilenetv2'--dataset 'UTKFace' --prune_rate 0.9 --keep_per_iter 0.975 --checkpoint "UTKFace_FairGRAPE_race_bygender_resnet34_0.9_0.pt" --init_train 0 --retrain 0 --print_acc 1