{"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/michigan-multi-input-conditioned-hair-image","title":"MichiGAN: Multi-Input-Conditioned Hair Image Generation for Portrait Editing","arxiv_id":"2010.16417","date":"2020-10-30","proceeding":null,"authors":["Zhentao Tan","Menglei Chai","Dongdong Chen","Jing Liao","Qi Chu","Lu Yuan","Sergey Tulyakov","Nenghai Yu"],"abstract":"Despite the recent success of face image generation with GANs, conditional hair editing remains challenging due to the under-explored complexity of its geometry and appearance. In this paper, we present MichiGAN (Multi-Input-Conditioned Hair Image GAN), a novel conditional image generation method for interactive portrait hair manipulation. To provide user control over every major hair visual factor, we explicitly disentangle hair into four orthogonal attributes, including shape, structure, appearance, and background. For each of them, we design a corresponding condition module to represent, process, and convert user inputs, and modulate the image generation pipeline in ways that respect the natures of different visual attributes. All these condition modules are integrated with the backbone generator to form the final end-to-end network, which allows fully-conditioned hair generation from multiple user inputs. Upon it, we also build an interactive portrait hair editing system that enables straightforward manipulation of hair by projecting intuitive and high-level user inputs such as painted masks, guiding strokes, or reference photos to well-defined condition representations. Through extensive experiments and evaluations, we demonstrate the superiority of our method regarding both result quality and user controllability. The code is available at https://github.com/tzt101/MichiGAN.","url_abs":"https://arxiv.org/abs/2010.16417v1","url_pdf":"https://arxiv.org/pdf/2010.16417v1.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":"michigan-multi-input-conditioned-hair-image","repo_url":"https://github.com/tzt101/MichiGAN","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"conditional-image-generation","task_name":"Conditional Image Generation"},{"task_slug":"image-generation","task_name":"Image Generation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2010.16417","atlas_url":"https://app.syntology.ai/?focus=2010.16417","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2010.16417"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/tzt101/MichiGAN","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_fixture":1,"ran_draft_wrong":2,"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":"38eaf8511dc7bc9c","entry":"calc_mean_std","repo":"tzt101/MichiGAN","repo_kind":"official","path":"models/networks/loss.py","file_url":"https://github.com/tzt101/MichiGAN/blob/HEAD/models/networks/loss.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"38eaf8511dc7bc9c"}},{"code_sha256_prefix":"bf378f5e74f9c237","entry":"conv3x3_bn_relu","repo":"tzt101/MichiGAN","repo_kind":"official","path":"models/networks/generator.py","file_url":"https://github.com/tzt101/MichiGAN/blob/HEAD/models/networks/generator.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bf378f5e74f9c237"}},{"code_sha256_prefix":"bedff51745d2cf84","entry":"l2normalize","repo":"tzt101/MichiGAN","repo_kind":"official","path":"models/networks/MaskGAN_networks.py","file_url":"https://github.com/tzt101/MichiGAN/blob/HEAD/models/networks/MaskGAN_networks.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bedff51745d2cf84"}},{"code_sha256_prefix":"9f17bc0437c099f5","entry":"DoG_fn","repo":"tzt101/MichiGAN","repo_kind":"official","path":"cal_orientation.py","file_url":"https://github.com/tzt101/MichiGAN/blob/HEAD/cal_orientation.py","link_basis":"first_harvest_node","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":"9f17bc0437c099f5"}},{"code_sha256_prefix":"84d95eaded86227b","entry":"DoG_fn","repo":"tzt101/MichiGAN","repo_kind":"official","path":"models/networks/loss.py","file_url":"https://github.com/tzt101/MichiGAN/blob/HEAD/models/networks/loss.py","link_basis":"first_harvest_node","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":"84d95eaded86227b"}},{"code_sha256_prefix":"a3db41dad9292ecb","entry":"concat","repo":"tzt101/MichiGAN","repo_kind":"official","path":"models/networks/generator.py","file_url":"https://github.com/tzt101/MichiGAN/blob/HEAD/models/networks/generator.py","link_basis":"first_harvest_node","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":"a3db41dad9292ecb"}},{"code_sha256_prefix":"1169cbb28040396e","entry":"gabor_fn","repo":"tzt101/MichiGAN","repo_kind":"official","path":"models/networks/loss.py","file_url":"https://github.com/tzt101/MichiGAN/blob/HEAD/models/networks/loss.py","link_basis":"first_harvest_node","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":"1169cbb28040396e"}},{"code_sha256_prefix":"51c82e965a8a4f1b","entry":"upsample","repo":"tzt101/MichiGAN","repo_kind":"official","path":"models/networks/generator.py","file_url":"https://github.com/tzt101/MichiGAN/blob/HEAD/models/networks/generator.py","link_basis":"first_harvest_node","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":"51c82e965a8a4f1b"}},{"code_sha256_prefix":"c94542e9e790ad7b","entry":"weight_norm","repo":"tzt101/MichiGAN","repo_kind":"official","path":"models/networks/normalization.py","file_url":"https://github.com/tzt101/MichiGAN/blob/HEAD/models/networks/normalization.py","link_basis":"first_harvest_node","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":"c94542e9e790ad7b"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}