{"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/styleflow-attribute-conditioned-exploration","title":"StyleFlow: Attribute-conditioned Exploration of StyleGAN-Generated Images using Conditional Continuous Normalizing Flows","arxiv_id":"2008.02401","date":"2020-08-06","proceeding":null,"authors":["Rameen Abdal","Peihao Zhu","Niloy Mitra","Peter Wonka"],"abstract":"High-quality, diverse, and photorealistic images can now be generated by unconditional GANs (e.g., StyleGAN). However, limited options exist to control the generation process using (semantic) attributes, while still preserving the quality of the output. Further, due to the entangled nature of the GAN latent space, performing edits along one attribute can easily result in unwanted changes along other attributes. In this paper, in the context of conditional exploration of entangled latent spaces, we investigate the two sub-problems of attribute-conditioned sampling and attribute-controlled editing. We present StyleFlow as a simple, effective, and robust solution to both the sub-problems by formulating conditional exploration as an instance of conditional continuous normalizing flows in the GAN latent space conditioned by attribute features. We evaluate our method using the face and the car latent space of StyleGAN, and demonstrate fine-grained disentangled edits along various attributes on both real photographs and StyleGAN generated images. For example, for faces, we vary camera pose, illumination variation, expression, facial hair, gender, and age. Finally, via extensive qualitative and quantitative comparisons, we demonstrate the superiority of StyleFlow to other concurrent works.","url_abs":"https://arxiv.org/abs/2008.02401v2","url_pdf":"https://arxiv.org/pdf/2008.02401v2.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":"styleflow-attribute-conditioned-exploration","repo_url":"https://github.com/rameenabdal/styleflow","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"styleflow-attribute-conditioned-exploration","repo_url":"https://github.com/justinjohn0306/StyleFlow","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"styleflow-attribute-conditioned-exploration","repo_url":"https://github.com/xuduo35/StyleFlowPytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"attribute","task_name":"Attribute"}],"methods":[{"method_slug":"adaptive-instance-normalization","method_name":"Adaptive Instance Normalization"},{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"feedforward-network","method_name":"Feedforward Network"},{"method_slug":"normalizing-flows","method_name":"Normalizing Flows"},{"method_slug":"r1-regularization","method_name":"R1 Regularization"},{"method_slug":"stylegan","method_name":"StyleGAN"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2008.02401","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2008.02401"}},"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/xuduo35/StyleFlowPytorch","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/rameenabdal/styleflow","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/justinjohn0306/StyleFlow","reach":{"status":"ok"}}],"summary":{"ran_honours":1,"ran_fixture":1,"unverified":12},"by_repo_kind":{"listed":{"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":"f6b944f50d3f15ae","entry":"count_parameters","repo":"xuduo35/StyleFlowPytorch","repo_kind":"listed","path":"module/flow.py","file_url":"https://github.com/xuduo35/StyleFlowPytorch/blob/HEAD/module/flow.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f6b944f50d3f15ae"}},{"code_sha256_prefix":"27ca363b776a43f8","entry":"stable_var","repo":"xuduo35/StyleFlowPytorch","repo_kind":"listed","path":"module/normalization.py","file_url":"https://github.com/xuduo35/StyleFlowPytorch/blob/HEAD/module/normalization.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":"27ca363b776a43f8"}},{"code_sha256_prefix":"eb49d8acd5d18521","entry":"D_logistic","repo":"xuduo35/StyleFlowPytorch","repo_kind":"listed","path":"stylegan2/loss_fns.py","file_url":"https://github.com/xuduo35/StyleFlowPytorch/blob/HEAD/stylegan2/loss_fns.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":"eb49d8acd5d18521"}},{"code_sha256_prefix":"d660eee0510ffc84","entry":"G_logistic","repo":"xuduo35/StyleFlowPytorch","repo_kind":"listed","path":"stylegan2/loss_fns.py","file_url":"https://github.com/xuduo35/StyleFlowPytorch/blob/HEAD/stylegan2/loss_fns.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":"d660eee0510ffc84"}},{"code_sha256_prefix":"e50ad75aca391fdc","entry":"G_logistic_ns","repo":"xuduo35/StyleFlowPytorch","repo_kind":"listed","path":"stylegan2/loss_fns.py","file_url":"https://github.com/xuduo35/StyleFlowPytorch/blob/HEAD/stylegan2/loss_fns.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":"e50ad75aca391fdc"}},{"code_sha256_prefix":"19c5e2db00d325b8","entry":"bernoulli_log_likelihood","repo":"xuduo35/StyleFlowPytorch","repo_kind":"listed","path":"module/utils.py","file_url":"https://github.com/xuduo35/StyleFlowPytorch/blob/HEAD/module/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":"19c5e2db00d325b8"}},{"code_sha256_prefix":"6e88b4b7a2d8cc87","entry":"count_nfe","repo":"xuduo35/StyleFlowPytorch","repo_kind":"listed","path":"module/flow.py","file_url":"https://github.com/xuduo35/StyleFlowPytorch/blob/HEAD/module/flow.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":"6e88b4b7a2d8cc87"}},{"code_sha256_prefix":"ce228183dec2a0fc","entry":"count_total_time","repo":"xuduo35/StyleFlowPytorch","repo_kind":"listed","path":"module/flow.py","file_url":"https://github.com/xuduo35/StyleFlowPytorch/blob/HEAD/module/flow.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":"ce228183dec2a0fc"}},{"code_sha256_prefix":"58625622277c98f5","entry":"divergence_approx","repo":"xuduo35/StyleFlowPytorch","repo_kind":"listed","path":"module/odefunc.py","file_url":"https://github.com/xuduo35/StyleFlowPytorch/blob/HEAD/module/odefunc.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":"58625622277c98f5"}},{"code_sha256_prefix":"6306abd15a0062d5","entry":"gaussian_log_likelihood","repo":"xuduo35/StyleFlowPytorch","repo_kind":"listed","path":"module/utils.py","file_url":"https://github.com/xuduo35/StyleFlowPytorch/blob/HEAD/module/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":"6306abd15a0062d5"}},{"code_sha256_prefix":"1cb9925ee5079d88","entry":"get_activation","repo":"xuduo35/StyleFlowPytorch","repo_kind":"listed","path":"stylegan2/modules.py","file_url":"https://github.com/xuduo35/StyleFlowPytorch/blob/HEAD/stylegan2/modules.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":"1cb9925ee5079d88"}},{"code_sha256_prefix":"c68ee58b2a736123","entry":"image_align","repo":"xuduo35/StyleFlowPytorch","repo_kind":"listed","path":"ffhq_dataset/face_alignment.py","file_url":"https://github.com/xuduo35/StyleFlowPytorch/blob/HEAD/ffhq_dataset/face_alignment.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":"c68ee58b2a736123"}},{"code_sha256_prefix":"ad16d0961b8183d2","entry":"kl_diagnormal_stdnormal","repo":"xuduo35/StyleFlowPytorch","repo_kind":"listed","path":"module/utils.py","file_url":"https://github.com/xuduo35/StyleFlowPytorch/blob/HEAD/module/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":"ad16d0961b8183d2"}},{"code_sha256_prefix":"24150bba4666d3f0","entry":"load","repo":"xuduo35/StyleFlowPytorch","repo_kind":"listed","path":"stylegan2/models.py","file_url":"https://github.com/xuduo35/StyleFlowPytorch/blob/HEAD/stylegan2/models.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":"24150bba4666d3f0"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}