Project Icon

diffusiondb

大规模文本生成图像数据集,促进多领域研究

DiffusionDB 是一个大规模文本生成图像数据集,包含1400万张由Stable Diffusion生成的图像,以真实用户的提示和超参数为基础。该数据集为研究生成模型与提示词的关系、检测深度伪造和设计人机交互工具提供了丰富资源,分为 DiffusionDB 2M 和 DiffusionDB Large 两个子集,满足不同需求。模块化的数据集结构使得用户可以高效加载所需部分。

DiffusionDB

hugging license arxiv badge datasheet

DiffusionDB 是首个大规模的文本到图像提示数据集。它包含由稳定扩散生成的1400 万张图像,使用的提示和超参数由真实用户指定。这种前所未有的规模和多样性为理解提示与生成模型之间的相互作用、检测深度伪造及设计人机交互工具以帮助用户更轻松地使用这些模型提供了令人兴奋的研究机会。

开始使用

DiffusionDB 可以在 🤗 Hugging Face 数据集 获取。

两个子集

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

子集图片数量独特提示数量体积图片目录元数据表
DiffusionDB 2M2M1.5M1.6TBimages/metadata.parquet
DiffusionDB Large14M1.8M6.5TBdiffusiondb-large-part-1/ diffusiondb-large-part-2/metadata-large.parquet
主要区别
  1. 两个子集具有相似的独特提示数量,但 DiffusionDB Large 的图像更多。DiffusionDB Large 是 DiffusionDB 2M 的超集。
  2. 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-010001.json
│   ├── part-010002
│   ├── part-010003
│   ├── [...]
│   └── part-014000
└── metadata-large.parquet

这些子文件夹的名称为 part-0xxxxx,每个图像都有一个由 UUID 版本 4 生成的唯一名称。子文件夹中的 JSON 文件与子文件夹具有相同的名称。每个图像是一个 PNG 文件 (DiffusionDB 2M) 或无损 WebP 文件 (DiffusionDB Large)。JSON 文件包含将图像文件名映射到其提示和超参数的键值对。例如,以下是 f3501e05-aef7-4225-a9e9-f516527408ac.png 的图像及其在 part-000001.json 中的键值对。

{
  "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"
  },
}

数据字段为:

  • 键:唯一图像名称
  • p:提示
  • se:随机种子
  • c:CFG 量表(引导量表)
  • st:步数
  • sa:取样器

数据集元数据

为了方便您在不下载所有压缩文件的情况下轻松访问图像的提示和其他属性,我们为 DiffusionDB 2M 和 DiffusionDB Large 分别包括了两个元数据表 metadata.parquetmetadata-large.parquet

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

以下是 metadata.parquet 中的三行随机行。

图像名称提示part_idseedstepcfgsamplerwidthheight用户名称时间戳image_nsfwprompt_nsfw
0c46f719-1679-4c64-9ba9-f181e0eae811.pnga small liquid sculpture, corvette, viscous, reflective, digital art105020268459135078512512c2f288a2ba9df65c38386ffaaf7749106fed29311835b63d578405db9dbcafdb2022-08-11 09:05:00+00:000.08451080.00383462
a00bdeaa-14eb-4f6c-a303-97732177eae9.pnghuman sculpture of lanky tall alien on a romantic date at italian restaurant with smiling woman, nice restaurant, photography, bokeh905118352260350108512768df778e253e6d32168eb22279a9776b3cde107cc82da05517dd6d1147249186512022-08-19 17:55:00+00:000.6929340.109437
6e5024ce-65ed-47f3-b296-edb2813e3c5b.pngportrait of barbaric spanish conquistador, symmetrical, by yoichi hatakenaka, studio ghibli and dan mumford286171329235850785126401c2e93cfb1430adbd956be9c690705fe295cbee7d9ac12de1953ce5e76d899062022-08-12 03:26:00+00:000.07731380.0249675

元数据模式

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

类型描述
image_namestring图像 UUID 文件名。
promptstring用来生成此图像的文本提示。
part_iduint16此图像的文件夹 ID。
seeduint32用来生成此图像的随机种子。
stepuint16步数(超参数)。
cfgfloat32引导量表(超参数)。
sampleruint8取样器方法(超参数)。映射:{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"}.
widthuint16图像宽度。
heightuint16图像高度。
user_namestring生成此图像的用户唯一 discord ID 的 SHA256 哈希。例如,xiaohk#3146 的哈希为 e285b7ef63be99e9107cecd79b280bde602f17e0ca8363cb7a0889b67f0b5ed0。"deleted_account" 指已删除其帐户的用户。None 表示在我们第二次抓取时该图像已被删除。
timestamptimestamp生成此图像时的 UTC 时间戳。None 表示在我们第二次抓取时该图像已被删除。请注意,对于具有相同提示、超参数、宽度和高度的重复图像,时间戳并不准确。
image_nsfwfloat32图像被认为不适宜公众查看的可能性。分数由 LAION 的先进 NSFW 检测器 预测(范围为 0 到 1)。2.0 的分数表示该图像已被标记为 NSFW,并且已被 Stable Diffusion 模糊。
prompt_nsfwfloat32提示被认为不适宜公众查看的可能性。分数由图书馆 Detoxicy 预测。每个分数代表 toxicitysexual_explicit 的最大值(范围为 0 到 1)。

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

NSFW分数分布

加载DiffusionDB

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

方法1:使用Hugging Face Datasets Loader

您可以使用Hugging Face Datasets库轻松加载DiffusionDB中的提示和图像。我们根据实例数预定义了16个DiffusionDB子集(配置)。您可以在数据集预览中查看所有子集。

注意 要使用Datasets Loader,您还需要安装Pillowpip install Pillow

import numpy as np
from datasets import load_dataset

# 使用`large_random_1k`子集加载数据集
dataset = load_dataset('poloclub/diffusiondb', 'large_random_1k')

方法2:使用一个下载脚本

此仓库包含一个Python下载器download.py,允许您下载和加载DiffusionDB。您可以从命令行使用它。以下是加载DiffusionDB子集的示例。

使用/示例

该脚本使用如下命令行参数运行:

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

要下载的特定文件作为HuggingFace文件结尾的数字提供。脚本将自动填充数字并生成URL。

python download.py -i 23
下载一组文件

要下载的文件集的上下界分别由-i-r标志设置。

python download.py -i 1 -r 2000

注意,此范围将下载整个数据集。脚本会要求您确认下载目的地有1.7TB的存储空间。

下载到特定目录

脚本默认定位到数据集part .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

# 下载parquet表
table_url = f'https://huggingface.co/datasets/poloclub/diffusiondb/resolve/main/metadata.parquet'
urlretrieve(table_url, 'metadata.parquet')

# 使用Pandas读取表
metadata_df = pd.read_parquet('metadata.parquet')

数据集创建

我们从官方Stable Diffusion Discord服务器收集了所有图像。详情请阅读我们的研究论文。代码包含在./scripts/中。

数据删除

如果您在DiffusionDB中发现任何有害图像或提示,您可以使用这个Google表单报告它们。同样,如果您是此数据集中包含的图像的创作者,并希望从DiffusionDB中删除您的图像,也可以使用同一表单告知我们。我们将密切监控此表单并定期更新DiffusionDB。

致谢

DiffusionDB由Jay WangEvan MontoyaDavid MunechikaAlex YangBen HooverPolo Chau创建。

引用

@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}
}

许可

DiffusionDB数据集在CC0 1.0许可下可用。本仓库中的Python代码在MIT许可下可用。

联系方式

如果您有任何问题,请随时提出问题或联系Jay Wang

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号