โครงการนี้แสดงวิธีปรับแต่งรูปแบบการแพร่กระจายที่เสถียรในชุดข้อมูลของคุณเอง
หมายเหตุ: สคริปต์นี้เป็นการทดลอง สคริปต์ปรับแต่งทั้งแบบจำลองและบ่อยครั้งที่โมเดล overfits และพบปัญหาเช่นการลืมหายนะ ขอแนะนำให้ลองใช้ hyperparamters ที่แตกต่างกันเพื่อให้ได้ผลลัพธ์ที่ดีที่สุดในชุดข้อมูลของคุณ
ก่อนที่จะเรียกใช้สคริปต์ตรวจสอบให้แน่ใจว่าได้ติดตั้งการฝึกอบรมการฝึกอบรมของห้องสมุด (เช่น Pytorch และ? Transformers):
git clone https://github.com/huggingface/diffusers
cd diffusers
pip install .จากนั้นวิ่ง
cd ..
pip install -r requirements.txtและเริ่มต้น?
accelerate config จากนั้นคุณควรดาวน์โหลดรูปแบบการแพร่กระจายที่เสถียรโดยใช้ 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 --mirrorในการปรับแต่งรูปแบบการแพร่กระจายที่เสถียรในชุดข้อมูลของคุณเองคุณต้องเตรียมชุดข้อมูลของคุณในรูปแบบต่อไปนี้:
ประการแรกสร้างไดเรกทอรี dataset ในไดเรกทอรีรูทและคุณควรสร้างไดเรกทอรีย่อยสามไดเรกทอรี jpg hint และ train ในไดเรกทอรี jpg คุณควรใส่ภาพเป้าหมายทั้งหมดไว้ในชุดข้อมูลของคุณ ในไดเรกทอรี hint คุณควรใส่ภาพต้นทางทั้งหมด (ภาพเงื่อนไข) ในชุดข้อมูลของคุณ ในไดเรกทอรี train คุณควรใส่ metadata.jsonl metadata.jsonl ควรอยู่ในรูปแบบต่อไปนี้:
{ "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> " }
… นี่คือโครงสร้างของไดเรกทอรี dataset :
dataset
├── hint
│ ├── a.png
│ ├── b.png
│ └── c.png
├── jpg
│ ├── a.png
│ ├── b.png
│ └── c.png
└── train
└── metadata.jsonl ในไฟล์ 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 " }ในการฝึกอบรมแบบจำลอง Lora, Run:
./train_lora.sh คุณสามารถเปลี่ยนพารามิเตอร์ hyperparameters ในไฟล์ run_lora.sh ตัวอย่างเช่นคุณสามารถเปลี่ยน --num_train_epochs เพื่อเปลี่ยนจำนวนการฝึกอบรม
ในการฝึกอบรมโมเดล Controlnet ให้เรียกใช้:
./train_controlnet.sh คุณสามารถเปลี่ยน hyperparameters บางอย่างในไฟล์ run_controlnet.sh ตัวอย่างเช่นคุณสามารถเปลี่ยน --num_train_epochs เพื่อเปลี่ยนจำนวนการฝึกอบรม
เพื่อฝึกอบรม Controlnet และ Lora ในเวลาเดียวกัน Run:
./train_controlnet_and_lora.shโปรดทราบว่าคุณควรเปลี่ยนไดเรกทอรีผลลัพธ์ของโมเดล ControlNet และ Lora เพื่อเริ่มการฝึกอบรมของคุณเอง
แค่วิ่ง:
./train_lora.sh && ./train_controlnet.sh && ./train_controlnet_and_lora.sh คุณจะได้รับทุกรุ่นในไดเร็กทอรี controlnet-lora-output
คุณสามารถเปลี่ยนเส้นทางของโมเดลและภาพเงื่อนไขในไฟล์ inference.py .py จากนั้นเรียกใช้:
python inference.py และคุณจะได้รับ output.png ในไดเรกทอรีรูท
โครงการนี้ขึ้นอยู่กับ diffusers และเป็นตัวอย่าง