Dream Booth

Last-modified: 2023-01-15 (日) 21:58:17

公式解説(英文)
filewords を使用したスタイル トレーニングに関する WIP ガイド。
Dream Boothのメリット】

  • 低品質な学習用画像・数千Stepsでも、お手軽に高画質・高再現性を実現できます。
    • Hyper Networkより、成功率・安定感が高くなっています。
  • 完全再現が目指しやすくなっています。

Dream Boothのデメリット】

  • 1ファイルだけで容量が2~4GBにもなります。
  • 一部promptで表現の幅が狭まり、学習用画像と似たような構図・服装ばかりになります。また反映率が低いか、完全に反映されない場合もあります。
    • 他デメリット解説を開く

      ・特定属性に完全特化して作るものと割り切るか、promptに応じてHyper Networkと使い分けましょう。
      ・完成したHyper Networkは要素を0→10・1→50程度に増幅できますが、Dream Boothは0→3・1→100程度でしょうか。
      ・学習時点でprompt要素がわずかでも備わっているのが望ましいです。

導入方法

トレーニング導入方法

Extensions」タブを開きます。
(このタブ自体が存在しない場合、AUTOMATIC1111を要バージョンアップ)

「Available」タブを開き、そのまま「Load from:」を押します。

Extension欄
「Dreambooth」
から「Install」を押して待ちましょう。

その後WebUIを一度終了後 webui-user.bat に依存関係をインストールするため
「"REQS_FILE=.\extensions\sd_dreambooth_extension\requirements.txt"」を追加

必要スペック

VRAM12GB程度
(トレーニング時「Use CPU Only (SLOW)」にチェックかLORAを使用すれば、おそらくVRAM8GB以下でも可能です)

通常利用方法

フォルダ「models→Stable-diffusion」にckptファイルを入れ、
AUTOMATIC1111上で「Stable Diffusion checkpoint」を更新し選択します。

出力画像が暗いと感じる場合はvaeファイルをコピー・リネームし、同時に読み込みましょう。

  • 「(.ckpt前と同名).vae.pt」を設置
    • 「DB.ckpt」の場合はvaeファイルを「DB.vae.pt」にリネーム
      • パラメーターの設定で学習時vaeのPathを直に指定することが可能になった

0.学習用画像の準備

  • 学習の事前準備
    • 適当な画像でも学習可能ですが、高完成度・完全再現を目指したい場合はしっかり準備しましょう。
  • 正則化画像の準備
    • 学習させたい画像のfilewordを使用してDBのベースになるモデルで生成
      この画像と学習画像の差異がDBで学習したものを示す文字列で呼び出される
      設定した値次第で自動で生成される

1.Dream Booth作成

「Dreambooth」タブを開いた後、「Create Model」タブを開きます。
このタブ自体が存在しない場合、「トレーニング導入方法」を実施してください。

  • 「Name」
    • 分かりやすい名前を自由に入力します。(重複しないように要注意)
  • 「Source Checkpoint」
    • ckptファイルを選択します。愛用しているか、目指す方向性が一致しているものを選びましょう。
      • Dream Boothのckptファイルを選ぶのは基本厳禁です。(上級者向け)
  • 「Scheduler」
    • 「pndm」のままでも一応動きます。(要編集)

2.トレーニング設定

