数据集:

cyberagent/crello

英文

Crello数据集的数据卡

数据集摘要

Crello数据集是编制用于研究矢量图形文档的。该数据集包含文档元数据,如画布大小和预渲染的元素,如图像或文本框。原始模板是从 crello.com (现在 create.vista.com ) 收集的,并转换为适合机器学习分析的低分辨率格式。

支持的任务和排行榜

CanvasVAE 研究无监督的文档生成。

语言

几乎所有的设计模板都使用英语。

数据集结构

数据实例

每个实例都有标量属性(画布)和序列属性(元素)。分类值存储为整数值。请查看数据集的 ClassLabel 特征以获取分类值的标签列表。

{'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>]}

要获取分类值的标签,请使用 int2str 方法:

key = "font"
example = dataset[0]

dataset.features[key].int2str(example[key])

数据字段

在下面,分类字段显示为 categorical 类型,但实际存储为 int64 。

画布属性

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

元素属性

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

请注意,颜色和预渲染的图像不一定能准确地再现原始设计模板。如果原始模板仍然可用,请在以下URL中访问原始模板。

https://create.vista.com/artboard/?template=<template_id>

左侧和顶部可以是负值,因为元素可能比画布尺寸大。

数据拆分

Crello数据集有3个拆分:训练集、验证集和测试集。当前拆分是根据原始模板的相同标题仅出现在一个拆分中生成的。

Split Count
train 18659
validaton 2391
test 2371

可视化

可以使用 skia-python 的以下方法对每个示例进行可视化。请注意,以下内容不能保证与原始模板具有相似的外观。目前,文本渲染的质量远非完美。

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()

数据集创建

策划理由

Crello数据集是为一般矢量图形文档研究而编制的,目标是提供适用于神经方法的完整矢量图形信息的数据集。

源数据

初始数据收集和归一化

数据集最初是从之前的 crello.com 网站上抓取并预处理成上述格式。

资源语言生产者是谁?

虽然 create.vista.com 拥有这些模板,但这些模板似乎是由特定的设计工作室创建的。

个人和敏感信息

数据集不包含有关创建者的个人信息,但可能包含设计模板中的人物图片。

使用数据的注意事项

数据的社会影响

该数据集被开发用于推动矢量图形文档的一般研究,特别是用于图形设计的生成系统。成功利用可能使得创意工作流程自动化,减少人力设计师参与。

偏见讨论

数据集中包含的模板反映了源数据中出现的偏见,这可能在特定的设计类别中呈现性别偏见。

其他已知限制

由于源数据的未知数据规格,颜色和预渲染的图像不一定能准确地再现原始设计模板。如果原始模板仍然可用,请在以下URL中访问原始模板。

https://create.vista.com/artboard/?template=<template_id>

附加信息

数据集策划者

Crello数据集由 Kota Yamaguchi 开发。

许可信息

该数据集的来源是 create.vista.com (正式上为 crello.com )。分发商("我们")不拥有原始设计模板的版权。通过使用Crello数据集,数据集的用户("您")必须同意 VistaCreate License Agreements

该数据集的分发遵循 CDLA-Permissive-2.0 license

注意

我们不会重新分发原始文件,因为根据条款,我们没有被允许这样做。

引用信息

@article{yamaguchi2021canvasvae,
  title={CanvasVAE: Learning to Generate Vector Graphic Documents},
  author={Yamaguchi, Kota},
  journal={ICCV},
  year={2021}
}

发布版本

3.1:修复错误版本(2023年2月16日)

  • 修复忽略某些文本中的换行符的错误

3.0:v3版本(2023年2月13日)

  • 迁移到Hugging Face Hub。
  • 修复各种文本渲染错误。
  • 更改拆分生成标准以避免近似重复:与v2拆分不兼容。
  • 在模板中加入了电影缩略图。
  • 添加 title , keywords , suitability 和 industries 画布属性。
  • 添加 capitalize , line_height 和 letter_spacing 元素属性。

2.0:v2版本(2022年5月26日)

  • 添加 text , font , font_size , text_align 和 angle 元素属性。
  • 在 image_bytes 中包括渲染的文本元素。

1.0:v1版本(2021年8月24日)

贡献

感谢 @kyamagu 添加此数据集。