画像生成AIの情報を纏めるWikiです。

×
新しいLoRAノートブックはこちら→kohya_train_network_simple
このページの内容は残念ながら古いので手順通りに試してもうまく動かないようです。
現在のLoRA学習法はDreambooth-LoRAを参照。

画像生成は経験済みだが、まだ学習をやったことない人が対象。



学習方法の違い

698 名前:今、天王星のwiki見てきたら軌道傾斜角(i) が0.774°だった (ワッチョイ 0154-0d8E)[sage] 投稿日:2023/01/09(月) 19:11:42.17 ID:OMJT1FQ70 [4/5]
HNとDBとTIとかの違いがいまいちわからんくなってきたわ
740 名前:今、天王星のwiki見てきたら軌道傾斜角(i) が0.774°だった (ワッチョイ 9943-tb1I)[] 投稿日:2023/01/09(月) 19:58:06.59 ID:RzPG3voj0 [13/16]
>>698
キーワードを書いて、それが各トークンに分割される。各トークンはそれぞれ768個の重み=特徴の強弱が設定されている。
モデルは、現在の画像(最初はノイズ)とそのトークンの重みを与えられて、画像から少しノイズを取り除こうとすることを繰り返して絵を作る。
モデルの形自体は決まっているが、モデル自体が持っているパラメータによって、画像のどんな特徴を重視(圧縮)して、どういう風に復元(展開)するかが変わる。

TI:768×数〜数十トークン分の重みを割り出すことで、期待する特徴を備えたキーワードを作る
どんなの特徴成分の組み合わせでターゲット画像が再現できるかを学習する。
だから分かりやすい特徴や属性の組み合わせで再現できる物に向いている。

HN:重みをモデルに伝える部分に入り込んで、期待する画像をモデルが作りやすいように変換する
特徴成分全体を特定のパターンで変形する。
だから特徴全体を揺れ動かす必要があるような、絵柄の学習に向いてるし、特徴自体の強化や矯正もできるので、物の学習もできる。
746 名前:今、天王星のwiki見てきたら軌道傾斜角(i) が0.774°だった (ワッチョイ 9943-tb1I)[sage] 投稿日:2023/01/09(月) 20:00:44.89 ID:RzPG3voj0 [14/16]
>>698 >>740 の続き
DB:モデル自体のパラメータを学習する。
TIやHNはあくまでテキストから特徴を作り出す部分を改善するもの。
つまりできる限りそのモデルの力を引き出すことはできても、そもそも元からそのモデルが作ることが困難な絵は作れない。
DBならモデルのパラメータ自身を学習するのでその制限を超えられる。(もちろん、SDの仕組みとモデルの形自体からくる得意不得意からは逃れられない)

例えば、部品メーカーが、幾万とある珍しい部品の画像を製品番号から出したいとする。
そうなると、まずそういう珍しい画像を精密に描画できるだけの能力がモデルにないかもしれないし、
製品番号のトークンから、適切な素材の重みにHNで変換しようとしても、
よくあるプロンプトから逸脱しているので、とても深く大きいHNが必要になりそうなことが予想される。
そういう場合はモデルを作ったほうが良い。
他にも、そのモデルが弱い特徴を持った画像を追加学習させることで、上手く行けばその要素を強化したりもできる。
それぞれの学習方法や詳細は個別ページにて

学習方法の選択


TI, DB, HN, DA, Loraなど。
どれがいいかは目的に応じて変わるので、当面は全部やって比較検討するのがいい。
1111以外を使う方法もあるが、1111を使えば全部できる。

ここでは1111を使って、Lora(DB)とHNを試してみた。
用意した環境は次の2つ。
  • VRAM 8GBのNVIDIA GPUを搭載したローカルPC
  • 無料Colab

細かい調整は省き、再現性のある手順を示す。

(解説)正則化画像について


LoRA(四国めたん)


Dreamboothのオプションとして利用可能。
DB比で高速、生成されるファイルも小さい。
完成度についてはDBに匹敵するほどはある。現在主要のファインチューニングとなっている。
  • 解像度512
  • 所要時間はローカル(2070)だと15分程度、Colabだと全部で1〜2時間くらい
  • 実用的(着せ替えなどをして遊べる)

Colabでは解像度768で動作することも確認済み。