「Model」から生成したものを選択します。
その後、「Train Model」へ移ってください。
公式解説(英文)

  • 「Dataset directory」
    • 加工済の画像を保存したフォルダのパスか、任意の学習元画像が入っているフォルダのパスを書きます。
      • 画像ファイルだけを入れ、txtファイルは入れないでください。
  • 「Classification dataset directory」
    "Class prompt"が入力されていて空欄の場合"/models/dreambooth/MODELNAME/classifiers/"に"Total Number of Class/Reg Images"で設定した枚数が出力される
  • 「Instance Token」
    学習内容を呼び出すための識別子
    モデルが理解できない無意味な文字列で1トークンであることが望ましい(例えば、skz, baa, ozjなど、辞書に存在しない単語を定義する)
    トークン数の多い識別子を使用すると比例して学習時間が伸びる
  • 「Class Token」
    学習させたい内容が大まかにどんな属性を持つのか
    人物の場合 human/man/woman など
    Danbooruタグで学習したモデルを使う場合 girl/boy のほうが向くかも
  • 「Instance prompt」
    インスタンス・プロンプ:学習させたものを指し示す文字列を含んだプロンプト
    犬をトレーニングする場合インスタンス・プロンプトは「photo of zkz dog(zkz犬の写真)」になります。
    [filewords]を使用可能
  • 「Class prompt」
    クラス・プロンプト:サブジェクトの「もの」のタイプを示すキーワード。
    インスタンス・プロンプトが「zkz犬の写真」の場合、クラス・プロンプトは「犬の写真」になります。
    事前保存トレーニングを無効にするには、このフィールドを空白のままにします。
    クラス・プロンプトで[filewords]を使用できます。
    このプロンプトを使用して識別子を含ままい状態でベースにするモデルが生成する正則化画像が生成される
  • 「Classification Image Negative Prompt」
    正則化画像を生成するために使われるネガティブプロンプト
  • 「Sample Image Prompt 」
    空欄でInstance promptを使って生成される
    Instance Promptが短い場合は、an illustration of ???, [filewords]など、指定する必要がある。
  • 「Concepts List」
  • 「Total number of classification images to use. Set to 0 to disable.」
    • 「0」のままか「画像枚数×10」を入力しましょう。
  • 「Training steps」
    • 1000~2000程度で大丈夫です。
      (下記「Learning rate」設定が、デフォルト0.000005の場合)
  • 「Batch Size」
    • 1回あたりの並列実行数
      • 増やすとRAMの使用量が爆発的に増えます
    • 「1」のままで大丈夫です。
      • 2以上にしてもほとんどの場合、ただ処理が重くなります。
  • 「Class Batch Size」
    • 1 promptあたりで生成する正規化画像の枚数(おそらく)
    • 「1」のままでも一応動きます。(要編集)
      • 1 promptで大量に生成すると、学習の結果がどれだけ似ているのか確認しやすいです
  • 「Batch Size」と「Class Batch Size」の補足
    • VRAM 16GBあればBatch Size=4, Class Batch Size=4 (4,4)をギリギリ動かせます
      • (1,1) のときは、1枚あたり12~13秒
      • (4,4) のときは、4枚あたり38~40秒
      • それぞれ4倍にすると1~2割ほど速くなる = 電気消費がとても激しくなる
    • VRAMの容量を超えるBatch Sizeを指定すると落ちます
      • 初期化のときにVRAMを大量に消費してから落ちる
      • (4,4) を実際に動かしているときはVRAMは7GBのみ消費
      • (4,8) ではVRAM 7GB、RAM 41GB
  • 【重要】「Learning rate」
    • 「0.000005」のままでも一応動きます。(要編集)
      • 学習の深度を決める数字です。
  • 「Resolution」
    • 512で出力したのであればそのままで大丈夫です。(学習の事前準備の画像と同じ大きさを指定します)
  • 「Save a checkpoint every N steps, 0 to disable」
    • 何stepごとにckptファイルを作成するか決めます。1ファイルごとに2~4GBになるので注意してください。
    • 世代比較をして完成版を選ぶため、Lr0.000005であれば「250」か「500」でいいと思います。
  • 「Generate a preview image every N steps, 0 to disable」
    • 何stepごとにpreview画像を出力するか決めます。
      • 環境・バージョンにより出力時エラーが生じます。その場合は「Training steps」よりも大きな数字を入力して無効化してください。(0でもエラーが出る場合があります)
  • 「Preview image prompt」
  • 「Preview image negative prompt」
  • 「Number of samples to generate」
  • 「Sample guidance scale」
  • 「Sample steps」
    • preview画像の生成に用います。

