{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/selfage-personalized-facial-age","title":"SelfAge: Personalized Facial Age Transformation Using Self-reference Images","arxiv_id":"2502.13987","date":"2025-02-19","proceeding":null,"authors":["Taishi Ito","Yuki Endo","Yoshihiro Kanamori"],"abstract":"Age transformation of facial images is a technique that edits age-related person's appearances while preserving the identity. Existing deep learning-based methods can reproduce natural age transformations; however, they only reproduce averaged transitions and fail to account for individual-specific appearances influenced by their life histories. In this paper, we propose the first diffusion model-based method for personalized age transformation. Our diffusion model takes a facial image and a target age as input and generates an age-edited face image as output. To reflect individual-specific features, we incorporate additional supervision using self-reference images, which are facial images of the same person at different ages. Specifically, we fine-tune a pretrained diffusion model for personalized adaptation using approximately 3 to 5 self-reference images. Additionally, we design an effective prompt to enhance the performance of age editing and identity preservation. Experiments demonstrate that our method achieves superior performance both quantitatively and qualitatively compared to existing methods. The code and the pretrained model are available at https://github.com/shiiiijp/SelfAge.","url_abs":"https://arxiv.org/abs/2502.13987v1","url_pdf":"https://arxiv.org/pdf/2502.13987v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"links_only","authors_date_abstract":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license), from the Kaggle arXiv metadata snapshot of 2026-09-12"},"code_links":[{"paper_slug":"selfage-personalized-facial-age","repo_url":"https://github.com/shiiiijp/selfage","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2502.13987","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2502.13987"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/shiiiijp/selfage","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":1,"ran_fixture":1,"unverified":12},"by_repo_kind":{"official":{"samples":14,"ran":2,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"6f527bbe13c81b60","entry":"is_image_file","repo":"shiiiijp/selfage","repo_kind":"official","path":"utils/data_utils.py","file_url":"https://github.com/shiiiijp/selfage/blob/HEAD/utils/data_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6f527bbe13c81b60"}},{"code_sha256_prefix":"4fdffb935fa35cee","entry":"tensor2im","repo":"shiiiijp/selfage","repo_kind":"official","path":"utils/data_utils.py","file_url":"https://github.com/shiiiijp/selfage/blob/HEAD/utils/data_utils.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4fdffb935fa35cee"}},{"code_sha256_prefix":"079bdec73762bf68","entry":"aggregate_loss_dict","repo":"shiiiijp/selfage","repo_kind":"official","path":"utils/train_utils.py","file_url":"https://github.com/shiiiijp/selfage/blob/HEAD/utils/train_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"079bdec73762bf68"}},{"code_sha256_prefix":"53d83d2e662fc99f","entry":"compute_cosine_weights","repo":"shiiiijp/selfage","repo_kind":"official","path":"utils/train_utils.py","file_url":"https://github.com/shiiiijp/selfage/blob/HEAD/utils/train_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"53d83d2e662fc99f"}},{"code_sha256_prefix":"41e1e81aeccc9e2b","entry":"decode_latent","repo":"shiiiijp/selfage","repo_kind":"official","path":"utils/ptp_utils.py","file_url":"https://github.com/shiiiijp/selfage/blob/HEAD/utils/ptp_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"41e1e81aeccc9e2b"}},{"code_sha256_prefix":"4c0577ffedba4590","entry":"diffusion_step","repo":"shiiiijp/selfage","repo_kind":"official","path":"utils/ptp_utils.py","file_url":"https://github.com/shiiiijp/selfage/blob/HEAD/utils/ptp_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4c0577ffedba4590"}},{"code_sha256_prefix":"81db21bf982ca0fe","entry":"get_matrix","repo":"shiiiijp/selfage","repo_kind":"official","path":"utils/seq_aligner.py","file_url":"https://github.com/shiiiijp/selfage/blob/HEAD/utils/seq_aligner.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"81db21bf982ca0fe"}},{"code_sha256_prefix":"ee06197fd17367c6","entry":"get_person_placeholder","repo":"shiiiijp/selfage","repo_kind":"official","path":"utils/inference_utils.py","file_url":"https://github.com/shiiiijp/selfage/blob/HEAD/utils/inference_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ee06197fd17367c6"}},{"code_sha256_prefix":"beb8f6a30678a4d9","entry":"get_traceback_matrix","repo":"shiiiijp/selfage","repo_kind":"official","path":"utils/seq_aligner.py","file_url":"https://github.com/shiiiijp/selfage/blob/HEAD/utils/seq_aligner.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"beb8f6a30678a4d9"}},{"code_sha256_prefix":"f019b0bdea83a11a","entry":"global_align","repo":"shiiiijp/selfage","repo_kind":"official","path":"utils/seq_aligner.py","file_url":"https://github.com/shiiiijp/selfage/blob/HEAD/utils/seq_aligner.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f019b0bdea83a11a"}},{"code_sha256_prefix":"c8e9d4867660e84d","entry":"load_512","repo":"shiiiijp/selfage","repo_kind":"official","path":"utils/null_inversion.py","file_url":"https://github.com/shiiiijp/selfage/blob/HEAD/utils/null_inversion.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c8e9d4867660e84d"}},{"code_sha256_prefix":"740986f1c828af51","entry":"make_dataset","repo":"shiiiijp/selfage","repo_kind":"official","path":"utils/data_utils.py","file_url":"https://github.com/shiiiijp/selfage/blob/HEAD/utils/data_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"740986f1c828af51"}},{"code_sha256_prefix":"8ee6b99a7c5c84b6","entry":"tensor_to_pil","repo":"shiiiijp/selfage","repo_kind":"official","path":"utils/null_inversion.py","file_url":"https://github.com/shiiiijp/selfage/blob/HEAD/utils/null_inversion.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8ee6b99a7c5c84b6"}},{"code_sha256_prefix":"e9799758d9c2927a","entry":"view_images","repo":"shiiiijp/selfage","repo_kind":"official","path":"utils/ptp_utils.py","file_url":"https://github.com/shiiiijp/selfage/blob/HEAD/utils/ptp_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e9799758d9c2927a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}