該項目顯示瞭如何在您自己的數據集中微調穩定擴散模型。
注意:此腳本是實驗性的。該腳本微調整個模型,並且經常會使模型過度貼合,並遇到災難性遺忘之類的問題。建議嘗試不同的超級參數以在數據集中獲得最佳結果。
在運行腳本之前,請確保安裝庫的培訓依賴項(例如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要在自己的數據集上微調穩定的擴散模型,您需要以以下格式準備數據集:
首先,在Root Directory中創建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 " }訓練洛拉模型,運行:
./train_lora.sh您可以在run_lora.sh文件中更改一些超參數。例如,您可以更改--num_train_epochs更改訓練時期的數量。
要訓練控製網絡模型,請運行:
./train_controlnet.sh您可以在run_controlnet.sh文件中更改一些超參數。例如,您可以更改--num_train_epochs更改訓練時期的數量。
要同時訓練ControlNet和Lora,請運行:
./train_controlnet_and_lora.sh請注意,您應該更改ControlNet和Lora模型的輸出目錄,以開始自己的培訓。
只是運行:
./train_lora.sh && ./train_controlnet.sh && ./train_controlnet_and_lora.sh您將在controlnet-lora-output目錄中獲取所有模型。
您可以更改inference.py文件中模型的路徑和條件圖像。然後運行:
python inference.py您將在根目錄中獲得output.png 。
該項目基於擴散器及其示例。