【Advanced】
(基本はいじらず、そのままで大丈夫です)

  • Use CPU Only (SLOW)
    • VRAM12GBに満たず、うまく動かない場合はオンにしましょう。
  • Don't cache latents
  • Train Text Encoder
  • Use 8bit Adam
  • Center Crop
  • Gradient Checkpointing
  • Scale Learning Rate
  • Mixed Precision
  • Scheduler
  • Prior Loss Weight
  • # Training Epochs
  • Adam Beta 1
  • Adam Beta 2
  • Adam Weight Decay
  • Adam Epsilon
  • Max Grad Norms
  • Grad Accumulation Steps
  • Warmup Steps

3.おすすめの設定組み合わせ

(要編集)

  • 学習をキャンセルしたときに保存する
    • Saving → Checkpoints → Generate a .ckpt file when training is canceled
    • 設定をテストしたいときはオフにする、本番になったらオンにする
  • 定期的に.ckptを保存してバックアップを取る
    • Saving → Checkpoints → Generate a .ckpt file when saving during training
    • Setting → Basic → Intervals → Save Model Frequency (Epochs)
      • 何回学習するごとに保存するか
      • 2時間ごとなら、その設定で2時間回したときの学習回数を入れる

4.実行

上部「Train」を押します。

5.トレーニングの止め方

上部「Cancel」を押します。
デフォルトだと学習内容を破棄するので注意。

6.困ったときは

(要編集)

メモ・備忘録

ご自由にどうぞ01


ご自由にどうぞ02


ご自由にどうぞ03

