
DiffusionDB는 최초의 대규모 텍스트-이미지 프롬프트 데이터 세트입니다. 여기에는 실제 사용자가 지정한 프롬프트 및 하이퍼 파라미터를 사용하여 안정적인 확산으로 생성 된 1400 만 개의 이미지가 포함되어 있습니다. 이 인간-행동 데이터 세트의 전례없는 규모와 다양성은 프롬프트와 생성 모델 간의 상호 작용을 이해하고, 심해를 감지하며, 사용자가 이러한 모델을보다 쉽게 사용할 수 있도록 휴먼 -AI 상호 작용 도구를 설계 할 수있는 흥미로운 연구 기회를 제공합니다.
diffusionDB에서 사용할 수 있습니까? 포옹 얼굴 데이터 세트.
DiffusionDB는 다른 요구를 지원하기 위해 두 개의 서브 세트 (DiffusionDB 2M 및 DiffusionDB Large)를 제공합니다.
| 서브 세트 | 이미지의 수 | 독특한 프롬프트의 수 | 크기 | 이미지 디렉토리 | 메타 데이터 테이블 |
|---|---|---|---|---|---|
| 확산 DB 2M | 2m | 1.5m | 1.6TB | images/ | metadata.parquet |
| diffusiondb 큰 | 14m | 1.8m | 6.5TB | diffusiondb-large-part-1/ diffusiondb-large-part-2/ | metadata-large.parquet |
png 형식으로 저장됩니다. DiffusionDB의 이미지는 무한 webp 형식을 사용합니다. 모듈화 된 파일 구조를 사용하여 DiffusionDB를 배포합니다. DiffusionDB 2m의 2 백만 이미지는 2,000 폴더로 분할되며, 각 폴더에는 1,000 개의 이미지 와이 1,000 개의 이미지를 프롬프트 및 하이퍼 파라미터에 연결하는 JSON 파일이 포함되어 있습니다. 마찬가지로, DiffusionDB Large의 1,400 만 이미지는 14,000 개의 폴더로 나뉩니다.
# 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 의 키 값 쌍의 이미지입니다.
{
"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 : 샘플러 모든 zip 파일을 다운로드하지 않고도 프롬프트 및 기타 이미지 속성에 쉽게 액세스 할 수 있도록 DiffusionDB 2M 및 DiffusionDB의 큰 경우 메타 데이터 테이블 metadata.parquet 및 metadata-large.parquet 포함되어 있습니다.
metadata.parquet 의 모양은 (200000, 13)이며, metatable-large.parquet 의 모양은 (14000000, 13)입니다. 두 테이블은 동일한 스키마를 공유하고 각 행은 이미지를 나타냅니다. 오랫동안 매파가 열 기반이기 때문에이 테이블을 오르막 형식으로 저장합니다. 전체 테이블을 읽지 않고 개별 열 (예 : 프롬프트)을 효율적으로 쿼리 할 수 있습니다.
아래는 metadata.parquet 의 3 개의 임의 행입니다.
| image_name | 즉각적인 | part_id | 씨앗 | 단계 | CFG | 샘플러 | 너비 | 키 | user_name | 타임 스탬프 | image_nsfw | Prompt_nsfw |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0C46F719-1679-4C64-9BA9-F181E0EAE811.png | 작은 액체 조각, 코르벳, 점성, 반사, 디지털 아트 | 1050 | 2026845913 | 50 | 7 | 8 | 512 | 512 | C2F288A2BA9DF65C38386FFAAF7749106FED29311835B63D578405DB9DBCAFDB | 2022-08-11 09 : 05 : 00+00 : 00 | 0.0845108 | 0.00383462 |
| A00BDEAA-14EB-4F6C-A303-9773217777777ae9.png | 웃는 여자, 멋진 레스토랑, 사진, 보케와 함께 이탈리아 레스토랑에서 낭만적 인 데이트에 낭만적 인 데이트에 랭키 키 큰 외계인의 인간 조각 | 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 | 야만적 인 스페인 정복자의 초상화, 대칭 적, 요이 하 켄나 카, 스튜디오 지브리 및 댄 맘 포드 | 286 | 1713292358 | 50 | 7 | 8 | 512 | 640 | 1C2E93CFB1430ADBD956BE9C690705FE295CBEE7D9AC12DE1953CE5E76D89906 | 2022-08-12 03 : 26 : 00+00 : 00 | 0.0773138 | 0.0249675 |
metadata.parquet 및 metatable-large.parquet 동일한 스키마를 공유합니다.
| 열 | 유형 | 설명 |
|---|---|---|
image_name | string | 이미지 UUID 파일 이름. |
prompt | string | 텍스트 프롬프트는이 이미지를 생성하는 데 사용되었습니다. |
part_id | uint16 | 이 이미지의 폴더 ID. |
seed | uint32 | 이 이미지를 생성하는 데 사용되는 임의의 종자. |
step | uint16 | 스텝 카운트 (하이퍼 파라미터). |
cfg | float32 | 지침 척도 (과수기 동물). |
sampler | uint8 | 샘플러 방법 (하이퍼 파라미터). 매핑 : {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 | 이미지 너비. |
height | uint16 | 이미지 높이. |
user_name | string | 이 이미지를 생성 한 사용자의 고유 한 Discord ID의 SHA256 해시. 예를 들어, xiaohk#3146 의 해시는 e285b7ef63be99e9107cecd79b280bde602f17e0ca8363cb7a0889b67f0b5ed0 입니다. "deleted_account"는 계정을 삭제 한 사용자를 말합니다. 아무도 이미지가 두 번째로 긁히기 전에 이미지가 삭제되었음을 의미합니다. |
timestamp | timestamp | UTC 타임 스탬프이 이미지가 생성되었을 때. 아무도 이미지가 두 번째로 긁히기 전에 이미지가 삭제되었음을 의미합니다. 타임 스탬프는 동일한 프롬프트, hypareparameters, 너비, 높이를 가진 중복 이미지의 경우 정확하지 않습니다. |
image_nsfw | float32 | 이미지가 NSFW 일 가능성. 점수는 Laion의 최첨단 NSFW 검출기 (0 ~ 1)에 의해 예측됩니다. 2.0 점수는 이미지가 이미 NSFW로 표시되고 안정적인 확산에 의해 흐려 졌음을 의미합니다. |
prompt_nsfw | float32 | NSFW 인 프롬프트의 가능성. 점수는 라이브러리 해독에 의해 예측됩니다. 각 점수는 toxicity 의 최대 값과 sexual_explicit (0 ~ 1)을 나타냅니다. |
경고 안정적인 확산 모델에는 사용자 생성 NSFW 이미지를 자동으로 흐리게하는 NSFW 필터가 있지만이 NSFW 필터는 완벽하지 않습니다. DiffusionDB에는 여전히 일부 NSFW 이미지가 포함되어 있습니다. 따라서 최신 모델을 사용하여 이미지 및 프롬프트에 대한 NSFW 점수를 계산하고 제공합니다. 이 점수의 분포는 다음과 같습니다. 프로젝트에서 DiffusionDB를 사용하기 전에 NSFW 이미지를 필터링하기 위해 적절한 NSFW 점수 임계 값을 결정하십시오.
DiffusionDB는 크다 (1.6TB 또는 6.5TB)! 그러나 모듈화 된 파일 구조를 사용하면 바람직한 수의 이미지와 해당 프롬프트 및 하이퍼 파라미터를 쉽게로드 할 수 있습니다. example-loading.ipynb 노트북에서, 우리는 diffusiondb의 서브 세트를로드하는 세 가지 방법을 보여줍니다. 아래는 짧은 요약입니다.
Hugging Face Datasets 라이브러리를 사용하여 DiffusionDB의 프롬프트 및 이미지를 쉽게로드 할 수 있습니다. 인스턴스 수에 따라 16 개의 diffusionDB 서브 세트 (구성)를 사전 정의했습니다. 데이터 세트 미리보기의 모든 서브 세트를 볼 수 있습니다.
DataSets Loader를 사용하려면
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' ) 이 repo에는 DiffusionDB를 다운로드하고로드 할 수있는 Python Downloader download.py 포함되어 있습니다. 명령 줄에서 사용할 수 있습니다. 아래는 DiffusionDB의 서브 세트를로드하는 예입니다.
스크립트는 다음과 같이 명령 줄 인수를 사용하여 실행됩니다.
-i --index 파일을 다운로드하거나 -r 도 설정된 경우 파일 범위의 범위를 낮추십시오.-r - --range -i 설정된 경우 다운로드 할 파일 범위의 상한.-o --output 사용자 정의 출력 디렉토리의 이름. 설정되지 않은 경우 현재 디렉토리로 기본값이 있습니다.-z --unzip 다운로드 후 파일/파일을 압축 해제합니다-l --large 확산 db 큰에서 다운로드. 기본값 확산 DB 2M. 다운로드 할 특정 파일은 HuggingFace의 파일 끝에있는 번호로 제공됩니다. 스크립트는 자동으로 숫자를 패드하고 URL을 생성합니다.
python download.py -i 23 다운로드 할 파일 세트의 상한 및 하한은 각각 -i 및 -r 플래그에 의해 설정됩니다.
python download.py -i 1 -r 2000이 범위는 전체 데이터 세트를 다운로드합니다. 스크립트는 다운로드 대상에서 1.7TB가 없는지 확인하도록 요청합니다.
스크립트는 images/ 에서 데이터 세트의 part .zip 파일의 위치로 기본값을받습니다. 다운로드 위치를 이동하려면 이러한 파일도 이동하거나 상징적 링크를 사용해야합니다.
python download.py -i 1 -r 2000 -o /home/ $USER /datahoarding/etc 다시, 스크립트는 다운로드 할 때 디렉토리와 파일 사이의 / 자동으로 추가합니다.
스크립트는 모든 파일이 특정 상황에서 긴 프로세스 일 수 있으므로 모든 파일이 다운로드 한 후 파일을 압축하도록 설정되었습니다.
python download.py -i 1 -r 2000 -zmetadata.parquet 사용 (텍스트 만 해당) 작업에 이미지가 필요하지 않은 경우 metadata.parquet 테이블에서 2 백만 개의 프롬프트와 하이퍼 파라미터에 쉽게 액세스 할 수 있습니다.
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' ) 공식 안정 확산 불화 서버에서 모든 이미지를 수집했습니다. 자세한 내용은 연구 논문을 읽으십시오. 코드는 ./scripts/ 에 포함되어 있습니다.
DiffusionDB에서 유해한 이미지 나 프롬프트가있는 경우이 Google 양식을 사용하여보고 할 수 있습니다. 마찬가지로,이 데이터 세트에 포함 된 이미지의 제작자 인 경우 동일한 양식을 사용하여 DiffusionDB에서 이미지를 제거하려는 경우 알려주십시오. 이 양식을 면밀히 모니터링하고 DiffusionDB를 주기적으로 업데이트합니다.
DiffusionDB는 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 }
}DiffusionDB 데이터 세트는 CC0 1.0 라이센스로 제공됩니다. 이 저장소의 Python 코드는 MIT 라이센스로 제공됩니다.
궁금한 점이 있으시면 문제를 열거나 Jay Wang에 문의하십시오.