BleachNick's picture
upload required packages
87d40d2

A newer version of the Gradio SDK is available: 5.9.1

Upgrade

ν•™μŠ΅μ„ μœ„ν•œ 데이터셋 λ§Œλ“€κΈ°

Hub μ—λŠ” λͺ¨λΈ κ΅μœ‘μ„ μœ„ν•œ λ§Žμ€ 데이터셋이 μžˆμ§€λ§Œ, 관심이 μžˆκ±°λ‚˜ μ‚¬μš©ν•˜κ³  싢은 데이터셋을 찾을 수 μ—†λŠ” 경우 πŸ€— Datasets 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터셋을 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. 데이터셋 κ΅¬μ‘°λŠ” λͺ¨λΈμ„ ν•™μŠ΅ν•˜λ €λŠ” μž‘μ—…μ— 따라 λ‹¬λΌμ§‘λ‹ˆλ‹€. κ°€μž₯ 기본적인 데이터셋 κ΅¬μ‘°λŠ” unconditional 이미지 생성과 같은 μž‘μ—…μ„ μœ„ν•œ 이미지 λ””λ ‰ν† λ¦¬μž…λ‹ˆλ‹€. 또 λ‹€λ₯Έ 데이터셋 κ΅¬μ‘°λŠ” 이미지 디렉토리와 text-to-image 생성과 같은 μž‘μ—…μ— ν•΄λ‹Ήν•˜λŠ” ν…μŠ€νŠΈ μΊ‘μ…˜μ΄ ν¬ν•¨λœ ν…μŠ€νŠΈ 파일일 수 μžˆμŠ΅λ‹ˆλ‹€.

이 κ°€μ΄λ“œμ—λŠ” 파인 νŠœλ‹ν•  데이터셋을 λ§Œλ“œλŠ” 두 가지 방법을 μ†Œκ°œν•©λ‹ˆλ‹€:

  • 이미지 폴더λ₯Ό --train_data_dir μΈμˆ˜μ— μ œκ³΅ν•©λ‹ˆλ‹€.
  • 데이터셋을 Hub에 μ—…λ‘œλ“œν•˜κ³  데이터셋 리포지토리 idλ₯Ό --dataset_name μΈμˆ˜μ— μ „λ‹¬ν•©λ‹ˆλ‹€.

πŸ’‘ ν•™μŠ΅μ— μ‚¬μš©ν•  이미지 데이터셋을 λ§Œλ“œλŠ” 방법에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 이미지 데이터셋 λ§Œλ“€κΈ° κ°€μ΄λ“œλ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

폴더 ν˜•νƒœλ‘œ 데이터셋 κ΅¬μΆ•ν•˜κΈ°

Unconditional 생성을 μœ„ν•΄ 이미지 ν΄λ”λ‘œ μžμ‹ μ˜ 데이터셋을 ꡬ좕할 수 μžˆμŠ΅λ‹ˆλ‹€. ν•™μŠ΅ μŠ€ν¬λ¦½νŠΈλŠ” πŸ€— Datasets의 ImageFolder λΉŒλ”λ₯Ό μ‚¬μš©ν•˜μ—¬ μžλ™μœΌλ‘œ ν΄λ”μ—μ„œ 데이터셋을 κ΅¬μΆ•ν•©λ‹ˆλ‹€. 디렉토리 κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό κ°™μ•„μ•Ό ν•©λ‹ˆλ‹€ :

data_dir/xxx.png
data_dir/xxy.png
data_dir/[...]/xxz.png

데이터셋 λ””λ ‰ν„°λ¦¬μ˜ 경둜λ₯Ό --train_data_dir 인수둜 μ „λ‹¬ν•œ λ‹€μŒ ν•™μŠ΅μ„ μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

accelerate launch train_unconditional.py \
    # argument둜 폴더 μ§€μ •ν•˜κΈ° \
    --train_data_dir <path-to-train-directory> \
    <other-arguments>

Hub에 데이터 올리기

