Этот проект показывает, как тонкая настройка стабильной диффузионной модели на своем собственном наборе данных.
Примечание: этот сценарий экспериментальный. Скрипт тонко настраивает всю модель, и часто модель переполняет и сталкивается с такими проблемами, как катастрофическое забывание. Рекомендуется попробовать разные гиперпарамтерии, чтобы получить наилучший результат в вашем наборе данных.
Прежде чем запустить сценарии, обязательно установите зависимости обучения библиотеки (например, 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, запустите:
./train_lora.sh Вы можете изменить некоторые гиперпараметры в файле run_lora.sh . Например, вы можете изменить --num_train_epochs , чтобы изменить количество тренировочных эпох.
Чтобы тренировать модель ControlNet, запустите:
./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 в корневом каталоге.
Этот проект основан на диффузорах и его примерах.