このプロジェクトは、独自のデータセットで安定した拡散モデルを微調整する方法を示しています。
注:このスクリプトは実験的です。スクリプトはモデル全体を微調整し、多くの場合、モデルが乱暴になり、壊滅的な忘却のような問題に遭遇します。データセットで最良の結果を得るために、さまざまなハイパーパランターを試してみることをお勧めします。
スクリプトを実行する前に、ライブラリのトレーニング依存関係(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ディレクトリを作成すると、3つのサブディレクトリjpg 、 hint 、およびtrainを作成する必要があります。 jpgディレクトリでは、すべてのターゲット画像をデータセットに配置する必要があります。 hintディレクトリでは、すべてのソース画像(条件画像)をデータセットに配置する必要があります。 train Directoryでは、 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を変更して、トレーニングエポックの数を変更できます。
コントロールネットモデルをトレーニングするには、実行します。
./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 Directoryですべてのモデルを取得します。
モデルのパスと条件イメージをinference.pyファイルで変更できます。その後、実行:
python inference.pyルートディレクトリでoutput.png取得します。
このプロジェクトはディフューザーに基づいており、その例です。