diffusiondb

diffusiondb

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

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

DiffusionDBStable Diffusion文本生成图像数据集生成模型Github开源项目

DiffusionDB <a href="https://huggingface.co/datasets/poloclub/diffusiondb"><picture><source media="(prefers-color-scheme: dark)" srcset="https://i.imgur.com/yGxUUlX.png"><img src="https://yellow-cdn.veclightyear.com/35dd4d3f/22e8d812-72eb-4af9-ab44-9aedfb11c40d.ico" align="right" src="favicon.ico" height="40px"></picture>

hugging license arxiv badge datasheet

<!-- [![DOI:10.1145/3491101.3519653](https://yellow-cdn.veclightyear.com/35dd4d3f/81f2b5ef-a949-4f7d-b2ed-6b7dd812bfaf.3519653-blue)](https://doi.org/10.1145/3491101.3519653) --> <img width="100%" src="https://yellow-cdn.veclightyear.com/35dd4d3f/07417401-d4a5-457b-ac61-4f83c09d91c6.gif">

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 中的键值对。

<img width="300" src="https://i.imgur.com/gqWcRs2.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" }, }

数据字段为:

  • 键:唯一图像名称
  • 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图像。

<picture> <source media="(prefers-color-scheme: dark)" srcset="https://i.imgur.com/KLbJkUr.png"> <img alt="NSFW分数分布" src="https://i.imgur.com/1RiGAXL.png" width="100%"> </picture>

加载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

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多