
DiffFusionDB est le premier ensemble de données d'invite de texte à l'image à grande échelle. Il contient 14 millions d'images générées par diffusion stable à l'aide d'invites et d'hyperparamètres spécifiées par les utilisateurs réels. L'échelle et la diversité sans précédent de cet ensemble de données à actions humaines offrent des opportunités de recherche passionnantes pour comprendre l'interaction entre les invites et les modèles génératifs, la détection de Fetfakes Deep et la conception d'outils d'interaction humaine-AI pour aider les utilisateurs plus facilement à utiliser ces modèles.
DiffFusionDB est disponible? Ensembles de données de visage étreintes.
DiffFusionDB fournit deux sous-ensembles (DiffusionDB 2M et DiffFusionDB Large) pour répondre aux différents besoins.
| Sous-ensemble | Un nombre d'images | Num d'invites uniques | Taille | Répertoire d'image | Table de métadonnées |
|---|---|---|---|---|---|
| Diffusiondb 2m | 2m | 1,5 m | 1,6 To | images/ | metadata.parquet |
| Diffusiondb grand | 14m | 1,8 m | 6,5 To | diffusiondb-large-part-1/ diffusiondb-large-part-2/ | metadata-large.parquet |
png ; Les images dans DiffFusionDB Large utilisent un format webp sans perte. Nous utilisons une structure de fichiers modularisée pour distribuer DIFFUSIONDB. Les 2 millions d'images dans Diffusiondb 2M sont divisées en 2 000 dossiers, où chaque dossier contient 1 000 images et un fichier JSON qui relie ces 1 000 images à leurs invites et hyperparamètres. De même, les 14 millions d'images dans DiffusionDB Large sont divisées en 14 000 dossiers.
# 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 Ces sous-plier ont des noms part-0xxxxx , et chaque image a un nom unique généré par UUID version 4. Le fichier JSON dans un sous-dossier a le même nom que le sous-dossier. Chaque image est un fichier PNG (diffusiondb 2m) ou un fichier WebP sans perte (diffusiondb grand). Le fichier JSON contient des paires de paires de valeurs clés de cartographie des noms de fichiers d'image à leurs invites et hyperparamètres. Par exemple, ci-dessous l'image de f3501e05-aef7-4225-a9e9-f516527408ac.png et sa paire de valeurs clés dans 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 "
},
}Les champs de données sont:
p : Invitese : graines aléatoiresc : Échelle CFG (échelle d'orientation)st : marchessa : échantillonneur Pour vous aider à accéder facilement aux invites et à d'autres attributs d'images sans télécharger tous les fichiers zip, nous incluons deux tables de métadonnées metadata.parquet et metadata-large.parquet pour diffusiondb 2m et diffusiondb grande, respectivement.
La forme de metadata.parquet est (2000000, 13) et la forme de metatable-large.parquet est (14000000, 13). Deux tables partagent le même schéma et chaque ligne représente une image. Nous stockons ces tables au format Parquet car le parquet est basé sur une colonne: vous pouvez interroger efficacement les colonnes individuelles (par exemple, invites) sans lire la table entière.
Vous trouverez ci-dessous trois lignes aléatoires de metadata.parquet .
| Image_name | rapide | part_id | graine | étape | CFG | échantillonneur | largeur | hauteur | nom d'utilisateur | horodatage | image_nsfw | prompt_nsfw |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0C46F719-1679-4C64-9BA9-F181E0EAE811.png | Une petite sculpture liquide, Corvette, visqueuse, réfléchissante et numérique | 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 | Sculpture humaine d'un grand extraterre | 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 de Barbaric Spanish Conquistador, Symétrique, par Yoichi Hatakenaka, Studio Ghibli et Dan Mumford | 286 | 1713292358 | 50 | 7 | 8 | 512 | 640 | 1C2E93CFB1430ADBD956BE9C690705FE295CBEE7D9AC12DE1953CE5E76D89906 | 2022-08-12 03: 26: 00 + 00: 00 | 0,0773138 | 0,0249675 |
metadata.parquet et metatable-large.parquet partagent le même schéma.
| Colonne | Taper | Description |
|---|---|---|
image_name | string | Image UUID Nom de fichier. |
prompt | string | L'invite de texte utilisée pour générer cette image. |
part_id | uint16 | ID de dossier de cette image. |
seed | uint32 | Graines aléatoires utilisées pour générer cette image. |
step | uint16 | Nombre d'étapes (hyperparamètre). |
cfg | float32 | Échelle d'orientation (hyperparamètre). |
sampler | uint8 | Méthode de l'échantillonneur (hyperparamètre). Mappage: {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 | Largeur d'image. |
height | uint16 | Hauteur de l'image. |
user_name | string | Le hachage SHA256 de l'ID Discord unique de l'utilisateur qui a généré cette image. Par exemple, le hachage de xiaohk#3146 est e285b7ef63be99e9107cecd79b280bde602f17e0ca8363cb7a0889b67f0b5ed0 . "Deleted_Account" se référer aux utilisateurs qui ont supprimé leurs comptes. Aucun signifie que l'image a été supprimée avant de la gratter pour la deuxième fois. |
timestamp | timestamp | Horodatage UTC lorsque cette image a été générée. Aucun signifie que l'image a été supprimée avant de la gratter pour la deuxième fois. Notez que l'horodatage n'est pas précis pour les images en double qui ont la même invite, les hypareparameters, la largeur, la hauteur. |
image_nsfw | float32 | La probabilité d'une image étant NSFW. Les scores sont prédits par le détecteur NSFW de pointe de LAION (varie de 0 à 1). Un score de 2.0 signifie que l'image a déjà été signalée sous forme de NSFW et floue par diffusion stable. |
prompt_nsfw | float32 | La probabilité d'une invite étant NSFW. Les scores sont prédits par la détoxicie de la bibliothèque. Chaque score représente le maximum de toxicity et sexual_explicit (varie de 0 à 1). |
Avertissement Bien que le modèle de diffusion stable ait un filtre NSFW qui brouille automatiquement les images NSFW générées par l'utilisateur, ce filtre NSFW n'est pas parfait - DiffusionDB contient toujours des images NSFW. Par conséquent, nous calculons et fournissons les scores NSFW pour les images et les invites à l'aide des modèles de pointe. La distribution de ces scores est indiquée ci-dessous. Veuillez décider d'un seuil de score NSFW approprié pour filtrer les images NSFW avant d'utiliser DIFFUSIONDB dans vos projets.
DiffFusionDB est grand (1,6 To ou 6,5 To)! Cependant, avec notre structure de fichiers modularisée, vous pouvez facilement charger un nombre souhaitable d'images et leurs invites et hyperparamètres. Dans le carnet example-loading.ipynb , nous démontrons trois méthodes pour charger un sous-ensemble de diffusiondb. Vous trouverez ci-dessous un court résumé.
Vous pouvez utiliser la bibliothèque Datasets Hugging Face pour charger facilement les invites et les images de DiffFusionDB. Nous avons prédéfini 16 sous-ensembles diffuntsdb (configurations) en fonction du nombre d'instances. Vous pouvez voir tous les sous-ensembles dans l'aperçu de l'ensemble de données.
Remarque Pour utiliser le chargeur de jeux de données, vous devez également installer
Pillow(pip install Pillow)
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' ) Ce dépôt comprend un téléchargeur Python download.py qui vous permet de télécharger et de charger diffusiondb. Vous pouvez l'utiliser à partir de votre ligne de commande. Vous trouverez ci-dessous un exemple de chargement d'un sous-ensemble de diffusiondb.
Le script est exécuté à l'aide d'arguments de ligne de commande comme suit:
-i --index - Fichier à télécharger ou à borner inférieur d'une plage de fichiers si -r est également défini.-r --range - Bound supérieur de la gamme de fichiers à télécharger si -i est défini.-o --output - Nom du répertoire de sortie personnalisé. Par défaut, le répertoire actuel s'il n'est pas défini.-z --unzip - Décompressez le fichier / fichiers après le téléchargement-l --large - Télécharger à partir de diffusion db grand. Par défaut, diffusion DB 2M. Le fichier spécifique à télécharger est fourni comme numéro à la fin du fichier sur Huggingface. Le script remplira automatiquement le nombre et générera l'URL.
python download.py -i 23 Les limites supérieures et inférieures de l'ensemble de fichiers à télécharger sont définies respectivement par les drapeaux -i et -r .
python download.py -i 1 -r 2000Notez que cette gamme téléchargera l'intégralité de l'ensemble de données. Le script vous demandera de confirmer que vous avez 1,7 To gratuit à la destination de téléchargement.
Le script sera par défaut à l'emplacement de la part de DataSet Files .zip Files sur images/ . Si vous souhaitez déplacer l'emplacement de téléchargement, vous devez également déplacer ces fichiers ou utiliser un lien symbolique.
python download.py -i 1 -r 2000 -o /home/ $USER /datahoarding/etc Encore une fois, le script ajoutera automatiquement le / entre le répertoire et le fichier lors de son téléchargement.
Le script est défini pour décompresser les fichiers une fois que tous les fichiers ont téléchargés car les deux peuvent être de longs processus dans certaines circonstances.
python download.py -i 1 -r 2000 -zmetadata.parquet (texte uniquement) Si votre tâche ne nécessite pas d'images, vous pouvez facilement accéder aux 2 millions d'invites et hyperparamètres dans la table metadata.parquet .
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' ) Nous avons collecté toutes les images du serveur de discorde de diffusion stable officiel. Veuillez lire notre document de recherche pour plus de détails. Le code est inclus dans ./scripts/ .
Si vous trouvez des images ou des invites nocives dans DiffusionDB, vous pouvez utiliser ce formulaire Google pour les signaler. De même, si vous êtes un créateur d'une image incluse dans cet ensemble de données, vous pouvez utiliser le même formulaire pour nous faire savoir si vous souhaitez supprimer votre image de DiffusionDB. Nous surveillerons de près ce formulaire et mettrons à jour diffusiondb périodiquement.
Diffusiondb est créé par Jay Wang, Evan Montoya, David Munechika, Alex Yang, Ben Hoover, Polo 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 }
}L'ensemble de données DIFFUSEDB est disponible sous la licence CC0 1.0. Le code Python de ce référentiel est disponible sous la licence MIT.
Si vous avez des questions, n'hésitez pas à ouvrir un problème ou à contacter Jay Wang.