記事の概要
これまで、SD 1.5のdreamboothは実施してきたが、SDXLモデルのdreamboothを試したことがなかったので、試した手順を記載しておく。
dreamboothで人物を学習すれば、細かいプロンプトの指定無しで、同じ人物の出力が容易になる。
また、SDXLであれば絵柄が崩れることなく、FHD(1920×1080)の画像の出力が可能になっている。
動画でも解説してます。
環境
OS:Windows 11
GPU:GeForce RTX 4090
CPU:i9-13900KF
memory:64G
python:3.10.10
pytorch:2.0.1
CUDA:11.8
cuDNN:8.8
sd-webui: v1.7.0
dreambooth: v1.13.0
環境構築
Stable Diffusion WebUIの環境が準備できている前提とします。
「Extensions」>「Available」>「Load From:」を押下し、検索窓に「dreambooth」と記載すると、「Dreambooth」が表示されるので、「install」を押下する。(キャプチャでは「installed」になっていますが、インストールが完了していない場合は、「install」となっているはずです。)
「Extensions」>「Installed」を押下し、「sd_dreambooth_extension」が存在していることを確認する。
「sd_dreambooth_extension」があれば、「Apply and restart UI」を押下する。(webuiが再起動されます。)
学習(train)手順
dreamboothのインストールが完了していれば、「Dreambooth」タブが表示されているはずです。
「Model」>「Create」
Settingsの「Model」>「Create」を押下する。
以下の項目を入力し、「Create Model」を押下する。
・Name:任意の文字列(今回は「sample1」)
・Model Type:SDXL
・Source Checkpoint:学習元のモデル
「stable-diffusion-webui\models\dreambooth」フォルダに、「Name」に記載した名前でフォルダが作成されている。
「Model」>「Select」
Settingsの「Model」>「Select」を押下すると、先程作成したフォルダ名が表示される。
「Concepts」
「Concept 1」>「Instance Images」を押下し、必要事項を入力する。
・Directory:学習データのフォルダを指定
・Prompt:学習後のモデルのイメージを指定(指定する理由が分からない)
・Instance Token:意味のない文字列を指定
・Class Token:学習後のモデルから離れすぎていない単語を指定
※ここの記載の詳細は、以下のページを参考にしてください。
「Concept 1」>「Class Images」を押下し、必要事項を入力する。
・Directory:学習データのフォルダを指定(「Instance Images」との違いは分からない)
・Prompt:学習後のモデルのイメージを指定(指定する理由が分からない)
・Negative Prompt:必要であればネガティブプロンプトを指定
・Class Images Per Instance Image:基本的には「1」を指定
「Parameters」>「Intervals」
Settingsの「Parameters」>「Intervals」を押下する。
以下の項目のパラメータを変更する。
・Training Steps Per Image (Epochs):1000Epochs
「Parameters」>「Learning Rate」
Settingsの「Parameters」>「Learning Rate」を押下する。
以下の項目のパラメータを変更する。
・Learning Rate:0.000005
「Save Settings」
「Save Settings」を押下し、これまでの設定を保存する。
「Train」
学習結果
今回の設定であれば、7時間程度で学習が完了する。
サンプル生成画像も、学習データにかなり近づいている。
「stable-diffusion-webui\models\Stable-diffusion」フォルダに、「Name」で指定したフォルダが新規で作成され、その中に学習済みモデルが保存される。