Proyek ini menunjukkan cara menyempurnakan model difusi stabil pada dataset Anda sendiri.
Catatan: Skrip ini bersifat eksperimental. Script menyempurnakan seluruh model dan sering kali model overfits dan mengalami masalah seperti lupa bencana. Disarankan untuk mencoba hyperparamters yang berbeda untuk mendapatkan hasil terbaik pada dataset Anda.
Sebelum menjalankan skrip, pastikan untuk menginstal dependensi pelatihan perpustakaan (seperti Pytorch dan? Transformers):
git clone https://github.com/huggingface/diffusers
cd diffusers
pip install .Lalu jalankan
cd ..
pip install -r requirements.txtDan menginisialisasi lingkungan percepatan dengan:
accelerate config Maka Anda harus mengunduh model difusi stabil pretrained menggunakan model_download.py :
python model_download.py --repo_id runwayml/stable-diffusion-v1-5
# If you cannot connect to huggingface, you should use the following command:
python model_download.py --repo_id runwayml/stable-diffusion-v1-5 --mirrorUntuk menyempurnakan model difusi stabil pada dataset Anda sendiri, Anda perlu menyiapkan dataset Anda dalam format berikut:
Pertama buat direktori dataset di direktori root, dan Anda harus membuat tiga jpg subdirektori, hint , dan train . Di direktori jpg , Anda harus meletakkan semua gambar target dalam dataset Anda. Dalam Direktori hint , Anda harus meletakkan semua gambar sumber (gambar kondisi) di dataset Anda. Di direktori train , Anda harus meletakkan metadata.jsonl . metadata.jsonl harus dalam format berikut:
{ "jpg" : " ./dataset/jpg/<name_of_target_image_1> " , "txt" : " <prompt_1> " , "hint" : " ./dataset/hint/<name_of_source_image_1> " }
{ "jpg" : " ./dataset/jpg/<name_of_target_image_2> " , "txt" : " <prompt_2> " , "hint" : " ./dataset/hint/<name_of_source_image_1> " }
… Berikut adalah struktur direktori dataset :
dataset
├── hint
│ ├── a.png
│ ├── b.png
│ └── c.png
├── jpg
│ ├── a.png
│ ├── b.png
│ └── c.png
└── train
└── metadata.jsonl Dalam file metadata.jsonl :
{ "jpg" : " ./dataset/jpg/a.png " , "txt" : " a " , "hint" : " ./dataset/hint/a.png " }
{ "jpg" : " ./dataset/jpg/b.png " , "txt" : " b " , "hint" : " ./dataset/hint/b.png " }
{ "jpg" : " ./dataset/jpg/c.png " , "txt" : " c " , "hint" : " ./dataset/hint/c.png " }Untuk melatih model Lora, jalankan:
./train_lora.sh Anda dapat mengubah beberapa hyperparameters dalam file run_lora.sh . Misalnya, Anda dapat mengubah --num_train_epochs untuk mengubah jumlah zaman pelatihan.
Untuk melatih model ControlNet, jalankan:
./train_controlnet.sh Anda dapat mengubah beberapa hyperparameters dalam file run_controlnet.sh . Misalnya, Anda dapat mengubah --num_train_epochs untuk mengubah jumlah zaman pelatihan.
Untuk melatih ControlNet dan Lora pada saat yang sama, jalankan:
./train_controlnet_and_lora.shPerhatikan bahwa Anda harus mengubah direktori output model ControlNet dan Lora untuk memulai pelatihan Anda sendiri.
Jalankan saja:
./train_lora.sh && ./train_controlnet.sh && ./train_controlnet_and_lora.sh Anda akan mendapatkan semua model di direktori controlnet-lora-output .
Anda dapat mengubah jalur model dan gambar kondisi dalam file inference.py . Kemudian jalankan:
python inference.py Dan Anda akan mendapatkan output.png di direktori root.
Proyek ini didasarkan pada diffuser dan contohnya.