πŸ’‘ 데이터셋을 λ§Œλ“€κ³  Hub에 μ—…λ‘œλ“œν•˜λŠ” 것에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ πŸ€— Datasets을 μ‚¬μš©ν•œ 이미지 검색 κ²Œμ‹œλ¬Όμ„ μ°Έκ³ ν•˜μ„Έμš”.

PIL μΈμ½”λ”©λœ 이미지가 ν¬ν•¨λœ 이미지 열을 μƒμ„±ν•˜λŠ” 이미지 폴더 κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ 데이터셋 생성을 μ‹œμž‘ν•©λ‹ˆλ‹€.

data_dir λ˜λŠ” data_files 맀개 λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ λ°μ΄ν„°μ…‹μ˜ μœ„μΉ˜λ₯Ό 지정할 수 μžˆμŠ΅λ‹ˆλ‹€. data_files λ§€κ°œλ³€μˆ˜λŠ” νŠΉμ • νŒŒμΌμ„ train μ΄λ‚˜ test 둜 λΆ„λ¦¬ν•œ 데이터셋에 λ§€ν•‘ν•˜λŠ” 것을 μ§€μ›ν•©λ‹ˆλ‹€:

from datasets import load_dataset

# μ˜ˆμ‹œ 1: 둜컬 폴더
dataset = load_dataset("imagefolder", data_dir="path_to_your_folder")

# μ˜ˆμ‹œ 2: 둜컬 파일 (지원 포맷 : tar, gzip, zip, xz, rar, zstd)
dataset = load_dataset("imagefolder", data_files="path_to_zip_file")

# μ˜ˆμ‹œ 3: 원격 파일 (지원 포맷 : tar, gzip, zip, xz, rar, zstd)
dataset = load_dataset(
    "imagefolder",
    data_files="https://download.microsoft.com/download/3/E/1/3E1C3F21-ECDB-4869-8368-6DEBA77B919F/kagglecatsanddogs_3367a.zip",
)

# μ˜ˆμ‹œ 4: μ—¬λŸ¬κ°œλ‘œ λΆ„ν• 
dataset = load_dataset(
    "imagefolder", data_files={"train": ["path/to/file1", "path/to/file2"], "test": ["path/to/file3", "path/to/file4"]}
)

[push_to_hub(https://huggingface.co/docs/datasets/v2.13.1/en/package_reference/main_classes#datasets.Dataset.push_to_hub) 을 μ‚¬μš©ν•΄μ„œ Hub에 데이터셋을 μ—…λ‘œλ“œ ν•©λ‹ˆλ‹€:

# ν„°λ―Έλ„μ—μ„œ huggingface-cli login μ»€λ§¨λ“œλ₯Ό 이미 μ‹€ν–‰ν–ˆλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€
dataset.push_to_hub("name_of_your_dataset")

# 개인 repo둜 push ν•˜κ³  μ‹Άλ‹€λ©΄, `private=True` 을 μΆ”κ°€ν•˜μ„Έμš”:
dataset.push_to_hub("name_of_your_dataset", private=True)

이제 데이터셋 이름을 --dataset_name μΈμˆ˜μ— μ „λ‹¬ν•˜μ—¬ 데이터셋을 ν•™μŠ΅μ— μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

accelerate launch --mixed_precision="fp16"  train_text_to_image.py \
  --pretrained_model_name_or_path="runwayml/stable-diffusion-v1-5" \
  --dataset_name="name_of_your_dataset" \
  <other-arguments>

λ‹€μŒ 단계

데이터셋을 μƒμ„±ν–ˆμœΌλ‹ˆ 이제 ν•™μŠ΅ 슀크립트의 train_data_dir (데이터셋이 둜컬이면) ν˜Ήμ€ dataset_name (Hub에 데이터셋을 올렸으면) μΈμˆ˜μ— μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒ λ‹¨κ³„μ—μ„œλŠ” 데이터셋을 μ‚¬μš©ν•˜μ—¬ unconditional 생성 λ˜λŠ” ν…μŠ€νŠΈ-이미지 생성을 μœ„ν•œ λͺ¨λΈμ„ ν•™μŠ΅μ‹œμΌœλ³΄μ„Έμš”!