CoolFace
Datasetpublic

KU-MIIL/Semantic-SVG-Benchmark

Semantic SVG Benchmark A benchmark of 203 SVG files annotated with human-written semantic object-decomposition trees: every rendered shape (<path>, <rect>, <circle>, …) in each SVG is assigned to a named semantic object (e.g. judge, gavel), and objects may be further decomposed into parts (e.g. Bamboo planter → pot, bamboo). It is the evaluation benchmark of Compositional SVG Generation via VLM-Driven Hierarchical Semantic Parsing (EMNLP 2026). The annotations are ours; the SVGs… See the full description on the dataset page: https://huggingface.co/datasets/KU-MIIL/Semantic-SVG-Benchmark.

sourceHugging Facecc-by-4.0updated 4d agoView on Hugging Face
1likes73downloads
Dataset Card

Semantic SVG Benchmark

A benchmark of 203 SVG files annotated with human-written semantic object-decomposition trees: every rendered shape (<path>, <rect>, <circle>, …) in each SVG is assigned to a named semantic object (e.g. judge, gavel), and objects may be further decomposed into parts (e.g. Bamboo planterpot, bamboo). It is the evaluation benchmark of Compositional SVG Generation via VLM-Driven Hierarchical Semantic Parsing (EMNLP 2026). The annotations are ours; the SVGs come from existing public sources (see Sources & licenses).

SVGs / annotated trees203 / 203
Rendered shapes (n_paths)4,029 total · 2–52 per file · mean 19.8
Top-level objects per file2–8 (median 2)
Semantic nodes (all levels)539
Files with gradients59
Splittest only (evaluation benchmark)

Quick start

python
from datasets import load_dataset
import json

ds = load_dataset("KU-MIIL/Semantic-SVG-Benchmark", split="test")
ex = ds[0]
print(ex["id"], ex["source"], ex["n_paths"])
tree = json.loads(ex["tree"])         # {"paths": [...], "root": {"children": [...]}}
svg_text = ex["svg"]                   # raw SVG source

The raw files are also available directly: svg/<id>.svg and trees/<id>.tree.json, with per-file metadata in manifest.csv.

Data fields (data/test.parquet)

fieldtypedescription
idstrfile stem, e.g. icon_3490, emoji_161, openclipart__189889
sourcestricon, illustration, emoji, openclipart, twemoji, noto, emojitwo, fluent, openmoji
originstrwhere the SVG was taken from: SArena-Icon (InternSVG, img2svg), SArena-Illustration (InternSVG, img2svg), SVG-Emoji test (StarVector SVG-Bench), or web-curated
origin_idstrid in the origin dataset (SArena img2svg id / SVG-Emoji test index / upstream file id)
upstream_artstroriginal artwork provider (SArena, twemoji, openmoji, noto, emojitwo, fluent, openclipart)
upstream_licensestrlicense of the SVG artwork itself (see below)
source_url, artist, attributionstrper-file attribution string
n_pathsintnumber of rendered shape elements (= indexable units in the tree)
n_objectsintnumber of top-level semantic objects
n_nodesintnumber of semantic nodes at all levels
tree_depthintdepth of the decomposition tree (1 = flat objects, 2 = objects with parts)
has_gradientboolSVG contains <linearGradient> or <radialGradient>
svgstrraw SVG source
treestrannotation tree as a JSON string (same content as trees/<id>.tree.json)

Annotation format

json
{
  "paths": [0, 1, 2, ..., 20],
  "root": {
    "children": [
      {"label": "sun", "paths": [0, 1]},
      {"label": "Bamboo planter", "paths": [2, 3, ..., 20],
       "children": [
         {"label": "pot",    "paths": [13, 14, 16, 17, 18]},
         {"label": "bamboo", "paths": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 19, 20]}
       ]}
    ]
  }
}
  • paths (top level) lists all shape indices in the file (0 … n_paths-1).
  • Each node has a free-text label and the set of shape indices paths it covers; a parent's paths is the union of its children's. The top-level objects partition the full shape set (every shape belongs to exactly one top-level object).
  • Shape index convention. Index i refers to the i-th shape element in document order among path, rect, circle, ellipse, polygon, polyline, line, skipping any shape nested inside <defs>, <clipPath>, <mask>, <symbol>, <pattern> or <marker>. Reference implementation:
python
import re
SHAPE_PAT = re.compile(r"<(path|rect|circle|ellipse|polygon|polyline|line)\b([^>]*?)(/>|>([\s\S]*?)</\1>)")
NONRENDER = re.compile(r"<(defs|clipPath|mask|symbol|pattern|marker)\b[^>]*>[\s\S]*?</\1>")

def shapes(svg_text):
    skip = [(m.start(), m.end()) for m in NONRENDER.finditer(svg_text)]
    return [m for m in SHAPE_PAT.finditer(svg_text)
            if not any(a <= m.start() < b for a, b in skip)]

examples/ contains four rendered tree visualisations (*.tree.png / *.tree.svg).

Sources & licenses

The SVGs were not created by us. Items of type A/B are re-annotations of existing benchmark assets and are therefore the same images as in those benchmarks (re-serialised, not byte-identical); items of type C were collected directly from each project's primary repository/site.

origincountartwork license
AInternSVG / SArena img2svg — Icon (41), Illustration (23)64SArena dataset terms (research use)
BStarVector SVG-Bench / SVG-Emoji, test split29upstream art: twemoji CC-BY-4.0 (19), openmoji CC-BY-SA-4.0 (6), noto Apache-2.0 (4)*
Copenclipart30CC0-1.0
Ctwemoji22CC-BY-4.0
Cnoto-emoji26Apache-2.0
Cemojitwo19CC-BY-4.0
Cfluentui-emoji9MIT
Copenmoji4CC-BY-SA-4.0

\* per-file upstream provider is given in upstream_art / attribution.

License. The semantic-decomposition annotations (trees/, the tree column, and manifest.csv) are released under CC-BY-4.0. Each SVG remains under its upstream license listed in upstream_license (CC0-1.0 / CC-BY-4.0 / CC-BY-SA-4.0 / Apache-2.0 / MIT / SArena research-use terms); please respect the corresponding attribution and share-alike requirements when redistributing the SVG files.

Contamination note. Because A and B are taken from existing benchmarks, this benchmark is not image-disjoint from SArena (img2svg) or SVG-Bench SVG-Emoji (test). None of the 203 files is byte-identical to any file in SVG-Stack (2,283,875 SVGs) or VectorGym. Neither SArena nor SVG-Emoji ship decomposition or object-hierarchy labels; those are contributed here.

Citation

This benchmark was introduced in Compositional SVG Generation via VLM-Driven Hierarchical Semantic Parsing (EMNLP 2026, main conference). Paper: arXiv:2609.14657.

bibtex
@inproceedings{park2026compositional,
  title     = {Compositional {SVG} Generation via {VLM}-Driven Hierarchical Semantic Parsing},
  author    = {Park, Sehwan and Kim, Taehoon and Han, Geonhee and Kim, Dohyun and Kim, Seung Wook and Seo, Paul Hongsuck},
  booktitle = {Proceedings of the 2026 Conference on Empirical Methods in Natural Language Processing (EMNLP)},
  year      = {2026},
  url       = {https://arxiv.org/abs/2609.14657}
}

If you use the SVGs, please also cite the corresponding upstream sources (InternSVG/SArena: arXiv:2510.11341; StarVector: arXiv:2312.11556).