Google Colabの無料枠を使いDreamBoothで追加学習して特定のキャラクターを描かせようの段

コンピュータ全般

DreamBoothと、Google Colabの無料版を使ってWaifu-Diffusionに追加学習する方法です。
1ヶ月遅れ&n番煎じです。

めんどうだったのでサンプルはありません。(アイキャッチ画像詐欺)

Googleアカウントの容量を9GBぐらい使います

1~2時間かかります。時間のある時に実行しましょう。

いるもの

  1. Googleアカウント
  2. Hugging Faceのアカウント
  3. 学習元となる画像

事前準備

学習元画像の準備

学習元となる画像を準備します。

服装や色が近いものでないと、学習効果が薄いです。
参考先リンクでは、公式絵に加えて、いくつか二次創作絵も学習画像として用意したようです。

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上にアップロードします。

左のタブからフォルダマークをクリックし、ファイル一覧を表示します。
前項の設定で指定したディレクトリを作成し、そのディレクトリの上で右クリック→アップロード」とし、学習元の画像をアップロードします。

画像は複数選択できます。

準備段階でも書きましたが、画像は512×512にトリミングしておくのが望ましいです。

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程度を目安にする
    • こちらも多すぎると無料枠が止まる

以上を変更できたら、いよいよ実行します。

生成したweightは最終的にGoogleアカウントの容量を9GBぐらい使います
容量を空けておいてください。

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で共有するなって話なのでリンク切ってます。

コメント

タイトルとURLをコピーしました