追記
  • --test-loraは指定しなくても良くなった
  • ckptは自分でGenerateするまでは出力されなくなった
  • 2022-12-13アップデートで設定項目が変わった
  • NAI VRAM 8GBでも動作することを確認した
  • 最小限の設定項目で実施する(ひとまずデフォルト値を信じる)

リンク


dreambooth使わないから外してて知らなかったけどすでにLORA実装してるらしいじゃん!
Commits見ると8日にはもう取り入れてるぞ
引用:ふたばより

ねらい

  • Colabは早いと3時間程度でGPUが使用停止になるので学習時間の短縮も図る
  • できれば一回のセッションで学習を完了させたい
  • Drive容量も含めて無料で済ませたい

1. Colabの起動


無料ColabだとNAIはなぜか動かなかった。アップデートで直った可能性はある。(後述)
K80になったことは無いけどT4が引けてるか一応確認するといいかも。

1. ローカルの起動


Extensions から Dreambooth をインストールする

2. 画像の用意


Colabだと1111の起動に15分+ダウンロード時間ぶんかかるので待ってる間にやる。

ダウンロード
中身は学習用データセット14枚
解像度768版

3. 画像のアップロード


ここからは1111の起動後にやる。
  • Filerのimagesに2つのzipをドロップする
    • あるいは webui直下にzipファイル名のディレクトリを作りzipの中身を展開する
  • Image BrowserのOthersで skkmtn と touka を選択する
    • 画像が見えることを確認する

4. モデルファイル作成


「Dreambooth」タブを開いた後、真ん中の「Create Model」タブが開かれていること確認する。
  • Name: skkmtn
  • Source Checkpoint: Anything-V3.0-pruned-fp16.ckpt
    • ローカルだと animefull-final-pruned.ckpt でも動くかも

以前の設定


「Create」ボタンを押す。

5.パラメーター設定


左の「Model」ドロップダウンに「skkmtn」が表示される。
真ん中の「Parameters」タブを押す。

明記されていない項目は初期値のまま。

Settings
  • 変更なし

以前の設定


Advanced
  • Use LORA: オン
  • Use 8bit Adam: オン
  • Mixed Precision: fp16
  • Memory Attention: xformers

これはVRAM節約と高速化のために設定していると思うのでお好みで。
つけないとVRAM 8GBでは動かないし、時間は倍近くかかるようになる。

以前の設定

6. コンセプト設定

  • Classification Dataset Directory: touka
  • Dataset directory: skkmtn
  • Instance Prompt: skkmtn

Instance Tokenと間違えないように。
Class Promptも入れたほうが良さそうとか色々あるけどまずは最低限で。
もしもVRAMが足りなくてエラーになるのならtoukaは外すことが出来る。

Instance promptはOptionalではなく、入れないとUnable lbuild Concents.エラーが出る。

7. Trainボタンを押す


ローカル2070だと10分程度で終わる。
Colabでも1時間以内には終わるはず。

8. ptファイルの合体


左側の「Lora Model」から使いたいptファイルを指定する。

現在の「Stable Diffusion checkpoint」の選択に関係なく、「4. モデルファイル作成」の時に指定したckptがベースになる。
なので別のckptにLoraを適用することは出来ないはず。

Trainによって以下の6つのファイルが出来ているはず。
ここでは「skkmtn_1400.pt」を選択する。

skkmtn_1000.pt
skkmtn_1000_txt.pt
skkmtn_1400.pt ←これ
skkmtn_1400_txt.pt
skkmtn_500.pt
skkmtn_500_txt.pt

「Generate Ckpt」ボタンを押す

9. 動作確認


「Generate Ckpt」が完了してから「Stable Diffusion checkpoint」を更新すると、「skkmtn_1400_lora.ckpt」が追加されている。
  • プロンプトを skkmtn にして実行
masterpiece, best quality,1girl,skkmtn


  • うまくいってればワードを追加する
masterpiece, best quality,1girl,skkmtn,school costume


masterpiece, best quality,1girl,skkmtn,nude



(過学習だと思ったらLearning Rateを下げて再挑戦)

10. ptファイルのダウンロード


models/lora にファイルが出来ている。
Colabだと消えてしまうのでsd_filerを使ってダウンロードする。(ほかの方法でも良い)
  • 「Filer」タブの「Loras」タブの「Active」タブで欲しいものにチェックを入れて「Download」
  • 容量が少ないので「Select All」でも大丈夫
  • ダウンロードリンクが表示されるのでクリックする

