This code is our implementation of the following paper:
Taishi Ito, Yuki Endo, Yoshihiro Kanamori: "Age-Dependent Face Diversification via Latent Space Analysis" The Visual Computer (Proc. of Computer Graphics Internatinal 2023), 2023. [Project Page][PDF (11MB)]
Facial age transformation methods can change facial appearance according to the target age. However, most existing methods do not consider that people get older with different attribute changes (e.g., wrinkles, hair volume, and face shape) depending on their circumstances and environment. Diversifying such age-dependent attributes while preserving a person’s identity is crucial to broaden the applications of age transformation. In addition, the accuracy of age transformation to childhood is limited due to dataset bias. To solve these problems, we propose an age transformation method based on latent space analysis of StyleGAN. Our method obtains diverse age-transformed images by randomly manipulating age-dependent attributes in a latent space. To do so, we analyze the latent space and perturb channels affecting age-dependent attributes. We then optimize the perturbed latent code to refine the age and identity of the output image. We also present an unsupervised approach for improving age transformation to childhood. Our approach is based on the assumption that existing methods cannot sufficiently move a latent code toward a desired direction. We extrapolate an estimated latent path and iteratively update the latent code along the extrapolated path until the output image reaches the target age. Quantitative and qualitative comparisons with existing methods show that our method improves output diversity and preserves the target age and identity. We also show that our method can more accurately perform age transformation to childhood.
Run the following code to install all conda packages.
conda env create -f environment/ADFD_env.yml
-
Download following pretrained models from each repository and save to the directory
pretrained_models
.Repository Model(s) to download SAM SAM: Pretrained SAM for age transformation.
VGG Age Classifier: VGG age classifier from DEX for use in our aging loss. Fine-tuned by yuval-alaluf on the FFHQ-Aging dataset.InsightFace_Pytorch IR-SE50: Pretrained IR-SE50 model for use in our ID loss. -
Run
scripts/inference_ADFD.py
for Age-Dependent Face Diversification, orscripts/inference_guided_optimization.py
for Guided Optimization.Age-Dependent Face Diversification:
python scripts/inference_ADFD.py \ --exp_dir=/path/to/experiment \ --checkpoint_path=/path/to/pretrained_model \ --data_path=/path/to/test_data \ --test_batch_size=4 \ --test_workers=4 \ --aging_lambda=5 \ --id_lambda=0.1 \ --l2_lambda=0.01 \ --lpips_lambda=0.01 \ --use_weighted_id_loss \ --couple_outputs \ --target_age=80
Guided Optimization:
python scripts/inference_guided_optimization.py \ --exp_dir=/path/to/experiment \ --checkpoint_path=/path/to/pretrained_model \ --data_path=/path/to/test_data \ --test_batch_size=4 \ --test_workers=4 \ --target_age=5
Please cite our paper if you find the code useful:
@article{ItoCGI23,
author = {Taishi Ito and Yuki Endo and Yoshihiro Kanamori},
title = {Age-Dependent Face Diversification via Latent Space Analysis},
journal = {The Visual Computer (Proc. of Computer Graphics Internatinal 2023)},
volume = {39},
number = {8},
pages = {3221--3233},
year = {2023},
publisher = {Springer}
}
This code heavily borrows from the SAM repository.