無料colabでDreambooth

Last-modified: 2022-10-14 (金) 16:06:44

無料colabでも出来るDreamboothのやり方(画像付けたかったけどよくわかってないのでとりあえずなしなのとわかりにくかったら適当に改良してね)

いろいろな方がcolabで動かせるipynbを作ってくれてますが今回はShivam Shrirao氏のを使ってます
まずは下のリンクにアクセスします
diffusers/examples/dreambooth at main · ShivamShrirao/diffusers · GitHub
次にOpen in Colabと書かれたボタンを見つけクリックします
するとcolabページに飛ばされます
Googleにログインしてないとログインを求められるかもしれません

勝手に編集しちゃうことはないとは思いますが一応ファイルのドライブにコピーを保存からGoogleドライブにコピーを保存してそこから起動しましょう

次に各コードを実行していきます
基本的には〇の中に右向きの▶マークがあるボタンを上から順にポチポチしていく形になります
Check type of GPU and VRAM available.は割り当てられたGPUの確認用です
無料なら基本T4が割り当てられると思います

Login to HuggingFaceですがコードを実行し出てきたリンクにある自分の番号をコピペします
事前にhuggingfaceへの登録が必要です
使用するモデルによってはそのモデルが置かれている場所まで行って許可をとる必要があります

次にSettings and runの説明に移ります
まずMODEL_NAMEですがモデルがある場所になります
元々記入されている「CompVis/stable-diffusion-v1-4」はSD1.4モデルのリンクです
他に「hakurei/waifu-diffusion」「naclbit/trinart_stable_diffusion_v2,diffusers-115k」などがあります
またcolab内にdiffusers形式のモデルを持ってくればそこを指定することも出来ます
INSTANCE_DIRは覚えさせたい画像を置く場所です
CLASS_NAMEは覚えさせたい画像のジャンルの大きな括りです
これを元にnum_class_imagesが作られます
OUTPUT_DIRは完成したモデルのGoogleドライブでの保存場所です

次に覚えさせたい画像をアップロードしていきますINSTANCE_DIR
Upload your images by running this cell.と書かれてるコードを実行することで上げるためのボタンが出てきますが使い勝手が微妙なので無視して左にファイル(フォルダ的な見た目)のマークをクリックしINSTANCE_DIRで指定したフォルダを探します
その時一回フォルダの階層を上に移動してからでないと見つからないかもしれません
見つけたらそのフォルダを右クリックしアップロードをクリックします
するとローカル環境が呼び出されるはずですので画像をアップロードします
画像はいっぺんに選択できます
ちなみにDreamboothを使うのは2回目とかでnum_class_images用画像を使いまわしたい場合CLASS_NAMEで指定した名前でINSTANCE_DIRで指定した場所と同じ所にフォルダを作り
そこに画像をアップロードすれば画像の自動生成の時間が減ります

次にStart TrainingですがVRAMによって設定変えたりできますがとりあえずそのままでinstance_promptとclass_promptを変更します
この名前で呼び出すことになるのでキャラ名とか好きにどうぞ
num_class_imagesはすでに用意できてるなら0になければ好きな数を指定します
多ければ多いほど自動生成される枚数が多いため時間がかかり下手するとcolabの無料期限が来てしまうのでほどほどに
とりあえず400は行けました
max_train_stepsはどれだけ学習させるかです
個人的には1500~3000くらいがいいかと思ってますが好きにどうぞ
そこを変更したらいよいよ学習の開始です
コードを実行しましょう
ちなみにコードを実行した後数値や文字を変更しても意味はないです

Convert weights to ckpt to use in web UIs like AUTOMATIC1111.に書かれたコードは1111などで使うためにckptに変換するものです
OUTPUT_DIRで指定したGoogleドライブのフォルダにckptは保存されます

その後の部分はcolab内でどんな出来か確認するものなので使用しないでも大丈夫です
順にコードを実行していきRun for generating images.のコードを実行すれば画像が出ます

最後のオプションは多分必要な「」少なそうだし無視していいかと

以上です
分かりにくい文章ですので適当に直しちゃってください
いいモデルが出来ることを願ってます

別人だが追記

このnotebookだとdiffuser形式しか学習元にできません。
WD1.3のようにckptしか配布されていない場合、ckptファイルからdiffuser形式に変換する必要があります。
具体的には

%pip install -q diffusers transformers omegaconf
!git clone https://github.com/huggingface/diffusers
!wget https://raw.githubusercontent.com/CompVis/stable-diffusion/main/configs/stable-diffusion/v1-inference.yaml

してdiffusers/scriptsにあるconvert_original_stable_diffusion_to_diffusers.pyってのを動かせばいいです
コマンドライン引数に--checkpoint_pathに変換したいckptファイルのパス、--original_config_fileにv1-inference.yamlのパス、--dump_pathに出力先のパスを入れる
多分動くはず。ちなみにWD1.3のfullは無料版だとRAMが限界超えて落ちるのでfp16とかで我慢してください。品質差がDBでどれぐらい出るかはわかりません
細かい手順はhttps://self-development.info/%E3%80%90stable-diffusion%E3%80%91ckpt%E3%82%92diffusers%E3%81%A7%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%80/みてください
あとhttps://note.com/kohya_ss/n/n88f1c8ab7883を参照すればText Encoderの学習もできて学習速度上がります