Dream Boothとは?

Last-modified: 2023-08-22 (火) 23:02:36

## DB(DreamBooth)について(※適当です)
DBとはモデルそのものに新しい概念を学習させることです。
キャラクターそのものを再現させることに優れています。

PC修理から戻ってきて動かせたら書くかもしれません。

https://colab.research.google.com/github/ShivamShrirao/diffusers/blob/main/examples/dreambooth/DreamBooth_Stable_Diffusion.ipynb
https://www.youtube.com/watch?v=mVOfSuUTbSg
を参考にしてもできるはず
↑とりあえず学習目標見つけてそれで出来ました。

覚えさせたいもの見つけてこっちで動かせたら詳細書きます。

としあきによるTIPSメモ
DBは特定のprompt、よく使われるのはsksとかのワードに学習してるものの特徴を入れ込む、そのためにunet、わかりやすくいえば、モデル本体を学習させてる

HNは常に全体に一定の補正をかけるためのもの、特定のpromptとかは存在しないので画風に向いてる
DBと大きな違いはTIと同様にある程度ほかのモデルでも流用可能
目安はモデルごとのpromptの互換性がどの程度あるのかを参考にするとわかりやすいと思う
キャラの精度あげるならDB+TIが多分最強
画風の精度をあげるならDB+HNが最強
なんなら全部盛りしてもいい、というかHNは今テスト中だから試せてないけど、うちは前からDB+TIはかなり多用してる
___

DreamBoothのパラメータの意味とかを紹介しているサイトとかない?

colabで実行してみました系の記事しか見つからず

パラメータを変化させると具体的に何が変わるのかがよくわからんのよ
そのレベルなら
instance_prompt = 追加する概念を入れたprompt
class_prompt = 追加する概念を除いたprompt
DBはTI,HNと違ってckpt内にあるモデルを学習させるから、追加概念だけを学習すると元の出力が壊れるので、追加なしのpromptも同時に学習しなおしてる
あと、両者の出力差を誤差計算に使ってる

num_class_images = class promptで出力される正しい画像の枚数
max_train_steps = 最大でいくつstepを回すか

これだけとりあえず理解できればいい
あとは、vramとの関係が書いてある設定はvramサイズと相談して決めればいい

___

これだけとりあえず理解できればいい

あとは、vramとの関係が書いてある設定はvramサイズと相談して決めればいい
そのへんはある程度分かってて

  • with_prior_preservation --prior_loss_weight=1.0
  • train_batch_size=1
  • learning_rate=5e-6
  • sample_batch_size=4
    この辺の数値の意味とlossの値は具体的に何を指しているのかって事が良くわからない
    適当に数値を変えて結果に何となく差は出ているのは分かるけど
    具体的に何を変えたのかがわかってないのでモヤモヤする
    _____
    正直、その辺の細かい数値は前提としてある程度の機械学習の知識あってこそだから、製作者のデフォ設定でいいんだが・・・
    とりあえず、知識いらんとこからいくと、
    sample batch sizeはclass画像出力時の同時生成枚数
    train batch sizeは学習時に同時に学習させる枚数
    batchっていうのが1回の生成もしくは学習の同時数って考えればいい
    1111版にもBatch sizeって項目あるでしょ?

learning rateは学習時の重み変更する際の係数みたいなもの
priorがついてるのは、追加概念なしのpromptを再学習させるのに関わってる
withのやつはそれが入ってるとクラス画像も学習するよ
lossは、どの程度学習時に影響を持たせるか
だから、そのままが一番いい、いじってどうなるか想定できる人向けの設定
_____

追記

上記のColab notebookはdiffuser形式のモデル対応です。
WD1.3のようにckptファイルのみが公開されているモデルはdiffuser形式に変換させる必要があります。
適当なnotebookに以下をコピペして実行したら変換できます。

%pip install -q diffusers transformers omegaconf
!git clone https://github.com/huggingface/diffusers
!wget -O diffusers/scripts/v1-inference.yaml https://raw.githubusercontent.com/CompVis/stable-diffusion/main/configs/stable-diffusion/v1-inference.yaml
%cd /content/diffusers/scripts
!python convert_original_stable_diffusion_to_diffusers.py --checkpoint_path (変換したいckptファイルのパス) --original_config_file (v1-inference.yamlのパス) --dump_path (変換したdiffuser形式のファイル群を置きたいパス)

ちなみにWD1.3のdiffuser形式を使いたいだけなら有志によって変換済みのモデルがすでに公開されています。
Nilaier/Waifu-Diffusersを参照してください。

上記テストしましたが、
NAIなanimefpは不可でした。LainはOKでした。
animefull-latestも不可