ダウンロードしたファイルは models/lora に設置すれば「Lora Model」の一覧に表示される。
sd_filerを使ってアップロードすることも出来る。

11. 学習の再開


再開できていないバグがあるのではないかという話だったけど最新でどうなってるか不明。

models/dreambooth/skkmtn を保存しておけば続きから学習できる。
skkmtn_1400_lora.ckpt ファイルに対して追いLoraすることもできる。(意味的には異なるはず)

Hypernetwork(四国めたん)


108スレの571、572、575、576を参考にした。

モデルは skkmtn_1400_lora.ckpt を選択。

1. ファイルの用意


画像はLoraと一緒。

以下の内容だけが記載されたファイルを
C:\stable-diffusion-webui\textual_inversion_templates\mb1f.txt (どこでもいい)に保存
masterpiece, best quality, 1girl, face

2. ptファイル作成


「Train」タブを開いた後、「Create hypernetwork」タブを開きます。
  • Name: skkmtn
  • Enter hypernetwork layer structure: 1, 2, 2, 1
  • Select activation function of hypernetwork. Recommended : Swish / Linear(none): mish

3. Train


「Train」タブを開く
  • Hypernetwork: skkmtn.pt を選択
  • Hypernetwork Learning rate: 0.00001(デフォルト)
  • Dataset directory: skkmtn
  • Prompt template file: C:\stable-diffusion-webui\textual_inversion_templates\mb1f.txt (用意したもの)
  • Gradient accumulatelion steps: 14
  • Max steps: 182
  • shuffle tags by "," when creating prompts: オン
  • Choose latent sampling method: deterministic

スレでの指定は180だったが、14の倍数できりよく182とした。
プレビュー画像を出すとVRAM不足で落ちるので注意。(今回は500以下だから関係ない)

30分ちょっとかかる。

4. 動作確認


  • ptが出来上がっているはずなので、通常通り Hypernetwork のプルダウンから選ぶ
  • Generate
masterpiece, best quality, masterpiece, skkmtn


masterpiece, best quality, 1girl, face, skkmtn


masterpiece, best quality, 1girl, skkmtn, bikini



旧バージョン

このページへのコメント

github.com/d8ahazard/sd_dreambooth_extension/issues/706#issuecomment-1373541526
↑のDreamboothエクステンションの不具合報告掲示板によると、「現在の最新版では8GBのGPUでLORAを実行できないようになっている」とのこと。

「git checkout c5cb58328c555ac27679422b1da940a9b19de6f2」で
Dreambooth自体を前のバージョンに戻せばLORAを動かせるようになる。

1
Posted by 名無し 2023年01月07日(土) 00:33:57 返信数(1) 返信

ありがとうございます。古いバージョンに戻して、Loraの手順は一通りできました!
ところでcheckoutのときにメッセージが出てきたんですが、戻すときは、
git switch -
でいいんでしょうか?

0
Posted by 名無し(ID:mLlQtEv1qw) 2023年01月07日(土) 14:57:02

ありがとうございます。
私も諦めて別の学習について調べてたんですが、githubに同じような報告がありました。
github.com/d8ahazard/sd_dreambooth_extension/issues/661
結果、↑のVenv削除で自己解決しました。ただ、次に以下のエラーがでました(同じく7の手順です)。
Returning result: Exception training model: No executable batch size found, reached zero.
今は時期が悪いんでしょうが、他の人の参考までに書いておきます。わかる方は教えてください……。

3
Posted by 名無し(ID:mLlQtEv1qw) 2023年01月03日(火) 14:57:49 返信

手順通りにローカルでLoraの方をやってみたんですが、7.Trainボタンを押すを実行したら、
以下のメッセージが出てきて、8以降の手順に進めません。
Returning result: Exception training model: module 'tensorflow' has no attribute 'io'
ググって出てきたpip install tensorflowで解決できるかと思ったんですが、実行しても同じメッセージが出ます。
どうすればいいんでしょうか……?

0
Posted by 名無し(ID:mLlQtEv1qw) 2023年01月03日(火) 13:40:24 返信数(1) 返信

最近アップデート多いから本家がバグってるのかも?
(Loraは機能追加が期待されてるので落ち着いたころにまた試す予定)

1
Posted by 名無し(ID:DqSiI5hXpw) 2023年01月03日(火) 14:45:39

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

table拡張js

どなたでも編集できます

メンバー募集!