数据集:

poloclub/diffusiondb

英文

DiffusionDB

数据集概述

DiffusionDB是第一个大规模的文本到图像提示数据集。它包含了1400万张图片,这些图片是由真实用户使用指定的提示和超参数通过稳定扩散生成的。

DiffusionDB可以在 ? Hugging Face Dataset 公开获取。

支持的任务和排行榜

这个人为操作的数据集具有前所未有的规模和多样性,为理解提示和生成模型的相互作用、检测深度伪造和设计人工智能与人类交互工具以更轻松地使用这些模型等方面提供了令人兴奋的研究机会。

语言

数据集中的文本主要是英文,还包含其他语言,如西班牙语、中文和俄语。

两个子集

DiffusionDB提供了两个子集(DiffusionDB 2M和DiffusionDB Large)以支持不同的需求。

Subset Num of Images Num of Unique Prompts Size Image Directory Metadata Table
DiffusionDB 2M 2M 1.5M 1.6TB images/ metadata.parquet
DiffusionDB Large 14M 1.8M 6.5TB diffusiondb-large-part-1/ diffusiondb-large-part-2/ metadata-large.parquet
键值差异
  • 这两个子集具有相似数量的唯一提示,但DiffusionDB Large包含更多的图片。 DiffusionDB Large是DiffusionDB 2M的超集。
  • DiffusionDB 2M中的图片以png格式存储;DiffusionDB Large中的图片使用无损的webp格式。
  • 数据集结构

    我们使用模块化的文件结构来分发DiffusionDB。DiffusionDB 2M中的200万张图片被分成2000个文件夹,每个文件夹包含1000张图片和一个JSON文件,将这1000张图片与它们的提示和超参数链接起来。类似地,DiffusionDB Large中的1400万张图片分成了14000个文件夹。

    # DiffusionDB 2M
    ./
    ├── images
    │   ├── part-000001
    │   │   ├── 3bfcd9cf-26ea-4303-bbe1-b095853f5360.png
    │   │   ├── 5f47c66c-51d4-4f2c-a872-a68518f44adb.png
    │   │   ├── 66b428b9-55dc-4907-b116-55aaa887de30.png
    │   │   ├── [...]
    │   │   └── part-000001.json
    │   ├── part-000002
    │   ├── part-000003
    │   ├── [...]
    │   └── part-002000
    └── metadata.parquet
    
    # DiffusionDB Large
    ./
    ├── diffusiondb-large-part-1
    │   ├── part-000001
    │   │   ├── 0a8dc864-1616-4961-ac18-3fcdf76d3b08.webp
    │   │   ├── 0a25cacb-5d91-4f27-b18a-bd423762f811.webp
    │   │   ├── 0a52d584-4211-43a0-99ef-f5640ee2fc8c.webp
    │   │   ├── [...]
    │   │   └── part-000001.json
    │   ├── part-000002
    │   ├── part-000003
    │   ├── [...]
    │   └── part-010000
    ├── diffusiondb-large-part-2
    │   ├── part-010001
    │   │   ├── 0a68f671-3776-424c-91b6-c09a0dd6fc2d.webp
    │   │   ├── 0a0756e9-1249-4fe2-a21a-12c43656c7a3.webp
    │   │   ├── 0aa48f3d-f2d9-40a8-a800-c2c651ebba06.webp
    │   │   ├── [...]
    │   │   └── part-000001.json
    │   ├── part-010002
    │   ├── part-010003
    │   ├── [...]
    │   └── part-014000
    └── metadata-large.parquet
    

    这些子文件夹的名称为part-0xxxxx,并且每个图片都由 UUID Version 4 生成的唯一名称。子文件夹中的JSON文件与子文件夹具有相同的名称。每个图片是一个PNG文件(DiffusionDB 2M)或无损的WebP文件(DiffusionDB Large)。JSON文件包含将图片文件名映射到它们的提示和超参数的键值对。

    数据实例

    例如,下面是文件part-000001.json中图片f3501e05-aef7-4225-a9e9-f516527408ac.png及其键值对的示例。

    {
      "f3501e05-aef7-4225-a9e9-f516527408ac.png": {
        "p": "geodesic landscape, john chamberlain, christopher balaskas, tadao ando, 4 k, ",
        "se": 38753269,
        "c": 12.0,
        "st": 50,
        "sa": "k_lms"
      },
    }
    

    数据字段

    • key: 唯一图片名称
    • p: 提示
    • se: 随机种子
    • c: CFG标度(指导标度)
    • st: 步骤
    • sa: 采样器

    数据集元数据

    为了帮助您在不下载所有Zip文件的情况下轻松访问图片的提示和其他属性,我们在DiffusionDB 2M和DiffusionDB Large中都包含了两个元数据表metadata.parquet和metadata-large.parquet。

    metadata.parquet的形状为(2000000,13),metatable-large.parquet的形状为(14000000,13)。两个表共享相同的架构,每行表示一个图片。我们将这些表存储在Parquet格式中,因为Parquet是基于列的:您可以高效地查询单个列(例如,提示)而无需读取整个表格。

    下面是metadata.parquet中的三行随机数据。

    image_name prompt part_id seed step cfg sampler width height user_name timestamp image_nsfw prompt_nsfw
    0c46f719-1679-4c64-9ba9-f181e0eae811.png a small liquid sculpture, corvette, viscous, reflective, digital art 1050 2026845913 50 7 8 512 512 c2f288a2ba9df65c38386ffaaf7749106fed29311835b63d578405db9dbcafdb 2022-08-11 09:05:00+00:00 0.0845108 0.00383462
    a00bdeaa-14eb-4f6c-a303-97732177eae9.png human sculpture of lanky tall alien on a romantic date at italian restaurant with smiling woman, nice restaurant, photography, bokeh 905 1183522603 50 10 8 512 768 df778e253e6d32168eb22279a9776b3cde107cc82da05517dd6d114724918651 2022-08-19 17:55:00+00:00 0.692934 0.109437
    6e5024ce-65ed-47f3-b296-edb2813e3c5b.png portrait of barbaric spanish conquistador, symmetrical, by yoichi hatakenaka, studio ghibli and dan mumford 286 1713292358 50 7 8 512 640 1c2e93cfb1430adbd956be9c690705fe295cbee7d9ac12de1953ce5e76d89906 2022-08-12 03:26:00+00:00 0.0773138 0.0249675
    元数据模式

    metadata.parquet和metatable-large.parquet共享相同的模式。

    Column Type Description
    image_name string Image UUID filename.
    prompt string The text prompt used to generate this image.
    part_id uint16 Folder ID of this image.
    seed uint32 Random seed used to generate this image.
    step uint16 Step count (hyperparameter).
    cfg float32 Guidance scale (hyperparameter).
    sampler uint8 Sampler method (hyperparameter). Mapping: {1: "ddim", 2: "plms", 3: "k_euler", 4: "k_euler_ancestral", 5: "k_heun", 6: "k_dpm_2", 7: "k_dpm_2_ancestral", 8: "k_lms", 9: "others"} .
    width uint16 Image width.
    height uint16 Image height.
    user_name string The unique discord ID's SHA256 hash of the user who generated this image. For example, the hash for xiaohk#3146 is e285b7ef63be99e9107cecd79b280bde602f17e0ca8363cb7a0889b67f0b5ed0 . "deleted_account" refer to users who have deleted their accounts. None means the image has been deleted before we scrape it for the second time.
    timestamp timestamp UTC Timestamp when this image was generated. None means the image has been deleted before we scrape it for the second time. Note that timestamp is not accurate for duplicate images that have the same prompt, hypareparameters, width, height.
    image_nsfw float32 Likelihood of an image being NSFW. Scores are predicted by 12312321 (range from 0 to 1). A score of 2.0 means the image has already been flagged as NSFW and blurred by Stable Diffusion.
    prompt_nsfw float32 Likelihood of a prompt being NSFW. Scores are predicted by the library 12313321 . Each score represents the maximum of toxicity and sexual_explicit (range from 0 to 1).

    警告 虽然Stable Diffusion模型有一个自动模糊用户生成的NSFW图像的NSFW过滤器,但这个NSFW过滤器并不完美,DiffusionDB仍然包含一些NSFW图像。因此,我们使用目前最先进的模型计算并提供图片和提示的NSFW分数。下面是这些分数的分布。在使用DiffusionDB之前,请决定适当的NSFW分数阈值以过滤掉NSFW图像。

    数据拆分

    对于DiffusionDB 2M,我们将200万张图片分成了2000个文件夹,每个文件夹包含1000张图片和一个JSON文件。对于DiffusionDB Large,我们将1400万张图片分成了14000个文件夹,每个文件夹包含1000张图片和一个JSON文件。

    加载数据子集

    DiffusionDB非常庞大(1.6TB或6.5 TB)!然而,我们采用模块化的文件结构,您可以轻松加载所需数量的图片及其提示和超参数。在 example-loading.ipynb 笔记本中,我们演示了加载DiffusionDB子集的三种方法。下面是一个简要的总结。

    方法1:使用Hugging Face数据集加载器

    您可以使用Hugging Face库中的 Datasets 来轻松地从DiffusionDB加载提示和图片。我们预定义了16个DiffusionDB子集(配置),基于实例的数量。您可以在文件 Dataset Preview 中查看所有子集。

    import numpy as np
    from datasets import load_dataset
    
    # Load the dataset with the `large_random_1k` subset
    dataset = load_dataset('poloclub/diffusiondb', 'large_random_1k')
    
    方法2.使用PoloClub Downloader

    这个库中包含了一个Python下载器 download.py ,可以让您下载和加载DiffusionDB。您可以使用它从命令行使用。下面是加载DiffusionDB子集的示例。

    使用/示例

    脚本可以使用以下命令行参数运行:

    • -i --index - 要下载的文件或文件范围的下限(如果还设置了-r)。
    • -r --range - 要下载的文件范围的上限(如果还设置了-i)。
    • -o --output - 自定义输出目录的名称。如果未设置,则默认为当前目录。
    • -z --unzip - 在下载后解压文件/文件。
    • -l --large - 从Diffusion DB Large中下载。默认为Diffusion DB 2M。
    下载单个文件

    指定要下载的具体文件作为HuggingFace上的文件编号的末尾。脚本将自动填充数字并生成URL。

    python download.py -i 23
    
    下载文件范围

    设置要下载的文件集的上下限通过 -i 和 -r 标志。

    python download.py -i 1 -r 2000
    

    请注意,这个范围将下载整个数据集。脚本会要求您确认下载目标位置有1.7Tb的空闲空间。

    下载到指定目录

    脚本将默认下载到数据集的部分.zip文件所在位置的images/目录。如果您希望移动下载位置,您应该将这些文件移动或使用符号链接。

    python download.py -i 1 -r 2000 -o /home/$USER/datahoarding/etc
    

    同样,脚本在下载时会自动在目录和文件之间添加 / 。

    设置一旦下载完文件就解压它们

    脚本设置在所有文件下载后解压文件,因为两者在某些情况下都可能需要较长的时间。

    python download.py -i 1 -r 2000 -z
    
    方法3.使用metadata.parquet(仅文本)

    如果您的任务不需要图片,则可以在metadata.parquet表格中轻松访问所有200万个提示和超参数。

    from urllib.request import urlretrieve
    import pandas as pd
    
    # Download the parquet table
    table_url = f'https://huggingface.co/datasets/poloclub/diffusiondb/resolve/main/metadata.parquet'
    urlretrieve(table_url, 'metadata.parquet')
    
    # Read the table using Pandas
    metadata_df = pd.read_parquet('metadata.parquet')
    

    数据集创建

    策划理由

    最近扩散模型通过在自然语言提示中进行高质量和可控的图像生成而引起了广泛关注。自从这些模型发布以来,人们从不同领域迅速应用这些模型来创建屡获殊荣的艺术品、合成的放射学图像,甚至是超真实的视频。

    但是,生成具有期望细节的图像是困难的,因为它要求用户编写明确指定预期结果的适当提示。开发这样的提示需要不断尝试和错误,通常会感到随机和缺乏原则。Simon Willison把编写提示比喻为巫师学习“魔法咒语”:用户不知道为什么一些提示有效,但他们会将这些提示添加到他们的“咒书”中。例如,为了生成高度详细的图像,通常会在提示中添加特殊关键字,如“trending on artstation”和“unreal engine”。

    提示工程已经成为文本到文本生成领域的一个研究领域,研究人员系统地研究如何构建提示以有效地解决不同的下游任务。由于大型文本到图像模型相对较新,因此迫切需要了解这些模型对提示的反应,如何编写有效的提示以及如何设计工具来帮助用户生成图像。为了帮助研究人员应对这些关键挑战,我们创建了DiffusionDB,这是第一个包含1400万个真实提示-图像对的大规模提示数据集。

    数据来源

    初始数据收集和规范化

    我们通过从官方的稳定扩散Discord服务器上抓取用户生成的图像来构建DiffusionDB。我们选择稳定扩散,因为它是目前唯一的开源大型文本到图像生成模型,所有生成的图像均具有CC0 1.0通用公共领域奉献许可证,放弃了所有版权并允许任何目的的使用。我们选择官方的 Stable Diffusion Discord server ,因为它是公开的,并且对生成和分享非法、令人恶心或不适合上班(如性和暴力内容)的图像有严格的规定。该服务器还禁止用户编写或分享带有个人信息的提示。

    来源语言制作者是谁?

    语言制作者是官方的 Stable Diffusion Discord server 的用户。

    注释

    数据集不包含任何额外的注释。

    注释过程

    [N/A]

    注释者是谁?

    [N/A]

    个人和敏感信息

    作者从数据集中删除了Discord用户名。我们决定对数据集进行匿名处理,因为一些提示可能包含敏感信息:将其与创建者关联在一起可能会对创建者造成伤害。

    使用数据的注意事项

    数据集的社会影响

    这个数据集的目的是帮助人们更好地理解大规模文本到图像生成模型。这个人为操作的数据集具有前所未有的规模和多样性,为理解提示和生成模型的相互作用、检测深度伪造和设计人工智能与人类交互工具以更轻松地使用这些模型等方面提供了令人兴奋的研究机会。

    应该注意的是,我们从稳定扩散Discord服务器收集图片及其提示。Discord服务器对用户生成或分享有害或不适合上班(如性和暴力内容)的图像有规定。稳定扩散模型在服务器上使用了一个NSFW过滤器,如果检测到NSFW内容,它会模糊生成的图像。然而,仍可能有一些用户生成的有害图片未被NSFW过滤器检测到或服务器管理员删除。因此,DiffusionDB可能包含这些图像。为了减轻潜在的伤害,我们在 Google Form DiffusionDB website 上提供了一个报告有害或不适当的图像和提示的 Google Form 。我们将密切监控这个表格,并从DiffusionDB中删除被报告的图像和提示。

    偏见讨论

    DiffusionDB中的1400万张图像具有多种风格和类别。然而,Discord可能是一个有偏见的数据来源。我们的图像来自早期用户可以在发布之前使用一个机器人使用Stable Diffusion的渠道。由于这些用户在模型公开之前就开始使用Stable Diffusion,我们假设他们是AI艺术爱好者,并且很可能在其他文本到图像生成模型方面有经验。因此,DiffusionDB中的提示风格可能不代表初学者用户。同样,DiffusionDB中的提示可能不适用于需要特定知识的领域,例如医学图像。

    其他已知限制

    普适性。以前的研究已经表明,在一个生成模型上有效的提示在其他模型上可能不会给出最佳结果。因此,不同的模型可能需要用户编写不同的提示。例如,许多稳定扩散提示使用逗号分隔关键字,而在DALL-E 2或Midjourney的提示中很少见到这种模式。因此,我们提醒研究人员,DiffusionDB的一些研究结果可能无法推广到其他文本到图像生成模型。

    附加信息

    数据集策划者

    DiffusionDB由 Jay Wang Evan Montoya David Munechika Alex Yang Ben Hoover Polo Chau 创建。

    许可信息

    DiffusionDB数据集在 CC0 1.0 License 下可用。本存储库中的Python代码在 MIT License 下可用。

    引用信息

    @article{wangDiffusionDBLargescalePrompt2022,
      title = {{{DiffusionDB}}: {{A}} Large-Scale Prompt Gallery Dataset for Text-to-Image Generative Models},
      author = {Wang, Zijie J. and Montoya, Evan and Munechika, David and Yang, Haoyang and Hoover, Benjamin and Chau, Duen Horng},
      year = {2022},
      journal = {arXiv:2210.14896 [cs]},
      url = {https://arxiv.org/abs/2210.14896}
    }
    

    贡献

    如果有任何问题,请随时 open an issue 或联系 Jay Wang