数据集:
cyberagent/crello
任务:
无条件图像生成语言:
en计算机处理:
monolingual大小:
10K<n<100K语言创建人:
found批注创建人:
no-annotation源数据集:
original预印本库:
arxiv:2108.01249许可:
otherThe Crello dataset is compiled for the study of vector graphic documents. The dataset contains document meta-data such as canvas size and pre-rendered elements such as images or text boxes. The original templates were collected from crello.com (now create.vista.com ) and converted to a low-resolution format suitable for machine learning analysis.
CanvasVAE studies unsupervised document generation.
Almost all design templates use English.
Each instance has scalar attributes (canvas) and sequence attributes (elements). Categorical values are stored as integer values. Check ClassLabel features of the dataset for the list of categorical labels.
{'id': '592d6c2c95a7a863ddcda140', 'length': 8, 'group': 4, 'format': 20, 'canvas_width': 3, 'canvas_height': 1, 'category': 0, 'title': 'Beauty Blog Ad Woman with Unusual Hairstyle', 'type': [1, 3, 3, 3, 3, 4, 4, 4], 'left': [0.0, -0.0009259259095415473, 0.24444444477558136, 0.5712962746620178, 0.2657407522201538, 0.369228333234787, 0.2739444375038147, 0.44776931405067444], 'top': [0.0, -0.0009259259095415473, 0.37037035822868347, 0.41296297311782837, 0.41296297311782837, 0.8946287035942078, 0.4549448788166046, 0.40591198205947876], 'width': [1.0, 1.0018517971038818, 0.510185182094574, 0.16296295821666718, 0.16296295821666718, 0.30000001192092896, 0.4990740716457367, 0.11388888955116272], 'height': [1.0, 1.0018517971038818, 0.25833332538604736, 0.004629629664123058, 0.004629629664123058, 0.016611294820904732, 0.12458471953868866, 0.02657807245850563], 'opacity': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], 'text': ['', '', '', '', '', 'STAY WITH US', 'FOLLOW', 'PRESS'], 'font': [0, 0, 0, 0, 0, 152, 172, 152], 'font_size': [0.0, 0.0, 0.0, 0.0, 0.0, 18.0, 135.0, 30.0], 'text_align': [0, 0, 0, 0, 0, 2, 2, 2], 'angle': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 'capitalize': [0, 0, 0, 0, 0, 0, 0, 0], 'line_height': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], 'letter_spacing': [0.0, 0.0, 0.0, 0.0, 0.0, 14.0, 12.55813980102539, 3.0], 'suitability': [0], 'keywords': ['beautiful', 'beauty', 'blog', 'blogging', 'caucasian', 'cute', 'elegance', 'elegant', 'fashion', 'fashionable', 'femininity', 'glamour', 'hairstyle', 'luxury', 'model', 'stylish', 'vogue', 'website', 'woman', 'post', 'instagram', 'ig', 'insta', 'fashion', 'purple'], 'industries': [1, 8, 13], 'color': [[153.0, 118.0, 96.0], [34.0, 23.0, 61.0], [34.0, 23.0, 61.0], [255.0, 255.0, 255.0], [255.0, 255.0, 255.0], [255.0, 255.0, 255.0], [255.0, 255.0, 255.0], [255.0, 255.0, 255.0]], 'image': [<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=256x256>, <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=256x256>, <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=256x256>, <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=256x256>, <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=256x256>, <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=256x256>, <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=256x256>, <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=256x256>]}
To get a label for categorical values, use the int2str method:
key = "font" example = dataset[0] dataset.features[key].int2str(example[key])
In the following, categorical fields are shown as categorical type, but the actual storage is int64 .
Canvas attributes
Field | Type | Shape | Description |
---|---|---|---|
id | string | () | Template ID from crello.com |
group | categorical | () | Broad design groups, such as social media posts or blog headers |
format | categorical | () | Detailed design formats, such as Instagram post or postcard |
category | categorical | () | Topic category of the design, such as holiday celebration |
canvas_width | categorical | () | Canvas pixel width |
canvas_height | categorical | () | Canvas pixel height |
length | int64 | () | Length of elements |
suitability | categorical | (None,) | List of display tags, only mobile tag exists |
keywords | string | (None,) | List of keywords associated to this template |
industries | categorical | (None,) | List of industry tags like marketingAds |
Element attributes
Field | Type | Shape | Description |
---|---|---|---|
type | categorical | (None,) | Element type, such as vector shape, image, or text |
left | float32 | (None,) | Element left position normalized to [0, 1] range w.r.t. canvas_width |
top | float32 | (None,) | Element top position normalized to [0, 1] range w.r.t. canvas_height |
width | float32 | (None,) | Element width normalized to [0, 1] range w.r.t. canvas_width |
height | float32 | (None,) | Element height normalized to [0, 1] range w.r.t. canvas_height |
color | int64 | (None, 3) | Extracted main RGB color of the element |
opacity | float32 | (None,) | Opacity in [0, 1] range |
image | image | (None,) | Pre-rendered 256x256 preview of the element encoded in PNG format |
text | string | (None,) | Text content in UTF-8 encoding for text element |
font | categorical | (None,) | Font family name for text element |
font_size | float32 | (None,) | Font size (height) in pixels |
text_align | categorical | (None,) | Horizontal text alignment, left, center, right for text element |
angle | float32 | (None,) | Element rotation angle (radian) w.r.t. the center of the element |
capitalize | categorical | (None,) | Binary flag to capitalize letters |
line_height | float32 | (None,) | Scaling parameter to line height, default is 1.0 |
letter_spacing | float32 | (None,) | Adjustment parameter for letter spacing, default is 0.0 |
Note that the color and pre-rendered images do not necessarily accurately reproduce the original design templates. The original template is accessible at the following URL if still available.
https://create.vista.com/artboard/?template=<template_id>
left and top can be negative because elements can be bigger than the canvas size.
The Crello dataset has 3 splits: train, validation, and test. The current split is generated such that the same title of the original template shows up in only in one split.
Split | Count |
---|---|
train | 18659 |
validaton | 2391 |
test | 2371 |
Each example can be visualized in the following approach using skia-python . Note the following does not guarantee a similar appearance to the original template. Currently, the quality of text rendering is far from perfect.
import io from typing import Any, Dict import numpy as np import skia def render(features: datasets.Features, example: Dict[str, Any], max_size: float=512.) -> bytes: """Render parsed sequence example onto an image and return as PNG bytes.""" canvas_width = int(features["canvas_width"].int2str(example["canvas_width"])) canvas_height = int(features["canvas_height"].int2str(example["canvas_height"])) scale = min(1.0, max_size / canvas_width, max_size / canvas_height) surface = skia.Surface(int(scale * canvas_width), int(scale * canvas_height)) with surface as canvas: canvas.scale(scale, scale) for index in range(example["length"]): pil_image = example["image"][index] image = skia.Image.frombytes( pil_image.convert('RGBA').tobytes(), pil_image.size, skia.kRGBA_8888_ColorType) left = example["left"][index] * canvas_width top = example["top"][index] * canvas_height width = example["width"][index] * canvas_width height = example["height"][index] * canvas_height rect = skia.Rect.MakeXYWH(left, top, width, height) paint = skia.Paint(Alphaf=example["opacity"][index], AntiAlias=True) angle = example["angle"][index] with skia.AutoCanvasRestore(canvas): if angle != 0: degree = 180. * angle / np.pi canvas.rotate(degree, left + width / 2., top + height / 2.) canvas.drawImageRect(image, rect, paint=paint) image = surface.makeImageSnapshot() with io.BytesIO() as f: image.save(f, skia.kPNG) return f.getvalue()
The Crello dataset is compiled for the general study of vector graphic documents, with the goal of producing a dataset that offers complete vector graphic information suitable for neural methodologies.
The dataset is initially scraped from the former crello.com and pre-processed to the above format.
Who are the source language producers?While create.vista.com owns those templates, the templates seem to be originally created by a specific group of design studios.
The dataset does not contain any personal information about the creator but may contain a picture of people in the design template.
This dataset was developed for advancing the general study of vector graphic documents, especially for generative systems of graphic design. Successful utilization might enable the automation of creative workflow that human designers get involved in.
The templates contained in the dataset reflect the biases appearing in the source data, which could present gender biases in specific design categories.
Due to the unknown data specification of the source data, the color and pre-rendered images do not necessarily accurately reproduce the original design templates. The original template is accessible at the following URL if still available.
https://create.vista.com/artboard/?template=<template_id>
The Crello dataset was developed by Kota Yamaguchi .
The origin of the dataset is create.vista.com (formally, crello.com ). The distributor ("We") do not own the copyrights of the original design templates. By using the Crello dataset, the user of this dataset ("You") must agree to the VistaCreate License Agreements .
The dataset is distributed under CDLA-Permissive-2.0 license .
Note
We do not re-distribute the original files as we are not allowed by terms.
@article{yamaguchi2021canvasvae, title={CanvasVAE: Learning to Generate Vector Graphic Documents}, author={Yamaguchi, Kota}, journal={ICCV}, year={2021} }
3.1: bugfix release (Feb 16, 2023)
3.0: v3 release (Feb 13, 2023)
2.0: v2 release (May 26, 2022)
1.0: v1 release (Aug 24, 2021)
Thanks to @kyamagu for adding this dataset.