{"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/stable-makeup-when-real-world-makeup-transfer","title":"Stable-Makeup: When Real-World Makeup Transfer Meets Diffusion Model","arxiv_id":"2403.07764","date":"2024-03-12","proceeding":null,"authors":["Yuxuan Zhang","Yirui Yuan","Yiren Song","Jiaming Liu"],"abstract":"Current makeup transfer methods are limited to simple makeup styles, making them difficult to apply in real-world scenarios. In this paper, we introduce Stable-Makeup, a novel diffusion-based makeup transfer method capable of robustly transferring a wide range of real-world makeup, onto user-provided faces. Stable-Makeup is based on a pre-trained diffusion model and utilizes a Detail-Preserving (D-P) makeup encoder to encode makeup details. It also employs content and structural control modules to preserve the content and structural information of the source image. With the aid of our newly added makeup cross-attention layers in U-Net, we can accurately transfer the detailed makeup to the corresponding position in the source image. After content-structure decoupling training, Stable-Makeup can maintain content and the facial structure of the source image. Moreover, our method has demonstrated strong robustness and generalizability, making it applicable to varioustasks such as cross-domain makeup transfer, makeup-guided text-to-image generation and so on. Extensive experiments have demonstrated that our approach delivers state-of-the-art (SOTA) results among existing makeup transfer methods and exhibits a highly promising with broad potential applications in various related fields. Code released: https://github.com/Xiaojiu-z/Stable-Makeup","url_abs":"https://arxiv.org/abs/2403.07764v2","url_pdf":"https://arxiv.org/pdf/2403.07764v2.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":"abstracts"},"code_links":[{"paper_slug":"stable-makeup-when-real-world-makeup-transfer","repo_url":"https://github.com/Xiaojiu-z/Stable-Makeup","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"image-generation","task_name":"Image Generation"},{"task_slug":"text-to-image-generation-1","task_name":"Text to Image Generation"},{"task_slug":"text-to-image-generation","task_name":"Text-to-Image Generation"}],"methods":[{"method_slug":"concatenated-skip-connection","method_name":"Concatenated Skip Connection"},{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"diffusion","method_name":"Diffusion"},{"method_slug":"max-pooling","method_name":"Max Pooling"},{"method_slug":"relu","method_name":"ReLU"},{"method_slug":"u-net","method_name":"U-Net"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2403.07764","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2403.07764"}},"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/Xiaojiu-z/Stable-Makeup","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":2,"ran_violates":1,"unverified":6},"by_repo_kind":{"official":{"samples":9,"ran":3,"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":"149188d4856b3bdc","entry":"compute_noise","repo":"Xiaojiu-z/Stable-Makeup","repo_kind":"official","path":"diffusers/pipelines/stable_diffusion/pipeline_cycle_diffusion.py","file_url":"https://github.com/Xiaojiu-z/Stable-Makeup/blob/HEAD/diffusers/pipelines/stable_diffusion/pipeline_cycle_diffusion.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"149188d4856b3bdc"}},{"code_sha256_prefix":"291c31214008a679","entry":"preprocess_mask","repo":"Xiaojiu-z/Stable-Makeup","repo_kind":"official","path":"diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion_inpaint.py","file_url":"https://github.com/Xiaojiu-z/Stable-Makeup/blob/HEAD/diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion_inpaint.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"291c31214008a679"}},{"code_sha256_prefix":"e75e95456d9039f5","entry":"unshard","repo":"Xiaojiu-z/Stable-Makeup","repo_kind":"official","path":"diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion.py","file_url":"https://github.com/Xiaojiu-z/Stable-Makeup/blob/HEAD/diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e75e95456d9039f5"}},{"code_sha256_prefix":"d3de8e0f9e293d59","entry":"posterior_sample","repo":"Xiaojiu-z/Stable-Makeup","repo_kind":"official","path":"diffusers/pipelines/stable_diffusion/pipeline_cycle_diffusion.py","file_url":"https://github.com/Xiaojiu-z/Stable-Makeup/blob/HEAD/diffusers/pipelines/stable_diffusion/pipeline_cycle_diffusion.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d3de8e0f9e293d59"}},{"code_sha256_prefix":"107a1125408a883b","entry":"preprocess","repo":"Xiaojiu-z/Stable-Makeup","repo_kind":"official","path":"diffusers/pipelines/stable_diffusion/pipeline_cycle_diffusion.py","file_url":"https://github.com/Xiaojiu-z/Stable-Makeup/blob/HEAD/diffusers/pipelines/stable_diffusion/pipeline_cycle_diffusion.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"107a1125408a883b"}},{"code_sha256_prefix":"90abefb63ec10393","entry":"preprocess_image","repo":"Xiaojiu-z/Stable-Makeup","repo_kind":"official","path":"diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion_inpaint.py","file_url":"https://github.com/Xiaojiu-z/Stable-Makeup/blob/HEAD/diffusers/pipelines/stable_diffusion/pipeline_flax_stable_diffusion_inpaint.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"90abefb63ec10393"}},{"code_sha256_prefix":"dfb052a0af48540f","entry":"renew_resnet_paths","repo":"Xiaojiu-z/Stable-Makeup","repo_kind":"official","path":"diffusers/pipelines/stable_diffusion/convert_from_ckpt.py","file_url":"https://github.com/Xiaojiu-z/Stable-Makeup/blob/HEAD/diffusers/pipelines/stable_diffusion/convert_from_ckpt.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"dfb052a0af48540f"}},{"code_sha256_prefix":"c5ec9c13e456a046","entry":"renew_vae_resnet_paths","repo":"Xiaojiu-z/Stable-Makeup","repo_kind":"official","path":"diffusers/pipelines/stable_diffusion/convert_from_ckpt.py","file_url":"https://github.com/Xiaojiu-z/Stable-Makeup/blob/HEAD/diffusers/pipelines/stable_diffusion/convert_from_ckpt.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c5ec9c13e456a046"}},{"code_sha256_prefix":"cea0bc82e0c96896","entry":"shave_segments","repo":"Xiaojiu-z/Stable-Makeup","repo_kind":"official","path":"diffusers/pipelines/stable_diffusion/convert_from_ckpt.py","file_url":"https://github.com/Xiaojiu-z/Stable-Makeup/blob/HEAD/diffusers/pipelines/stable_diffusion/convert_from_ckpt.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cea0bc82e0c96896"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}