見出し画像

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枚用意してみました。

今回使った画像

後はファインチューニング実行してのんびり待ちます。
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を選択します。

何も設定していなければ「*」で指定できるはずなのでprimptを"a photo of *"などにすると、それっぽいのが出てきます。

girl with black hair. .style * で試したもの。

・詰まった部分とか
正しいやり方かはわかりませんが、とりあえずこれで動きました。

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 . を実行。



この記事が気に入ったらサポートをしてみませんか?