DreamBoothと、Google Colabの無料版を使ってWaifu-Diffusionに追加学習する方法です。
1ヶ月遅れ&n番煎じです。
めんどうだったのでサンプルはありません。(アイキャッチ画像詐欺)
いるもの
- Googleアカウント
- Hugging Faceのアカウント
- 学習元となる画像
事前準備
学習元画像の準備
学習元となる画像を準備します。
服装や色が近いものでないと、学習効果が薄いです。
参考先リンクでは、公式絵に加えて、いくつか二次創作絵も学習画像として用意したようです。
512×512にトリミングしたものを、5~20枚程度用意します。
トリミングしてなくてもいけますが、(たぶん)勝手にトリミングされると思うので、変なところを学習されるよりは自分で選んだほうが良いです。
Waifu-Diffusionの準備
Hugging Faceの設定にアクセスし、アクセストークンを発行します。
名前を適当につけ、権限をWriteで生成します。
後で使うのでタブを開きっぱなしにしておきます。
Google Colabの準備
ここを開き、上部のメニューから「ドライブにコピー」で自分のGoogleドライブにnotebookをコピーします。
Colab上で実行手前まで
Check type of GPU and VRAM available.
実行すると、現在割り当てられているGPUの名前とVRAMの量が出ます。
12GBくらいあれば良いと思います。たぶん。
8GBとかだった場合は再接続してガチャタイム。
Install Requirements
実行すると、学習に必要な色々を入れてくれます。
押すだけの簡単なお仕事です。
Login to HuggingFace 🤗
ここで生成したアクセストークンを使います。
実行すると、アクセストークンを入力する欄とログインボタンが表示されます。
Hugging Faceのサイトからコピペし、ログインボタンを押しますが、入力後、即座に押してください。
個人のアカウント内なのでよっぽど大丈夫だとは思いますが、悠長に入力していると、Colabが自動保存してトークンがハードコードされます(´・ω・`)
Install xformers from precompiled wheel.
実行するとxformersをインストールします。
どうやらこれのお陰で必要メモリ量が激減したようです。
よくわかんなかったです()
Settings and run
設定です。
- 『save_to_gdrive』:Googleドライブにweightを保存するかどうかのチェックボックス
- Google Colabはインスタンスを閉じるとデータが全部飛ぶのでオンにしておけば安心です
- (オフでもインスタンスを閉じる前にダウンロードすれば良いかも?)
- 『MODEL_NAME』:学習元のモデルを指定
- 初期値はStable-Diffusion v1.4
- Waifu-Diffusionなら「hakurei/waifu-diffusion」
- とりんさまなら「naclbit/trinart_stable_diffusion_v2」(事前にここで同意しておくこと)
- 『INSTANCE_DIR』:学習元の画像の入ったディレクトリを指定
- sksという名前は、単純に他の名詞とかぶりにくいというだけ。ダミーなので自由に変えて良い
- 『CLASS_NAME』:学習するものの一般名詞を指定
- 女の子のキャラならgirl、男の子のキャラならboyなど
- たぶん、これで生成される画像が、目的のものにざっくり近ければ良い
- 当たり前だが、人間を学習させるのにdogとかはダメ
- 『OUTPUT_DIR』:出力先ディレクトリを指定
- save_to_gdrive:がオンならGoogleドライブへ保存される
- オフならColab内のはず
- こちらもsksという名前に意味はない。ダミーなので好きな名前に変更できる
画像うp
学習元になる画像をColab上にアップロードします。
左のタブからフォルダマークをクリックし、ファイル一覧を表示します。
前項の設定で指定したディレクトリを作成し、そのディレクトリの上で「右クリック→アップロード」とし、学習元の画像をアップロードします。
画像は複数選択できます。
Start Training
コードブロック内から
--instance_prompt="photo of sks {CLASS_NAME}" \
と
--num_class_images=50 \
と
--max_train_steps=800
の3行を探して変更します。
- 『instance_prompt』:このプロンプトで生成できるように指定
- sksは例によってダミーなので、変更可
- お好きなキャラクター名などに変更すると良いでしょう
- 『num_class_images』:学習用に生成する画像の数(?)
- 100~200ぐらい?
- 学習元の画像数で割り切れる数にすると良い
- 詳しくはこの人
- 多すぎると無料枠が止まるのでほどほどに(400ぐらいまでいけるらしい)
- 『max_train_steps』:学習ステップ数を指定
- 1000~3000ぐらい
- 学習元画像数×150~200程度を目安にする
- こちらも多すぎると無料枠が止まる
以上を変更できたら、いよいよ実行します。
Convert weights to ckpt to use in web UIs like AUTOMATIC1111.
生成したweightはそのままではStable Diffusion WebUI(AUTOMATIC1111版)などでは利用できません。
このブロックを実行すると、各種webUIで利用できるckptの形にまとめてくれます。
「Download script→Run conversion」の順に実行すると、生成先ディレクトリにmodel.ckptといった名称で保存されます。
残りはGoogle Colab上で学習結果を確認するためのものなので使いません。
おめでとう!!!
すべて実行すれば、学習されたckptファイルがGoogleドライブにあるはずです。
あとは煮るなり焼くなりしましょう。
結果はまたまとめるかもしれないし、しないかもしれない。
参考一覧
ttps://wikiwiki.jp/img_ai_oppai/%E7%84%A1%E6%96%99colab%E3%81%A7Dreambooth
↑SNSで共有するなって話なのでリンク切ってます。
コメント