* Equal Contribution
Aging is not a single path but a multiverse of possibilities shaped by our choices and environments. Aging Multiverse brings this idea to life by generating branching visualizations—"aging trees"—that show how you might age under different lifestyle conditions.
For more visual results, go checkout our project page
- [2025.10] Code release.
- [2025.08] Paper accepted to SIGGRAPH Asia 2025.
-
Clone Repo
git clone git@github.com:gongbang02/agingmultiverse.git cd agingmultiverse -
Create Conda Environment
conda env create -f environment.yml
We preprocess input images for stable performance:
-
Image Enhancement
We follow GFPGAN to enhance face quality. -
Face alignment
We usedlibto align faces, you can use script here for multi-processing.
To pre-compute the attention feature aging direction for our proposed Simulated Aging Regularization, put the young and old image clusters of target identity under a directory structured as follows:
{path_to_image_clusters}
├── {age}_{idx}.ext
To extract the per-image attention features for aging direction calculation, run:
python src/attention_inversion.py \
--source_img_dir {path_to_image_clusters} \
--gender {gender_of_target_identity} \
--ethnicity {ethnicity_of_target_identity} \
--age_filter_young {young_lower_bound} {young_upper_bound} \
--age_filter_old {old_lower_bound} {old_upper_bound} \
--save_feature \
--feature_path {path_to_store_attention_features}Next, calculate the young average features and old average features and obtain the attention feature aging direction:
python src/attention_direction.py \
--base_path {feature_path_from_last_step} \
--output_dir_averages {path_to_store_group_average_features} \
--output_dir_direction {path_to_store_aging_direction}We provide a general aging direction calculated from various identities at https://agingmultiverse.cs.unc.edu/download/ for quickly trying out our method. However, for better stability, we still recommend computing per-identity aging direction.
After obtaining the aging direction, run image editing with:
python src/edit.py \
--source_prompt "A photo of {ethnicity} {gender} at {input_age} years old." \
--target_prompt {llm_refined_target_prompt} \
--target_age {target_age} \
--input_age {input_age} \
--guidance 2 \
--source_img_dir {path_to_input_images} \
--num_steps 15 \
--inject 3 \
--name 'flux-dev' \
--offload \
--output_dir {path_to_edited_images} \
--direction_path {path_to_aging_direction}Prompt enhancement is not built-in in our code, we recommend users take our meta prompt in meta_prompt.txt for prompt enhancement with any LLM of their choice.
We thank FLUX and RF-Solver-Edit for their clean codebase.
If you find our repo useful for your research, please consider citing our paper:
@misc{gong2025agingmultiversegeneratingconditionaware,
title={The Aging Multiverse: Generating Condition-Aware Facial Aging Tree via Training-Free Diffusion},
author={Bang Gong and Luchao Qi and Jiaye Wu and Zhicheng Fu and Chunbo Song and David W. Jacobs and John Nicholson and Roni Sengupta},
year={2025},
eprint={2506.21008},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2506.21008},
}This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.