コメント・指摘・助言

  • installやcheck for updateした時にエラーが出るのは起動時オプション(--listenとか)が邪魔しているのでインストール&アップデートの際だけwebui.bat直接実行でコマンドラインオプションを全部無視すると行けるようになります、インストール後のRuntimeError: Detected that PyTorch and torchvision were compiled with different CUDA versions. PyTorch has CUDA Version=11.6 and torchvision has CUDA Version=11.3. Please reinstall the torchvision that matches your PyTorch install.エラーが出るのは(何も考えずに自動構築した環境だとpytorch11.6とtorchvision11.3でCUDAの環境がズレるらしい)だと思うのでpip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116 辺りのコマンドで更新すると11.6で揃うようになります -- 2022-11-09 (水) 23:25:09
  • https://www.youtube.com/watch?v=HahKXY7AQ8c RTX3060ですがこの動画の設定項目参照してdreambooth学習成功しました。英語オンリーですが、自動字幕に日本語機械変換が機能しています。現行バージョンと少し項目が違いますが、大体は同じですので流用できる項目が多いです。 -- 2022-11-22 (火) 07:58:07
  • colabで動かすとExtensionからインストールできない コマンドで直接ダウンロードしてもタブにはでてこない -- 2022-11-23 (水) 22:11:33
  • ↑起動batに"--enable-insecure-extension-access"は入ってる? -- 2022-11-24 (木) 00:11:39
  • colabでPythonのバージョンを3.9に上げたらDreamBoothの拡張機能入りました。バージョンの上げ方は以下を参照https://zenn.dev/tk42/articles/92e34bb8910fd9 -- 2022-11-24 (木) 22:50:31
  • ちょうど同じとこで詰まって、コマンドライン追加まではできたけどその後解決できず困ってた。thx -- 2022-11-25 (金) 15:17:44
  • ↑の方法試してみたけどxformersがインストールできなくなって画像生成すら全くできなくなってしまった。「ERROR: xformers-0.0.14.dev0-cp37-cp37m-linux_x86_64.whl is not a supported wheel on this platform.」解決方法がわからん -- 2022-11-25 (金) 17:46:04
  • xformersは動かすのに必須じゃないみたいだから単に消してみたら今度はcuda out of memoryエラー連発でしんどい -- 2022-11-26 (土) 17:08:39
  • xformers入ってるとfp32が使えない(bf16も?)難点はあるもののそもそもvram不足なら入れたほうがいいかも、一応8bit adam入れるとfp32でギリギリ3090のグラボ範囲の22Gくらいに収まります、bf16使えるならそっちでも良いかも?bf16で作ったckptって非対応グラボでも読み込みは可能なのかな?そもそも最終的にfp32なckptとsumマージしてしまったら平気なのかも知れない -- 2022-11-26 (土) 22:06:06
  • 最新版に変えたら書いてる内容の項目が無いっすね…11/22に貼られてた動画と全然UI違うのでなんか変更あったっぽいですねえ。 -- 2022-12-06 (火) 04:00:31
  • 導入のところの「"REQS_FILE=.\extensions\sd_dreambooth_extension\requirements.txt"」を追加がわからぬい。webui-user.batをメモ帳で開いてcall webui.batの上あたりに追記するのかなーと思ったが、指定されたパスが見つかりませんと出る。webui-user.batとかのファイルパス位置がCドライブじゃないからとか? -- 2023-01-03 (火) 12:34:37
  • 自己解決。「set 」を入れ忘れとった。「set "REQS_FILE=.\extensions\sd_dreambooth_extension\requirements.txt"」ね。 -- 2023-01-03 (火) 12:59:12
  • A1111エクステンション版のDream Boothで直近の更新にトラブルがあり学習しようとしてもVRAM不足になる状態。LORAすら使えなくなってる。 -- 2023-01-04 (水) 03:10:07
  • 「「Dataset directory」に画像ファイルだけを入れ、txtファイルは入れないでください。」ってあるけどfilewords使う場合のテキストファイルはじゃあどこにいれるんだ? -- 2023-01-04 (水) 23:45:04
  • ハイエンドグラボでないならxformers は使うべき。3060.12Gbで動かしてるが余剰vram7.8Gに対して7.1Gも食ってた。fp16でもモデルも品質に難はないから推奨。あと時折残り学習時間のタイマーが逆転することがあるけど1時間様子見すればヨシ。 -- 2023-01-05 (木) 04:25:20
  • 昨日からこのAIで遊び始めてこの機能を使おうとしたらVRAM不足と何度も出て何度もやり直したけど配布ページでもエラーが出るとなっていてしょうがないから旧バージョンを探してきて使っています。そこで気付いたのがTraining stepsがTraining Steps Per Image (Epochs) になってて前者は全画像でトータルした数値を入れるのに対して後者は1枚当たりのステップ数を入れるようになっててお勧めされてる1000を入れると膨大な時間と容量が食われると判明。最新版の容量不足がそれのせいではないとは思うが試す気はなく現状動く旧バージョンに落ち着きました -- 2023-01-06 (金) 20:23:41
  • Batch SizeとClass Batch Sizeの補足を追加したんだけど、注釈をつけて備忘録に飛ばす方法がすぐわからなかったので、誰かよしなにやってクレメンス -- 2023-01-07 (土) 01:02:14
  • 現時点でVRAM不足のエラーを出さずにLORAを使いたい場合は「extensions\sd_dreambooth_extension」を開き「git checkout c5cb58328c555ac27679422b1da940a9b19de6f2」を実行すると機能してるバージョンに戻せる -- 2023-01-07 (土) 03:07:28
  • 7th_anime_v3_testCに自分のキャラを追加学習させたいんだが、モデルを開けない。Any4とか7th_furry_testBは開けるんだが、7th_anime_v3_testCをソースに選んでクリエイト押したときだけエラーが出るんだよな。 Unexpected key(s) in state_dict: "up_blocks.0.attentions.2.conv.bias", "up_blocks.0.attentions.2.conv.weight".みたいなエラーが出る。これの解決法、だれか知らんかしら? -- 2023-01-15 (日) 21:58:17