{"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/svgcraft-beyond-single-object-text-to-svg","title":"SVGCraft: Beyond Single Object Text-to-SVG Synthesis with Comprehensive Canvas Layout","arxiv_id":"2404.00412","date":"2024-03-30","proceeding":null,"authors":["Ayan Banerjee","Nityanand Mathur","Josep Lladós","Umapada Pal","Anjan Dutta"],"abstract":"Generating VectorArt from text prompts is a challenging vision task, requiring diverse yet realistic depictions of the seen as well as unseen entities. However, existing research has been mostly limited to the generation of single objects, rather than comprehensive scenes comprising multiple elements. In response, this work introduces SVGCraft, a novel end-to-end framework for the creation of vector graphics depicting entire scenes from textual descriptions. Utilizing a pre-trained LLM for layout generation from text prompts, this framework introduces a technique for producing masked latents in specified bounding boxes for accurate object placement. It introduces a fusion mechanism for integrating attention maps and employs a diffusion U-Net for coherent composition, speeding up the drawing process. The resulting SVG is optimized using a pre-trained encoder and LPIPS loss with opacity modulation to maximize similarity. Additionally, this work explores the potential of primitive shapes in facilitating canvas completion in constrained environments. Through both qualitative and quantitative assessments, SVGCraft is demonstrated to surpass prior works in abstraction, recognizability, and detail, as evidenced by its performance metrics (CLIP-T: 0.4563, Cosine Similarity: 0.6342, Confusion: 0.66, Aesthetic: 6.7832). The code will be available at https://github.com/ayanban011/SVGCraft.","url_abs":"https://arxiv.org/abs/2404.00412v1","url_pdf":"https://arxiv.org/pdf/2404.00412v1.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":"svgcraft-beyond-single-object-text-to-svg","repo_url":"https://github.com/ayanban011/svgcraft","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"layout-generation","task_name":"Layout Generation"},{"task_slug":"vector-graphics","task_name":"Vector Graphics"}],"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=2404.00412","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2404.00412"}},"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/ayanban011/svgcraft","reach":{"status":"ok"}}],"summary":{"ran":6,"unverified":2},"by_repo_kind":{"official":{"samples":8,"ran":6,"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":8,"samples":[{"code_sha256_prefix":"3f195c728018813a","entry":"decode","repo":"ayanban011/svgcraft","repo_kind":"official","path":"models/pipelines.py","file_url":"https://github.com/ayanban011/svgcraft/blob/HEAD/models/pipelines.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3f195c728018813a"}},{"code_sha256_prefix":"188456eee49a9baf","entry":"gradCAM","repo":"ayanban011/svgcraft","repo_kind":"official","path":"models/painter_params.py","file_url":"https://github.com/ayanban011/svgcraft/blob/HEAD/models/painter_params.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"188456eee49a9baf"}},{"code_sha256_prefix":"e8354b1f23fac7be","entry":"interpret","repo":"ayanban011/svgcraft","repo_kind":"official","path":"models/painter_params.py","file_url":"https://github.com/ayanban011/svgcraft/blob/HEAD/models/painter_params.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e8354b1f23fac7be"}},{"code_sha256_prefix":"b904dcd060391f9c","entry":"l1_layers","repo":"ayanban011/svgcraft","repo_kind":"official","path":"models/loss.py","file_url":"https://github.com/ayanban011/svgcraft/blob/HEAD/models/loss.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b904dcd060391f9c"}},{"code_sha256_prefix":"3aa37678e56ebdb0","entry":"l2_layers","repo":"ayanban011/svgcraft","repo_kind":"official","path":"models/loss.py","file_url":"https://github.com/ayanban011/svgcraft/blob/HEAD/models/loss.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3aa37678e56ebdb0"}},{"code_sha256_prefix":"2f1664cb838533c9","entry":"process_input_embeddings","repo":"ayanban011/svgcraft","repo_kind":"official","path":"models/models.py","file_url":"https://github.com/ayanban011/svgcraft/blob/HEAD/models/models.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2f1664cb838533c9"}},{"code_sha256_prefix":"697b5a3c68c24e4a","entry":"compute_grad_norm_losses","repo":"ayanban011/svgcraft","repo_kind":"official","path":"models/loss.py","file_url":"https://github.com/ayanban011/svgcraft/blob/HEAD/models/loss.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"697b5a3c68c24e4a"}},{"code_sha256_prefix":"57dcb958e30899c0","entry":"encode","repo":"ayanban011/svgcraft","repo_kind":"official","path":"models/pipelines.py","file_url":"https://github.com/ayanban011/svgcraft/blob/HEAD/models/pipelines.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"57dcb958e30899c0"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}