![見出し画像](https://assets.st-note.com/production/uploads/images/86142023/rectangle_large_type_2_40ef9c7739c327bf8196aaab7fe93564.png?width=800)
Stable Diffusionで絵柄の学習試したメモ
Stable Diffusionに絵柄覚えさせられるっぽいので学習と、GUI版で使ってみたメモ
学習はgoogle colab proで行っています。
基本はnpakaさんの記事を参考に使ってみました。
1 準備
上のnpakaさんの記事を参考に、google cloabで設定していきます。
ドライブ内にフォルダが作られたら、
textual_inversion/configs/stable-diffusion/v1-finetune.yamlの設定値を変更します。
そのままだとGPUメモリ20GBほど必要だけど、v1-finetune.yamlの設定値変えたら10GBほどなので、google colabのpro版だと動きます。
first_stage_config:
target: ldm.models.autoencoder.AutoencoderKL
params:
embed_dim: 4
monitor: val/rec_loss
ddconfig:
double_z: true
z_channels: 4
resolution: 256 #変える場所
data:
target: main.DataModuleFromConfig
params:
batch_size: 1 #変える場所
num_workers: 2 #変える場所
lightning:
callbacks:
image_logger:
target: main.ImageLogger
params:
batch_frequency: 100000 #変える場所
max_images: 1 #変える場所
追記:あとは何の微調整するかの箇所を書き換えます。
personalization_config:
target: ldm.modules.embedding_manager.EmbeddingManager
params:
placeholder_strings: ["*"]
initializer_words: ["sculpture"] #変える場所
画像ファイルをtextual_inversion/inputsに配置します。
今回はこんな感じの5枚用意してみました。
![](https://assets.st-note.com/img/1662199288633-jFCDvavLcE.png?width=800)
後はファインチューニング実行してのんびり待ちます。
GPUメモリが足りないって出てきたら、設定ファイルの方で下げた項目更に下げたりします。
後は時間がかかるので、のんびり待ちます。
私が試してる状態だと、Average Epoch time: 460.48 secondsとなってるので、20epochまでだと2時間半くらいはかかります。
・途中で止まったときに復帰方法
/logs/inputs[日付文字列]_FINETUNEのフォルダに途中の状況が残っているので、そこから復帰します。
フォルダ内にある、embeddings.ptが最後のステップの埋め込みファイルで、last.ckptが最後のエポックのトレーニング チェックポイントです。
!python3 main.py \
--base ./configs/stable-diffusion/v1-finetune.yaml \
-t --no-test \
--actual_resume ./checkpoint/sd-v1-4-full-ema.ckpt \
--gpus 0, \
--data_root ./inputs \
--project ./logs/inputs2022-09-03T10-00-27_FINETUNE \ #inputs2022-09-03T10-00-27_FINETUNEは作られたフォルダ名に変える
--embedding_manager_ckpt ./logs/inputs2022-09-03T10-00-27_FINETUNE/checkpoints/embeddings.pt \ #inputs2022-09-03T10-00-27_FINETUNEは作られたフォルダ名に変える
--resume_from_checkpoint ./logs/inputs2022-09-03T10-00-27_FINETUNE/checkpoints/last.ckpt #inputs2022-09-03T10-00-27_FINETUNEは作られたフォルダ名に変える
2 NMKD Stable Diffusion GUIでの使い方
logs/inputs[日付文字列]_FINETUNE/checkpoints/embeddings.ptをダウンロードします。
load Embeddingから、ダウンロードしたembeddings.ptを選択します。
![](https://assets.st-note.com/img/1662208175523-7sfn4HZona.png?width=800)
何も設定していなければ「*」で指定できるはずなのでprimptを"a photo of *"などにすると、それっぽいのが出てきます。
![](https://assets.st-note.com/img/1662215026359-qsKpC2O7nw.png?width=800)
・詰まった部分とか
正しいやり方かはわかりませんが、とりあえずこれで動きました。
You must restart the runtime in order to use newly installed versions. が出たら
ランタイム→ランタイムの再起動
再起動後は同じように最初から実行していきます。
attributeerror 'int' object has no attribute 'strip' python
gpusに,をつけて--gpus 0,にする。
ModuleNotFoundError: No module named 'ldm'
!pip install -e . を実行。
この記事が気に入ったらサポートをしてみませんか?