{"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/controllable-text-to-image-generation","title":"Controllable Text-to-Image Generation","arxiv_id":"1909.07083","date":"2019-09-16","proceeding":"NeurIPS 2019 12","authors":["Bowen Li","Xiaojuan Qi","Thomas Lukasiewicz","Philip H. S. Torr"],"abstract":"In this paper, we propose a novel controllable text-to-image generative adversarial network (ControlGAN), which can effectively synthesise high-quality images and also control parts of the image generation according to natural language descriptions. To achieve this, we introduce a word-level spatial and channel-wise attention-driven generator that can disentangle different visual attributes, and allow the model to focus on generating and manipulating subregions corresponding to the most relevant words. Also, a word-level discriminator is proposed to provide fine-grained supervisory feedback by correlating words with image regions, facilitating training an effective generator which is able to manipulate specific visual attributes without affecting the generation of other content. Furthermore, perceptual loss is adopted to reduce the randomness involved in the image generation, and to encourage the generator to manipulate specific attributes required in the modified text. Extensive experiments on benchmark datasets demonstrate that our method outperforms existing state of the art, and is able to effectively manipulate synthetic images using natural language descriptions. Code is available at https://github.com/mrlibw/ControlGAN.","url_abs":"https://arxiv.org/abs/1909.07083v2","url_pdf":"https://arxiv.org/pdf/1909.07083v2.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":"controllable-text-to-image-generation","repo_url":"https://github.com/mrlibw/ControlGAN","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"controllable-text-to-image-generation","repo_url":"https://github.com/taki0112/ControlGAN-Tensorflow","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":null,"task_name":"Generative Adversarial Network"},{"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":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/text-to-image-generation-on-cub","task":"Text-to-Image Generation","dataset":"CUB","model":"Attention-driven Generator (perceptual loss)","rank_in_archive_order":17,"of":20,"metrics":{"Inception score":"4.58"},"uses_additional_data":false},{"leaderboard":"/sota/text-to-image-generation-on-multi-modal","task":"Text-to-Image Generation","dataset":"Multi-Modal-CelebA-HQ","model":"ControlGAN","rank_in_archive_order":7,"of":10,"metrics":{"Acc":"14.6","FID":"116.32","LPIPS":"0.522","Real":"13.1"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1909.07083","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1909.07083"}},"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/mrlibw/ControlGAN","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/taki0112/ControlGAN-Tensorflow","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":10},"by_repo_kind":{"listed":{"samples":10,"ran":0,"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":"71a7228a4a0450ec","entry":"L2_loss","repo":"taki0112/ControlGAN-Tensorflow","repo_kind":"listed","path":"legacy_code/perceptual_class.py","file_url":"https://github.com/taki0112/ControlGAN-Tensorflow/blob/HEAD/legacy_code/perceptual_class.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":"71a7228a4a0450ec"}},{"code_sha256_prefix":"6b120cf9b5aa7582","entry":"Leaky_Relu","repo":"taki0112/ControlGAN-Tensorflow","repo_kind":"listed","path":"ops.py","file_url":"https://github.com/taki0112/ControlGAN-Tensorflow/blob/HEAD/ops.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":"6b120cf9b5aa7582"}},{"code_sha256_prefix":"865bf88a67a374a7","entry":"Relu","repo":"taki0112/ControlGAN-Tensorflow","repo_kind":"listed","path":"ops.py","file_url":"https://github.com/taki0112/ControlGAN-Tensorflow/blob/HEAD/ops.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":"865bf88a67a374a7"}},{"code_sha256_prefix":"2635ec7408c505b8","entry":"Tanh","repo":"taki0112/ControlGAN-Tensorflow","repo_kind":"listed","path":"ops.py","file_url":"https://github.com/taki0112/ControlGAN-Tensorflow/blob/HEAD/ops.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":"2635ec7408c505b8"}},{"code_sha256_prefix":"a991a23f7dd903f5","entry":"adjust_dynamic_range","repo":"taki0112/ControlGAN-Tensorflow","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/taki0112/ControlGAN-Tensorflow/blob/HEAD/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":"a991a23f7dd903f5"}},{"code_sha256_prefix":"91310f5fb45d94c4","entry":"conv","repo":"taki0112/ControlGAN-Tensorflow","repo_kind":"listed","path":"legacy_code/ops.py","file_url":"https://github.com/taki0112/ControlGAN-Tensorflow/blob/HEAD/legacy_code/ops.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":"91310f5fb45d94c4"}},{"code_sha256_prefix":"d29bc3068b3eae3f","entry":"flatten","repo":"taki0112/ControlGAN-Tensorflow","repo_kind":"listed","path":"legacy_code/ops.py","file_url":"https://github.com/taki0112/ControlGAN-Tensorflow/blob/HEAD/legacy_code/ops.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":"d29bc3068b3eae3f"}},{"code_sha256_prefix":"68cf33f32693ba2e","entry":"fully_connected","repo":"taki0112/ControlGAN-Tensorflow","repo_kind":"listed","path":"legacy_code/ops.py","file_url":"https://github.com/taki0112/ControlGAN-Tensorflow/blob/HEAD/legacy_code/ops.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":"68cf33f32693ba2e"}},{"code_sha256_prefix":"562021bdb7164a5d","entry":"load_test_image","repo":"taki0112/ControlGAN-Tensorflow","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/taki0112/ControlGAN-Tensorflow/blob/HEAD/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":"562021bdb7164a5d"}},{"code_sha256_prefix":"98df0e20c34bd849","entry":"preprocess_fit_train_image","repo":"taki0112/ControlGAN-Tensorflow","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/taki0112/ControlGAN-Tensorflow/blob/HEAD/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":"98df0e20c34bd849"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}