
DiffusionDB ist der erste groß angelegte Text-zu-Image-Eingabeaufforderungsdatensatz. Es enthält 14 Millionen Bilder, die durch stabile Diffusion unter Verwendung von Eingabeaufforderungen und Hyperparametern erzeugt werden, die von realen Benutzern angegeben wurden. Die beispiellose Skala und Vielfalt dieses von Menschen betriebenen Datensatzes bieten aufregende Forschungsmöglichkeiten beim Verständnis des Zusammenspiels zwischen Eingabeaufforderungen und generativen Modellen, dem Erkennen von Deepfakes und dem Entwerfen von Human-AI-Interaktionstools, mit denen Benutzer diese Modelle leichter verwenden können.
DiffusionDB ist bei erhältlich? Umarme Gesichtsdatensätze.
DiffusionDB liefert zwei Untergruppen (DiffusionDB 2M und DiffusionDB Large), um unterschiedliche Anforderungen zu erfüllen.
| Teilmenge | Anzahl der Bilder | Anzahl der einzigartigen Eingaben | Größe | Bildverzeichnis | Metadatentisch |
|---|---|---|---|---|---|
| Diffusiondb 2m | 2m | 1,5 m | 1.6 TB | images/ | metadata.parquet |
| Diffusiondb groß | 14m | 1,8 m | 6,5 TB | diffusiondb-large-part-1/ diffusiondb-large-part-2/ | metadata-large.parquet |
png -Format gespeichert; Bilder in DiffusionDB Large verwenden ein verlustfreies webp -Format. Wir verwenden eine modularisierte Dateistruktur, um DiffusionDB zu verteilen. Die 2 Millionen Bilder in DiffusionDB 2M werden in 2.000 Ordner aufgeteilt, wobei jeder Ordner 1.000 Bilder und eine JSON -Datei enthält, die diese 1.000 Bilder mit ihren Eingabeaufforderungen und Hyperparametern verknüpft. In ähnlicher Weise werden die 14 Millionen Bilder in DiffusionDB groß in 14.000 Ordner aufgeteilt.
# 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 Diese Unterbeordner haben Namen part-0xxxxx , und jedes Bild hat einen eindeutigen Namen, der von UUID-Version 4 generiert wird. Die JSON-Datei in einem Unterordner hat denselben Namen wie der Unterordner. Jedes Bild ist eine PNG -Datei (DiffusionDB 2M) oder eine verlustfreie WebP -Datei (DiffusionDB Large). Die JSON-Datei enthält Key-Wert-Paare-Mapping-Bilddateinamen zu ihren Eingabeaufforderungen und Hyperparametern. Zum Beispiel finden Sie das Bild von f3501e05-aef7-4225-a9e9-f516527408ac.png und seinem Schlüsselwertpaar in 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 "
},
}Die Datenfelder sind:
p : Eingabeaufforderungse : Zufallssamenc : CFG -Skala (Leitlinienskala)st : Schrittesa : Sampler Damit Sie leicht auf Eingabeaufangaben und andere Attribute von Bildern zugreifen können, ohne alle Zip-Dateien herunterzuladen, enthalten wir zwei Metadaten- metadata.parquet und metadata-large.parquet für DiffusionDB 2M bzw. DiffusionDB Large.
Die Form der metadata.parquet ist (Parquet) (2000000, 13) und die Form des metatable-large.parquet ist (14000000, 13). Zwei Tabellen teilen das gleiche Schema, und jede Zeile repräsentiert ein Bild. Wir speichern diese Tabellen im Parquetformat, da das Parquet auf Spaltenbasiert ist: Sie können einzelne Spalten (z. B. Eingabeaufforderungen) effizient abfragen, ohne die gesamte Tabelle zu lesen.
Unten finden Sie drei zufällige Zeilen von metadata.parquet . Parquet.
| Image_Name | prompt | part_id | Samen | Schritt | CFG | Sampler | Breite | Höhe | user_name | Zeitstempel | Image_nsfw | forderung_nsfw |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0c46f719-1679-4c64-9ba9-F181E0eae811.png | Eine kleine flüssige Skulptur, Corvette, viskose, reflektierende, digitale Kunst | 1050 | 2026845913 | 50 | 7 | 8 | 512 | 512 | C2F288A2BA9DF65C38386FFAAF7749106FED29311835B63D578405DB9DBCAFDB | 2022-08-11 09: 05: 00+00: 00 | 0,0845108 | 0,00383462 |
| A00BDEAA-14EB-4F6C-A303-977321777EAE9.PNG | menschliche Skulptur von schlaksigen hohen Alien auf einem romantischen Date im italienischen Restaurant mit lächelnder Frau, schönes Restaurant, Fotografie, Bokeh | 905 | 1183522603 | 50 | 10 | 8 | 512 | 768 | DF778E253E6D32168EB22279A9776B3CDE107CC82DA055517DD6D114724918651 | 2022-08-19 17: 55: 00+00: 00 | 0,692934 | 0,109437 |
| 6E5024CE-65ED-47F3-B296-EDB2813E3C5B.PNG | Porträt der barbarischen spanischen Conquistador, symmetrisch, von Yoichi Hittakenaka, Studio Ghibli und Dan Mumford | 286 | 1713292358 | 50 | 7 | 8 | 512 | 640 | 1C2E93CFB1430ADBD956BE9C690705FE295CBEE7D9AC12DE1953CE5E76D89906 | 2022-08-12 03: 26: 00+00: 00 | 0,0773138 | 0,0249675 |
metadata.parquet und metatable-large.parquet teilen das gleiche Schema.
| Spalte | Typ | Beschreibung |
|---|---|---|
image_name | string | Bild uUid Dateiname. |
prompt | string | Die Textaufforderung zum Generieren dieses Bildes. |
part_id | uint16 | Ordner -ID dieses Bildes. |
seed | uint32 | Zufälliger Samen, der verwendet wird, um dieses Bild zu erzeugen. |
step | uint16 | Stufenzahl (Hyperparameter). |
cfg | float32 | Leitlinienskala (Hyperparameter). |
sampler | uint8 | Samplermethode (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 | Bildbreite. |
height | uint16 | Bildhöhe. |
user_name | string | Der SHA256 -Hash des einzigartigen Discord ID des Benutzers, der dieses Bild generiert hat. Zum Beispiel ist der Hash für xiaohk#3146 e285b7ef63be99e9107cecd79b280bde602f17e0ca8363cb7a0889b67f0b5ed0 . "Deleted_account" beziehen sich auf Benutzer, die ihre Konten gelöscht haben. Keiner bedeutet, dass das Bild gelöscht wurde, bevor wir es zum zweiten Mal kratzen. |
timestamp | timestamp | UTC -Zeitstempel, wenn dieses Bild generiert wurde. Keiner bedeutet, dass das Bild gelöscht wurde, bevor wir es zum zweiten Mal kratzen. Beachten Sie, dass der Zeitstempel für doppelte Bilder mit derselben Eingabeaufforderung, Hypareparametern, Breite, Höhe nicht genau ist. |
image_nsfw | float32 | Wahrscheinlichkeit, dass ein Bild NSFW ist. Die Bewertungen werden durch Laions hochmodernes NSFW-Detektor (Bereich von 0 bis 1) vorhergesagt. Eine Punktzahl von 2,0 bedeutet, dass das Bild bereits als NSFW gekennzeichnet und durch stabile Diffusion verwischt wurde. |
prompt_nsfw | float32 | Wahrscheinlichkeit, dass eine schnelle NSFW ist. Die Bewertungen werden durch die Entgiftung der Bibliothek vorhergesagt. Jede Punktzahl stellt das Maximum der toxicity und sexual_explicit dar (Bereich von 0 bis 1). |
Warnung Obwohl das stabile Diffusionsmodell einen NSFW-Filter hat, der automatisch benutzergenerierte NSFW-Bilder verwischt, ist dieser NSFW-Filter nicht perfekt-DiffusionDB enthält immer noch einige NSFW-Bilder. Daher berechnen und bieten wir die NSFW-Ergebnisse für Bilder und Eingabeaufforderungen anhand der hochmodernen Modelle. Die Verteilung dieser Bewertungen ist unten gezeigt. Bitte entscheiden Sie einen geeigneten NSFW -Score -Schwellenwert, um NSFW -Bilder herauszufiltern, bevor Sie DiffusionDB in Ihren Projekten verwenden.
DiffusionDB ist groß (1,6 TB oder 6,5 TB)! Mit unserer modularisierten Dateistruktur können Sie jedoch leicht eine wünschenswerte Anzahl von Bildern und ihre Eingabeaufforderungen und Hyperparameter laden. Im Notebook example-loading.ipynb zeigen wir drei Methoden zum Laden einer Untergruppe von DiffusionDB. Unten ist eine kurze Zusammenfassung.
Sie können mit der Umarmungs -Face Datasets -Bibliothek Eingabeaufforderungen und Bilder von DiffusionDB einfach laden. Wir haben 16 DiffusionDB-Teilmengen (Konfigurationen) basierend auf der Anzahl der Instanzen vorgebracht. Sie können alle Teilmengen in der Datensatzvorschau sehen.
HINWEIS Um den Datasets Loader zu verwenden, müssen Sie auch
Pillowinstallieren (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' ) Dieses Repo enthält einen Python Downloader download.py , mit dem Sie DiffusionDB herunterladen und laden können. Sie können es aus Ihrer Befehlszeile verwenden. Nachfolgend finden Sie ein Beispiel für das Laden einer Untergruppe von DiffusionDB.
Das Skript wird wie folgt mit Befehlszeilenargumenten ausgeführt:
-i --index -Datei zum Herunterladen oder Untergrenzen eines Dateienbereichs, wenn -r festgelegt wird.-r --range -Obergrenze des Datumsbereichs zum Herunterladen, wenn -i festgelegt ist.-o --output -Name des benutzerdefinierten Ausgabeverzeichnisses. Standardeinstellungen zum aktuellen Verzeichnis, falls nicht festgelegt.-z --unzip -Entpacken Sie die Datei/Dateien nach dem Herunterladen entpacken-l --large -Download von Diffusion DB Large. Standardeinstellung zu Diffusion DB 2M. Die zum Herunterladen spezifische Datei wird als Nummer am Ende der Datei über das Huggingface geliefert. Das Skript wird automatisch die Nummer herausgeholt und die URL generiert.
python download.py -i 23 Die oberen und unteren Grenzen des heruntergeladenen Dateien werden durch die Flags -i und -r -Flags festgelegt.
python download.py -i 1 -r 2000Beachten Sie, dass dieser Bereich den gesamten Datensatz herunterlädt. Im Skript werden Sie aufgefordert, zu bestätigen, dass Sie am Download -Ziel kostenlos 1.7 TB haben.
Das Skript wird standardmäßig zum Speicherort des part .zip -Dateien des Datensatzes bei images/ . Wenn Sie den Download -Speicherort verschieben möchten, sollten Sie diese Dateien auch verschieben oder einen symbolischen Link verwenden.
python download.py -i 1 -r 2000 -o /home/ $USER /datahoarding/etc Auch hier fügt das Skript beim Download automatisch das / zwischen dem Verzeichnis und der Datei hinzu.
Das Skript wird auf die Entpassung der Dateien eingestellt, nachdem alle Dateien heruntergeladen wurden, da beide unter bestimmten Umständen lange Prozesse sein können.
python download.py -i 1 -r 2000 -zmetadata.parquet (nur Text) Wenn Ihre Aufgabe keine Bilder benötigt, können Sie problemlos auf alle 2 Millionen Eingabeaufforderungen und Hyperparameter in der metadata.parquet -Tabelle zugreifen.
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' ) Wir haben alle Bilder vom offiziellen stabilen Diffusions -Discord -Server gesammelt. Bitte lesen Sie unser Forschungspapier für Einzelheiten. Der Code ist in ./scripts/ enthalten.
Wenn Sie schädliche Bilder oder Eingabeaufforderungen in DiffusionDB finden, können Sie dieses Google -Formular verwenden, um sie zu melden. Wenn Sie ein Ersteller eines in diesem Datensatz enthaltenen Bild sind, können Sie dasselbe Formular verwenden, um uns mitzuteilen, ob Sie Ihr Bild von DiffusionDB entfernen möchten. Wir werden dieses Formular genau überwachen und DiffusionDB regelmäßig aktualisieren.
DiffusionDB wird von Jay Wang, Evan Montoya, David Munechika, Alex Yang, Ben Hoover, Polo Chau geschaffen.
@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 }
}Der DiffusionDB -Datensatz ist unter der CC0 1.0 -Lizenz verfügbar. Der Python -Code in diesem Repository ist im Rahmen der MIT -Lizenz verfügbar.
Wenn Sie Fragen haben, können Sie ein Problem öffnen oder Jay Wang wenden.