Este projeto mostra como ajustar o modelo de difusão estável no seu próprio conjunto de dados.
Nota: Este script é experimental. O script financia todo o modelo e, muitas vezes, o modelo é sobrepensado e entra em questões como esquecimento catastrófico. É recomendável experimentar diferentes hiperparamters para obter o melhor resultado no seu conjunto de dados.
Antes de executar os scripts, instale as dependências de treinamento da biblioteca (como Pytorch e? Transformers):
git clone https://github.com/huggingface/diffusers
cd diffusers
pip install .Em seguida, corra
cd ..
pip install -r requirements.txtE inicialize um ambiente? Acelerar com:
accelerate config Em seguida, você deve baixar o modelo de difusão estável pré -criada usando 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 --mirrorPara ajustar o modelo de difusão estável no seu próprio conjunto de dados, você precisa preparar seu conjunto de dados no seguinte formato:
Em primeiro lugar, crie o diretório dataset no diretório raiz e você deve criar três jpg , hint e train de subdiretório. No diretório jpg , você deve colocar todas as imagens de destino no seu conjunto de dados. No diretório hint , você deve colocar todas as imagens de origem (imagens de condição) no seu conjunto de dados. No diretório train , você deve colocar um metadata.jsonl . Os metadata.jsonl devem estar no seguinte formato:
{ "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> " }
… Aqui está a estrutura do diretório dataset :
dataset
├── hint
│ ├── a.png
│ ├── b.png
│ └── c.png
├── jpg
│ ├── a.png
│ ├── b.png
│ └── c.png
└── train
└── metadata.jsonl No arquivo 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 " }Para treinar o modelo Lora, execute:
./train_lora.sh Você pode alterar alguns hiperparâmetros no arquivo run_lora.sh . Por exemplo, você pode alterar --num_train_epochs para alterar o número de épocas de treinamento.
Para treinar o modelo ControlNet, execute:
./train_controlnet.sh Você pode alterar alguns hiperparâmetros no arquivo run_controlnet.sh . Por exemplo, você pode alterar --num_train_epochs para alterar o número de épocas de treinamento.
Para treinar ControlNet e Lora ao mesmo tempo, execute:
./train_controlnet_and_lora.shObserve que você deve alterar o diretório de saída do Modelo ControlNet e Lora para iniciar seu próprio treinamento.
Apenas corra:
./train_lora.sh && ./train_controlnet.sh && ./train_controlnet_and_lora.sh Você obterá todos os modelos no diretório controlnet-lora-output .
Você pode alterar o caminho do modelo e a imagem da condição no arquivo inference.py . Em seguida, corra:
python inference.py E você obterá output.png no diretório raiz.
Este projeto é baseado em difusores e são exemplos.