
DiffusionDB es el primer conjunto de datos de solicitud de texto a imagen a gran escala. Contiene 14 millones de imágenes generadas por difusión estable utilizando indicaciones e hiperparámetros especificados por usuarios reales. La escala y la diversidad sin precedentes de este conjunto de datos activados por humanos brindan emocionantes oportunidades de investigación para comprender la interacción entre las indicaciones y los modelos generativos, la detección de infartos y el diseño de herramientas de interacción Human-AI para ayudar a los usuarios a usar estos modelos más fácilmente.
DiffusionDB está disponible en? Abrazando conjuntos de datos de cara.
DiffusionDB proporciona dos subconjuntos (DiffusionDB 2M y DiffusionDB grande) para soportar diferentes necesidades.
| Subconjunto | Número de imágenes | Número de indicaciones únicas | Tamaño | Directorio de imágenes | Mesa de metadatos |
|---|---|---|---|---|---|
| DiffusionDB 2m | 2m | 1,5 m | 1.6tb | images/ | metadata.parquet |
| DiffusionDB grande | 14m | 1.8m | 6.5tb | diffusiondb-large-part-1/ diffusiondb-large-part-2/ | metadata-large.parquet |
png ; Imágenes en DiffusionDB grande Use un formato webp sin pérdidas. Utilizamos una estructura de archivo modularizada para distribuir DiffusionDB. Las 2 millones de imágenes en DiffusionDB 2m se dividen en 2,000 carpetas, donde cada carpeta contiene 1,000 imágenes y un archivo JSON que vincula estas 1,000 imágenes con sus indicaciones e hiperparámetros. Del mismo modo, las 14 millones de imágenes en DiffusionDB grande se dividen en 14,000 carpetas.
# 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 Estos subcarpetas tienen nombres part-0xxxxx , y cada imagen tiene un nombre único generado por UUID versión 4. El archivo JSON en un subcarporto tiene el mismo nombre que el Sub-Hoiler. Cada imagen es un archivo PNG (DiffusionDB 2M) o un archivo WebP sin pérdidas (DiffusionDB grande). El archivo JSON contiene pares de valor clave de mapeo de nombres de archivos de imagen a sus indicaciones e hiperparametros. Por ejemplo, a continuación se encuentra la imagen de f3501e05-aef7-4225-a9e9-f516527408ac.png y su par de valores clave en 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 "
},
}Los campos de datos son:
p : avisose : semilla aleatoriac : Escala CFG (Escala de orientación)st : Pasossa : Sampler Para ayudarlo a acceder fácilmente a las indicaciones y otros atributos de las imágenes sin descargar todos los archivos ZIP, incluimos dos tablas de metadatos metadata.parquet y metadata-large.parquet Large.
La forma de metadata.parquet es (2000000, 13) y la forma de metatable-large.parquet es (14000000, 13). Dos tablas comparten el mismo esquema, y cada fila representa una imagen. Almacenamos estas tablas en el formato Parquet porque el parquet está basado en columnas: puede consultar de manera eficiente columnas individuales (por ejemplo, indicaciones) sin leer la tabla completa.
A continuación hay tres filas aleatorias de metadata.parquet . Parquet.
| Image_Name | inmediato | parte_id | semilla | paso | CFG | dechado | ancho | altura | nombre de usuario | marca de tiempo | image_nsfw | apurn_nsfw |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0C46F719-1679-4C64-9BA9-F181E0EAE811.PNG | Una pequeña escultura líquida, Corvette, Arte Viscoso, Reflexivo y Digital | 1050 | 2026845913 | 50 | 7 | 8 | 512 | 512 | c2f288a2ba9df65c38386ffaaf7749106fed29311835b63d578405db9dbcafdb | 2022-08-11 09: 05: 00+00: 00 | 0.0845108 | 0.00383462 |
| A00BDEAA-14EB-4F6C-A303-97732177AE9.png | Escultura humana de alienígena alta y larguirucho en una cita romántica en el restaurante italiano con mujer sonriente, buen restaurante, fotografía, 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 | Retrato de conquistador español bárbaro, simétrico, por Yoichi Hatakenaka, Studio Gibli y Dan Mumford | 286 | 1713292358 | 50 | 7 | 8 | 512 | 640 | 1C2E93CFB1430ADBD956BE9C690705FE295CBEE7D9AC12DE1953CE5E76D89906 | 2022-08-12 03: 26: 00+00: 00 | 0.0773138 | 0.0249675 |
metadata.parquet y metatable-large.parquet compartir el mismo esquema.
| Columna | Tipo | Descripción |
|---|---|---|
image_name | string | Imagen UUID FileName. |
prompt | string | El mensaje de texto utilizado para generar esta imagen. |
part_id | uint16 | ID de carpeta de esta imagen. |
seed | uint32 | Semilla aleatoria utilizada para generar esta imagen. |
step | uint16 | Recuento de pasos (hiperparámetro). |
cfg | float32 | Escala de orientación (hiperparámetro). |
sampler | uint8 | Método de muestras (hiperparámetro). Mapeo: {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 | Ancho de imagen. |
height | uint16 | Altura de la imagen. |
user_name | string | El hash SHA256 de la ID de Discords de Discord del usuario que generó esta imagen. Por ejemplo, el hash para xiaohk#3146 es e285b7ef63be99e9107cecd79b280bde602f17e0ca8363cb7a0889b67f0b5ed0 . "Deleted_account" consulte a los usuarios que han eliminado sus cuentas. Ninguno significa que la imagen se ha eliminado antes de que la rasguemos por segunda vez. |
timestamp | timestamp | UTC TimeStamp cuando se generó esta imagen. Ninguno significa que la imagen se ha eliminado antes de que la rasguemos por segunda vez. Tenga en cuenta que la marca de tiempo no es precisa para las imágenes duplicadas que tienen el mismo aviso, hipoparametros, ancho, altura. |
image_nsfw | float32 | Probabilidad de que una imagen sea NSFW. Los puntajes se predicen por el detector NSFW de última generación de Laion (rango de 0 a 1). Una puntuación de 2.0 significa que la imagen ya ha sido marcada como NSFW y borrosa por difusión estable. |
prompt_nsfw | float32 | Probabilidad de que un rápido sea NSFW. Los puntajes son predicho por la desintoxicación de la biblioteca. Cada puntaje representa el máximo de toxicity y sexual_explicit (rango de 0 a 1). |
Advertencia Aunque el modelo de difusión estable tiene un filtro NSFW que desdibuja automáticamente las imágenes NSFW generadas por el usuario, este filtro NSFW no es perfecto: DiffusionDB todavía contiene algunas imágenes NSFW. Por lo tanto, calculamos y proporcionamos los puntajes NSFW para imágenes y indicaciones utilizando los modelos de última generación. La distribución de estos puntajes se muestra a continuación. Decide un umbral de puntaje NSFW apropiado para filtrar las imágenes NSFW antes de usar DiffusionDB en sus proyectos.
¡DiffusionDB es grande (1.6tb o 6.5 TB)! Sin embargo, con nuestra estructura de archivos modularizado, puede cargar fácilmente un número deseable de imágenes y sus indicaciones e hiperparámetros. En el cuaderno example-loading.ipynb , demostramos tres métodos para cargar un subconjunto de difusiónDB. A continuación se muestra un breve resumen.
Puede usar la biblioteca Datasets de abrazaderas para abrazar fácilmente las indicaciones e imágenes de DiffusionDB. Prefinimos 16 subconjuntos (configuraciones) de DiffusionDB en función del número de instancias. Puede ver todos los subconjuntos en la vista previa del conjunto de datos.
Nota Para usar el cargador de conjuntos de datos, también debe instalar
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' ) Este repositorio incluye un Python Downloader download.py que le permite descargar y cargar DiffusionDB. Puede usarlo desde su línea de comando. A continuación se muestra un ejemplo de carga de un subconjunto de difusiónDB.
El script se ejecuta utilizando argumentos de línea de comandos de la siguiente manera:
-i --index -archivo para descargar o inferior límite de una gama de archivos si -r también está configurado.-r - --range -límite superior del rango de archivos para descargar si -i está configurado.-o --output -Nombre del directorio de salida personalizado. El valor predeterminado al directorio actual si no está configurado.-z --unzip -descomprima el archivo/archivos después de descargar-l --large -Large -Descargar desde Diffusion DB grande. El valor predeterminado a la difusión DB 2m. El archivo específico para descargar se suministra como el número al final del archivo en Huggingface. El script se enfrentará automáticamente al número y generará la URL.
python download.py -i 23 Los límites superiores e inferiores del conjunto de archivos para descargar están establecidos por los indicadores -i y -r respectivamente.
python download.py -i 1 -r 2000Tenga en cuenta que este rango descargará todo el conjunto de datos. El script le pedirá que confirme que tiene 1.7TB gratis en el destino de descarga.
El script predeterminará la ubicación de la part del conjunto de datos .zip archivos en images/ . Si desea mover la ubicación de descarga, debe mover estos archivos también o usar un enlace simbólico.
python download.py -i 1 -r 2000 -o /home/ $USER /datahoarding/etc Nuevamente, el script agregará automáticamente el / entre el directorio y el archivo cuando se descarga.
El script está configurado para descomponer los archivos después de que todos los archivos se hayan descargado, ya que ambos pueden ser procesos largos en ciertas circunstancias.
python download.py -i 1 -r 2000 -zmetadata.parquet (solo texto) Si su tarea no requiere imágenes, puede acceder fácilmente a los 2 millones de indicaciones e hiperparámetros en la tabla 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' ) Recopilamos todas las imágenes del servidor oficial de discordia de difusión estable. Lea nuestro trabajo de investigación para más detalles. El código está incluido en ./scripts/ .
Si encuentra imágenes o indicaciones dañinas en DiffusionDB, puede usar este formulario de Google para informarlas. Del mismo modo, si usted es un creador de una imagen incluida en este conjunto de datos, puede usar la misma forma para informarnos si desea eliminar su imagen de DiffusionDB. Monitorearemos de cerca este formulario y actualizaremos la difusión DB periódicamente.
DiffusionDB es creado por 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 }
}El conjunto de datos DiffusionDB está disponible bajo la licencia CC0 1.0. El código Python en este repositorio está disponible bajo la licencia MIT.
Si tiene alguna pregunta, no dude en abrir un problema o comunicarse con Jay Wang.