
DifusionDB adalah dataset prompt teks-ke-gambar skala besar pertama. Ini berisi 14 juta gambar yang dihasilkan oleh difusi stabil menggunakan prompt dan hiperparameter yang ditentukan oleh pengguna nyata. Skala dan keragaman yang belum pernah terjadi sebelumnya dari dataset yang digerakkan manusia ini memberikan peluang penelitian yang menarik dalam memahami interaksi antara petunjuk dan model generatif, mendeteksi Deepfake, dan merancang alat interaksi manusia-AI untuk membantu pengguna dengan lebih mudah menggunakan model ini.
DifusionDB tersedia di? Dataset Wajah Memeluk.
DifusionDB menyediakan dua himpunan bagian (DifusionDB 2M dan difusionDB besar) untuk mendukung kebutuhan yang berbeda.
| Subset | Jumlah gambar | Jumlah permintaan unik | Ukuran | Direktori Gambar | Tabel metadata |
|---|---|---|---|---|---|
| DifusionDB 2M | 2m | 1.5m | 1.6TB | images/ | metadata.parquet |
| Difusiondb Besar | 14m | 1.8m | 6.5TB | diffusiondb-large-part-1/ diffusiondb-large-part-2/ | metadata-large.parquet |
png ; Gambar dalam DifusionDB Besar Gunakan format webp lossless. Kami menggunakan struktur file modularisasi untuk mendistribusikan difusionDB. 2 juta gambar dalam DifusionDB 2M dibagi menjadi 2.000 folder, di mana setiap folder berisi 1.000 gambar dan file JSON yang menautkan 1.000 gambar ini dengan petunjuk dan hiperparameter mereka. Demikian pula, 14 juta gambar dalam DifusionDB besar dibagi menjadi 14.000 folder.
# 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 Sub-folder ini memiliki nama part-0xxxxx , dan setiap gambar memiliki nama unik yang dihasilkan oleh UUID versi 4. File JSON dalam sub-folder memiliki nama yang sama dengan sub-folder. Setiap gambar adalah file PNG (DifusionDB 2M) atau file WebP lossless (difusionDB besar). File JSON berisi nama file gambar pemetaan pemetaan pemetaan ke kunci untuk petunjuk dan hiperparameter mereka. Misalnya, di bawah ini adalah gambar f3501e05-aef7-4225-a9e9-f516527408ac.png dan pasangan nilai kunci di 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 "
},
}Bidang data adalah:
p : Promptse : Benih acakc : Skala CFG (skala panduan)st : Langkahsa : Sampler Untuk membantu Anda dengan mudah mengakses petunjuk dan atribut gambar lainnya tanpa mengunduh semua file zip, kami menyertakan dua tabel metadata metadata.parquet dan metadata-large.parquet untuk difusi 2m dan difusi, masing-masing besar.
Bentuk metadata.parquet adalah (2000000, 13) dan bentuk metatable-large.parquet adalah (14000000, 13). Dua tabel berbagi skema yang sama, dan setiap baris mewakili gambar. Kami menyimpan tabel-tabel ini dalam format parket karena parket berbasis kolom: Anda dapat secara efisien menanyakan kolom individual (misalnya, prompt) tanpa membaca seluruh tabel.
Di bawah ini adalah tiga baris acak dari metadata.parquet .
| gambar_name | mengingatkan | part_id | benih | melangkah | CFG | Sampler | lebar | tinggi | nama belakang | cap waktu | image_nsfw | prompt_nsfw |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0C46F719-1679-4C64-9BA9-F181E0EAE811.PNG | Patung cair kecil, corvette, kental, reflektif, seni 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-97732177AEE9.PNG | Patung manusia alien tinggi kurus pada kencan romantis di restoran Italia dengan wanita yang tersenyum, restoran yang bagus, fotografi, 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 | Potret Conquistador Spanyol Barbar, Simetris, oleh Yoichi HataKakaka, Studio Ghibli dan Dan Mumford | 286 | 1713292358 | 50 | 7 | 8 | 512 | 640 | 1C2E93CFB1430ADBD956BE9C690705FE295CBEE7D9AC12DE1953CE5E76D89906 | 2022-08-12 03: 26: 00+00: 00 | 0.0773138 | 0.0249675 |
metadata.parquet dan metatable-large.parquet berbagi skema yang sama.
| Kolom | Jenis | Keterangan |
|---|---|---|
image_name | string | Gambar file uuid uuid. |
prompt | string | Prompt teks yang digunakan untuk menghasilkan gambar ini. |
part_id | uint16 | ID folder gambar ini. |
seed | uint32 | Benih acak digunakan untuk menghasilkan gambar ini. |
step | uint16 | Hitungan Langkah (HyperParameter). |
cfg | float32 | Skala panduan (hyperparameter). |
sampler | uint8 | Metode sampler (hyperparameter). Pemetaan: {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 | Lebar gambar. |
height | uint16 | Tinggi gambar. |
user_name | string | Hash SHA256 SHA256 yang unik dari pengguna yang menghasilkan gambar ini. Misalnya, hash untuk xiaohk#3146 adalah e285b7ef63be99e9107cecd79b280bde602f17e0ca8363cb7a0889b67f0b5ed0 . "Deleted_account" lihat pengguna yang telah menghapus akun mereka. Tidak ada yang berarti gambar telah dihapus sebelum kita mengikisnya untuk kedua kalinya. |
timestamp | timestamp | Timestamp UTC saat gambar ini dihasilkan. Tidak ada yang berarti gambar telah dihapus sebelum kita mengikisnya untuk kedua kalinya. Perhatikan bahwa cap waktu tidak akurat untuk duplikat gambar yang memiliki prompt yang sama, hypareparameters, lebar, tinggi. |
image_nsfw | float32 | Kemungkinan gambar menjadi NSFW. Skor diprediksi oleh detektor NSFW canggih Laion (kisaran 0 hingga 1). Skor 2.0 berarti gambar telah ditandai sebagai NSFW dan kabur dengan difusi yang stabil. |
prompt_nsfw | float32 | Kemungkinan prompt menjadi NSFW. Skor diprediksi oleh perpustakaan detoksi. Setiap skor mewakili maksimum toxicity dan sexual_explicit (kisaran dari 0 hingga 1). |
Peringatan Meskipun model difusi yang stabil memiliki filter NSFW yang secara otomatis mengaburkan gambar NSFW yang dibuat pengguna, filter NSFW ini tidak sempurna-DifusionDB masih berisi beberapa gambar NSFW. Oleh karena itu, kami menghitung dan menyediakan skor NSFW untuk gambar dan diminta menggunakan model canggih. Distribusi skor ini ditunjukkan di bawah ini. Silakan tentukan ambang batas skor NSFW yang sesuai untuk memfilter gambar NSFW sebelum menggunakan DifusionDB dalam proyek Anda.
DifusionDB besar (1.6TB atau 6.5 TB)! Namun, dengan struktur file modularisasi kami, Anda dapat dengan mudah memuat sejumlah gambar yang diinginkan dan petunjuk serta hiperparameternya. Dalam notebook example-loading.ipynb , kami menunjukkan tiga metode untuk memuat subset difusionDB. Di bawah ini adalah ringkasan singkat.
Anda dapat menggunakan perpustakaan Datasets Wajah Memeluk untuk dengan mudah memuat petunjuk dan gambar dari DifusionDB. Kami telah ditentukan sebelumnya 16 himpunan bagianDB (konfigurasi) berdasarkan jumlah instance. Anda dapat melihat semua himpunan bagian dalam pratinjau dataset.
Catatan untuk menggunakan dataset loader, Anda harus memasang
Pillowjuga (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' ) Repo ini termasuk python downloader download.py yang memungkinkan Anda mengunduh dan memuat difusi. Anda dapat menggunakannya dari baris perintah Anda. Di bawah ini adalah contoh memuat subset difusionDB.
Skrip dijalankan menggunakan argumen baris perintah sebagai berikut:
-i --index -File untuk mengunduh atau batas bawah dari berbagai file jika -r juga ditetapkan.-r --range -batas atas rentang file untuk diunduh jika -i diatur.-o --output -Nama direktori output khusus. Default ke direktori saat ini jika tidak diatur.-z --unzip -Buka zip file/file setelah diunduh-l --large -unduh dari difusi db besar. Default untuk difusi DB 2M. File spesifik untuk diunduh disediakan sebagai nomor di akhir file di HuggingFace. Script akan secara otomatis mengajukan nomor dan menghasilkan URL.
python download.py -i 23 Batas atas dan bawah dari set file yang akan diunduh masing -masing diatur oleh bendera -i dan -r .
python download.py -i 1 -r 2000Perhatikan bahwa rentang ini akan mengunduh seluruh dataset. Script akan meminta Anda untuk mengonfirmasi bahwa Anda memiliki 1.7TB gratis di tujuan unduhan.
Script akan default ke lokasi bagian .zip part dataset pada images/ . Jika Anda ingin memindahkan lokasi unduhan, Anda harus memindahkan file -file ini juga atau menggunakan tautan simbolis.
python download.py -i 1 -r 2000 -o /home/ $USER /datahoarding/etc Sekali lagi, skrip akan secara otomatis menambahkan / antara direktori dan file saat mengunduh.
Script diatur untuk membuka ritsleting file setelah semua file diunduh karena keduanya dapat menjadi proses yang panjang dalam keadaan tertentu.
python download.py -i 1 -r 2000 -zmetadata.parquet (hanya teks) Jika tugas Anda tidak memerlukan gambar, maka Anda dapat dengan mudah mengakses semua 2 juta petunjuk dan hiperparameter di tabel 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' ) Kami mengumpulkan semua gambar dari server Discord difusi stabil resmi. Silakan baca makalah penelitian kami untuk detailnya. Kode ini termasuk dalam ./scripts/ .
Jika Anda menemukan gambar atau petunjuk berbahaya di DifusionDB, Anda dapat menggunakan formulir Google ini untuk melaporkannya. Demikian pula, jika Anda adalah pencipta gambar yang termasuk dalam dataset ini, Anda dapat menggunakan formulir yang sama untuk memberi tahu kami jika Anda ingin menghapus gambar Anda dari DifusionDB. Kami akan memantau formulir ini dengan cermat dan memperbarui DiffusionDB secara berkala.
DifusionDB diciptakan oleh 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 }
}Dataset DifusionDB tersedia di bawah lisensi CC0 1.0. Kode Python dalam repositori ini tersedia di bawah lisensi MIT.
Jika Anda memiliki pertanyaan, jangan ragu untuk membuka masalah atau hubungi Jay Wang.