【Stable Diffusion】「LoRA」自作をとりあえずできるようになる【Kohya’s GUI】
■記事の対象ユーザ
1.Stable Diffusion WebUIをローカルに構築して、イラスト生成しはじめた
2.LoRAが何かは知ってたり使ってたりするが、LoRAの作り方は知らない
■ようするに?
・学習用画像をあつめて加工する
・学習させるためのパラメータを設定をする
・学習させる → LoRAが出来る
学習に使うツールの準備
好きなやり方で
先人の残した石碑によると幾つか方法があるらしい
俺は「Kohya’s GUI」とやらを使うぞJ〇J〇ォォォ!
git clone https://github.com/bmaltais/kohya_ss
黒い画面でセットアップ
### kohya_ssをcloneして出来たフォルダの中でプロンプトを立ち上げて
.\setup.bat
実行すると何かメニューが出てくる
聞かれたら1と答えるんだよ
Kohya_ss GUI setup menu:
1. Install kohya_ss gui
2. (Optional) Install cudann files (avoid unless you really need it)
3. (Optional) Install specific bitsandbytes versions
4. (Optional) Manually configure accelerate
5. (Optional) Start Kohya_ss GUI in browser
6. Quit
Enter your choice:
インストールが始まる。10分ほどかかったので気長に待とうね。
Enter your choice: 1
23:10:12-984268 INFO Version: v22.2.1
23:10:12-986266 INFO Python 3.10.9 on Windows
23:10:12-989475 INFO Installing modules from requirements_windows_torch2.txt...
23:10:12-990478 INFO Installing package: torch==2.0.1+cu118 torchvision==0.15.2+cu118 --index-url
https://download.pytorch.org/whl/cu118
23:12:30-510347 INFO Installing package: xformers==0.0.21
23:13:20-911829 INFO Installing package: bitsandbytes==0.41.1
23:13:55-052622 INFO Installing package: tensorboard==2.14.1 tensorflow==2.14.0
23:16:34-809577 INFO Installing modules from requirements.txt...
23:16:34-810577 INFO Installing package: accelerate==0.23.0
23:16:36-540563 INFO Installing package: aiofiles==23.2.1
23:16:37-148399 INFO Installing package: altair==4.2.2
23:16:42-047957 INFO Installing package: dadaptation==3.1
23:16:44-687956 INFO Installing package: diffusers[torch]==0.21.4
23:16:47-414431 INFO Installing package: easygui==0.98.3
23:16:48-291150 INFO Installing package: einops==0.6.0
23:16:49-113302 INFO Installing package: fairscale==0.4.13
23:16:49-995104 INFO Installing package: ftfy==6.1.1
23:16:50-760848 INFO Installing package: gradio==3.36.1
23:17:05-869061 INFO Installing package: huggingface-hub==0.15.1
23:17:07-128246 INFO Installing package: invisible-watermark==0.2.0
23:17:08-710642 INFO Installing package: lion-pytorch==0.0.6
23:17:09-547971 INFO Installing package: lycoris_lora==1.9.0
23:17:21-065122 INFO Installing package: onnx==1.14.1
23:17:29-051139 INFO Installing package: onnxruntime-gpu==1.16.0
23:18:17-232190 INFO Installing package: protobuf==3.20.3
23:18:18-404663 INFO Installing package: open-clip-torch==2.20.0
23:18:20-075697 INFO Installing package: opencv-python==4.7.0.68
23:18:21-728214 INFO Installing package: prodigyopt==1.0
23:18:22-855157 INFO Installing package: pytorch-lightning==1.9.0
23:18:25-299491 INFO Installing package: rich==13.4.1
23:18:26-797605 INFO Installing package: safetensors==0.3.1
23:18:27-980559 INFO Installing package: timm==0.6.12
23:18:29-826169 INFO Installing package: tk==0.1.0
23:18:30-966763 INFO Installing package: toml==0.10.2
23:18:32-070539 INFO Installing package: transformers==4.30.2
23:18:37-324036 INFO Installing package: voluptuous==0.13.1
23:18:38-469383 INFO Installing package: wandb==0.15.11
23:18:42-204523 INFO Installing package: -e .
23:18:45-233359 INFO Copying bitsandbytes files...
23:18:45-253379 INFO Configuring accelerate...
23:18:45-254463 INFO Copied accelerate config file to:
C:\Users\****\AppData\Local\huggingface\accelerate\default_config.yaml
Kohya_ss GUI setup menu:
1. Install kohya_ss gui
2. (Optional) Install cudann files (avoid unless you really need it)
3. (Optional) Install specific bitsandbytes versions
4. (Optional) Manually configure accelerate
5. (Optional) Start Kohya_ss GUI in browser
6. Quit
Enter your choice:
何もエラーとか出なければ6のQuitで終了。
(Optional)が必要かはとりあえず動かしてみてから考えればいいよ。
Kohya’s GUIの起動
### kohya_ssをcloneして出来たフォルダの中にある以下を実行
\kohya_ss\gui.bat
実行したらプロンプトが立ち上がり以下が出てくる。
23:22:22-671735 INFO Version: v22.2.1
23:22:22-675243 INFO nVidia toolkit detected
23:22:23-575999 INFO Torch 2.0.1+cu118
23:22:23-608615 INFO Torch backend: nVidia CUDA 11.8 cuDNN 8700
23:22:23-610618 INFO Torch detected GPU: NVIDIA GeForce RTX 3080 VRAM 10240 Arch (8, 6) Cores 68
23:22:23-611619 INFO Verifying modules installation status from requirements_windows_torch2.txt...
23:22:23-613124 INFO Verifying modules installation status from requirements.txt...
23:22:23-616130 WARNING Package wrong version: huggingface-hub 0.19.4 required 0.15.1
23:22:23-616130 INFO Installing package: huggingface-hub==0.15.1
23:22:26-415028 INFO headless: False
23:22:26-417032 INFO Load CSS...
Running on local URL: http://127.0.0.1:7861
To create a public link, set `share=True` in `launch()`.
Running on local URL: のURLをCTRL+右クリックするかブラウザにURL直入力
画面を閉じて一旦忘れる
学習を始める前に、学習させるデータの下ごしらえがいるんです。
なので、一旦「Kohya's GUI」のことは忘れて?
そして、ここからが理解にカロリー使うからやること整理しておくね。
・学習に使う画像を用意する
・用意した画像にタグ付け
・要るタグ、要らないタグの選別
・学習元になるモデルファイルの準備
・学習用パラメーターの設定
・学習開始、GPUちゃん頑張れ
学習に使う画像を用意する
背景を透明にした方がいいとか、沢山あった方がいいとか所説あるけど
とりあえず今回は動かして成功体験を得ることが優先なので細かいことは考えません。
インターネット上の画像を学習に使うことには色々と問題がありそうなので
個人的にはVRoidStudioのサンプルの子とか使いやすいと思いました。
無料でダウンロードできるツールで開始5秒でこの子触れるから便利よ。
集めた画像を格納する
集めた素材を格納するフォルダを作成するんだけど
最後に学習するとき
画像があるフォルダの「親フォルダ」を指定する必要があるので
親フォルダ→子フォルダ→集めた画像
っていうフォルダ構成にしておくといいよ。
フォルダを作って格納したら、中の画像を連番にリネームしてね。
(ファイル名の連番変換なんかは賢い諸兄ならすぐできるよ)
【2023/12/2追記】
この時、子フォルダの名前の先頭に付けた数値が、学習する際の
繰り返し回数に適用されるよ。
1_test → 繰り返し1回
10_test → 繰り返し10回
素材画像の数にもよるけど、20枚なら試しに10回くらいだと早く終わるよ。
精度上げるには沢山必要らしいけど、時間がかかるからね
用意した画像にタグ付け
学習させるためには集めた素材画像にタグをつける必要がある。
Stable Diffusionに「Tagger」っていう拡張を入れて作業するので
まだ使ってない人はインストールしましょう。
LoRA関係なし普通に便利だから入れておくといいよ。
Tagger使えるようになった?
Stable Diffusion WebUI開いたら続きいくよ?
「Input directory」:学習用画像を保存したフォルダを選ぶ
「Additional tags (comma split)」:LoRA化した際の呼び出しキーワードにしたいタグを入力(今回は適当にtester girl)
インタロゲートを実行すると、次のようにタグ情報の記載されたテキストが生成される。
要るタグ、要らないタグの選別
タグ編集用ツールの準備
やぁ、ようこそバーボンハウスへ(´・ω・`)
学習にタグ付けが必要だと言ったけど、実は学習させたいタグ、させたくないタグは自分で指定しないといけないんだ。すまない。
じゃあ早速編集のために使うStable Diffusionの拡張機能
「Dataset Tag Editor」をインストールしてこようか。
タグ編集作業の準備
StableDiffusion WebUIを開いたら、「Dataset Tag Editor」を選択
「データセットディレクトリ」に素材画像を保存したフォルダを選んで
「読み込み」
読み込みが終わると、左に解析した画像、右に解析した結果のタグが表示
編集のため右側の「キャプションの一括編集」タブに移動する
さらに下のタブにある「削除」タブを開く
右下のタグのチェックリストからLoRAに「覚えてほしい」要素に
チェックを入れて、そのあと削除する作業がはじまるよ。
英語がわからないのは翻訳ツール片手にがんばろうね。
タグ編集作業
人物そのものを学習させたい場合
LoRA当てたらキャラを再現したい(服装は変わってほしい)なら
体の特徴にチェックを入れていく
「blue hair(青髪)」「multicolored hair(複数の髪色)」
「long hair(長髪)」「blunt bangs(パッツン)」
「dark skin(褐色)」「brown eys(茶色の目)」 など
服装を学習させたい場合
逆にLoRA当てたらコスプレできるようにしたい(キャラは変わってほしい)なら服関係にチェックを入れていく
「standing, black ribbon(立っている黒いリボン)」
「off shoulder(肩出し)」「long sleeves(長袖)」
「pink skirt(ピンクのスカート)」「white socks(白い靴下)」など
チェックを入れない(=削除しない)タグ
ポーズや表情、構図など、覚えてほしくないタグにはチェックを入れない。
「full body(全身表示)」「looking at viewer(こちらを見る)」
「open mouth(口を開ける)」「smile(笑顔)」など
泣いたり笑ったり出来なくなっちゃうね
注意事項
ややこしいけど、LoRAに「残したいもの」を「削除(チェックを入れる)」
あと呼び出しキーワードとして登録したタグ(今回だと「tester girl」)は
「削除しない(チェックを入れない)」こと
タグの削除
削除したらチェックした部分が消えるので、最後に画面上部の
「すべての変更を保存」で
タグ付けの作業で出来たテキストに反映されるよ。
テキスト確認すると、チェックした分が減っているよ
タグ編集はここまで、お疲れさまでした。もうちょっとだけ続くんじゃ。
学習元になるモデルファイルの準備
LoRAは追加学習だって聞いたことあるよね?
「元になるモデル」+「今回の素材」=「自作LoRA」
なので、元になるモデルをダウンロードしてこようね。
どんなモデルを使うかだけで記事が沢山出来ちゃうレベルだから
今は何も考えずオススメされてることが多い「AnyLoRA」使おね。
学習用パラメーターの設定
Kohya’s GUIで学習用の設定
いよいよKohya’s GUIに戻ってきたよ。
「LoRA」タブの中にある次の3つを設定していくよ。
「Source mode」:学習元モデルの選択
「Folders」:「学習用画像フォルダ」と「出力先」の場所を選択
「Parameters」:学習に使うパラメーターの設定
「Source mode」:学習元モデルの選択
「Model Quick Pack」:「custom」
「Pretrained model name or path」:
右のほうのボタンからダウンロードしてきた「AnyLoRA」モデルを選択
「Folders」:「学習用画像フォルダ」と「出力先」の場所を選択
「Image folder」:学習素材を入れたフォルダを指定
「Output folder」:学習後のLoRAのファイルを出力するフォルダを指定
「Model output name」:学習後のLoRAの名前を指定
「Parameters」:学習に使うパラメーターの設定
まず「Basic」タブで、次の値をデフォルト値から変えるね。
「Train batch size」:2
「Epoch」:10
「Save every N epochs」:5
「Caption Extension」:.txt
「Mixed precision」:bf16
「Save precision」:bf16
「Network Rank (Dimension)」:128
次に「Advance」タブで、次の値をデフォルト値から変える。1つだけよ
「Clip skip」:2
パラメーターの保存
ここまでの設定は、上の方にある「Configuration file」の「Save as…」から
保存しておくと、以降は「Open」ですぐ呼び出せるようになるよ。
学習開始、GPUちゃん頑張れ
Kohya’s GUIで学習開始
どの画面でもよいので下の方にある「Start training」で学習が開始される。
特に完了とか出てこないので、上のようにSteps:100%になっていれば
出力先に選んだフォルダに指定した名前でLoRAファイル(.safetensors)が
出来ている。
出来立てのLoRAを使ってみよう
使い方は過去記事でやったからそちら見てね
出来上がったファイルを所定の位置に配置して、StableDiffusion WebUI起動
試しにLoRAを指定せずに、キーワードに指定したタグで生成してみる。
tester girl,
次に出来たLoRAを指定して同じプロンプト、同じシード値で生成してみる。
tester girl,<lora:last:1>,
さらに、学習させるときに「削除した」タグ達をいくつか付けてみる。
表示されてないジャケットとかスカートとかX型の髪飾りとかね
tester girl,x hair ornament,miniskirt,off shoulder,long hair,pink skirt,jacket,jewelry,<lora:last:1>,
プロンプトの影響じゃない?ってことで、プロンプトとシード値そのままでLoRAだけ外してみる
tester girl,x hair ornament,miniskirt,off shoulder,long hair,pink skirt,jacket,jewelry
おわりに
今回はやったー!うごいたー!を体験するために最低限だけやってみたけど
実用レベルに持っていくにはチューニングが大事
例えば
・学習させる画像はどんなの良いか?
・画像に付けるタグはどんなのが良いか?
・ベースとなるモデルはどう選定すれば良いか?
・各種学習パラメータはどういう影響を及ぼすのか?
などなど、考えることは山のようにあるよね。
それぞれとても重たそうなので、勉強することあったら記事にするね。
【2023/12/2追記】
LoRAが上手いこと反映されなかったから検証したことを記事にしたよ。
この記事が気に入ったらサポートをしてみませんか?