見出し画像

【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)が必要かはとりあえず動かしてみてから考えればいいよ。

私の環境だと学習開始時に「bitsandbytes」がインストールされてない
って怒られたので、後から(Optional) Install specific bitsandbytes versions
からv3.5をインストールしたよ。

手順最後まで行って分かったこと

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直入力

「http://127.0.0.1:7861」

Stable DiffusionのWebUIみたいな画面が出てくる

画面を閉じて一旦忘れる

学習を始める前に、学習させるデータの下ごしらえがいるんです。
なので、一旦「Kohya's GUI」のことは忘れて?

そして、ここからが理解にカロリー使うからやること整理しておくね。

・学習に使う画像を用意する
・用意した画像にタグ付け
・要るタグ、要らないタグの選別
・学習元になるモデルファイルの準備
・学習用パラメーターの設定
・学習開始、GPUちゃん頑張れ


学習に使う画像を用意する

「読者よ、お前は学習するのに512x512のような正方形画像が必要だと思っているようだが・・・」

「別に正方形でなくても学習できる」

出典:ソードマスターなんとか

背景を透明にした方がいいとか、沢山あった方がいいとか所説あるけど
とりあえず今回は動かして成功体験を得ることが優先なので細かいことは考えません。

インターネット上の画像を学習に使うことには色々と問題がありそうなので
個人的にはVRoidStudioのサンプルの子とか使いやすいと思いました。
無料でダウンロードできるツールで開始5秒でこの子触れるから便利よ。

全体とか
表情とか
横顔とか

集めた画像を格納する

集めた素材を格納するフォルダを作成するんだけど
最後に学習するとき

画像があるフォルダの「親フォルダ」を指定する必要があるので

親フォルダ→子フォルダ→集めた画像

っていうフォルダ構成にしておくといいよ。

フォルダを作って格納したら、中の画像を連番にリネームしてね。
(ファイル名の連番変換なんかは賢い諸兄ならすぐできるよ)

こんな感じ

【2023/12/2追記】

この時、子フォルダの名前の先頭に付けた数値が、学習する際の
繰り返し回数に適用されるよ。

1_test → 繰り返し1回
10_test → 繰り返し10回

素材画像の数にもよるけど、20枚なら試しに10回くらいだと早く終わるよ。
精度上げるには沢山必要らしいけど、時間がかかるからね


用意した画像にタグ付け

学習させるためには集めた素材画像にタグをつける必要がある。
Stable Diffusionに「Tagger」っていう拡張を入れて作業するので
まだ使ってない人はインストールしましょう。
LoRA関係なし普通に便利だから入れておくといいよ。

Tagger使えるようになった?
Stable Diffusion WebUI開いたら続きいくよ?

タグ付け(Tagger)のディレクトリから一括処理を選ぶ

「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」)は
「削除しない(チェックを入れない)」こと

タグの削除

今回は身体の特徴も服装もどちらも覚えるような感じにした
終わったら「選択したタグを削除する」で削除する

削除したらチェックした部分が消えるので、最後に画面上部の
「すべての変更を保存」で
タグ付けの作業で出来たテキストに反映されるよ。

テキスト確認すると、チェックした分が減っているよ

拡張子.000はバックアップファイル

タグ編集はここまで、お疲れさまでした。もうちょっとだけ続くんじゃ。


学習元になるモデルファイルの準備

LoRAは追加学習だって聞いたことあるよね?
「元になるモデル」+「今回の素材」=「自作LoRA」
なので、元になるモデルをダウンロードしてこようね。

どんなモデルを使うかだけで記事が沢山出来ちゃうレベルだから
今は何も考えずオススメされてることが多い「AnyLoRA」使おね。


学習用パラメーターの設定

Kohya’s GUIで学習用の設定

いよいよKohya’s GUIに戻ってきたよ。

「LoRA」タブの中にある次の3つを設定していくよ。
「Source mode」:学習元モデルの選択
「Folders」:「学習用画像フォルダ」と「出力先」の場所を選択
「Parameters」:学習に使うパラメーターの設定

これから3つとも設定していくよ

「Source mode」:学習元モデルの選択

「Model Quick Pack」:「custom」
「Pretrained model name or path」:
右のほうのボタンからダウンロードしてきた「AnyLoRA」モデルを選択

「Folders」:「学習用画像フォルダ」と「出力先」の場所を選択

「Image folder」:学習素材を入れたフォルダを指定
「Output folder」:学習後のLoRAのファイルを出力するフォルダを指定
「Model output name」:学習後のLoRAの名前を指定

lastはデフォルト名ね

「Parameters」:学習に使うパラメーターの設定

まず「Basic」タブで、次の値をデフォルト値から変えるね。

Train batch size」:2
「Epoch」:10
「Save every N epochs」:5
「Caption Extension」:.txtMixed precision」:bf16Save precision」:bf16Network Rank (Dimension)」:128
Basicタブその1
Basicタブその2

次に「Advance」タブで、次の値をデフォルト値から変える。1つだけよ

「Clip skip」:2
Advancedタブ

パラメーターの保存

ここまでの設定は、上の方にある「Configuration file」の「Save as…」から
保存しておくと、以降は「Open」ですぐ呼び出せるようになるよ。

これから試行錯誤することになるから保存しておこうね

学習開始、GPUちゃん頑張れ

Kohya’s GUIで学習開始

どの画面でもよいので下の方にある「Start training」で学習が開始される。

長かった・・・
学習中の様子(ここでは11回繰り返してるよ)

特に完了とか出てこないので、上のように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が上手いこと反映されなかったから検証したことを記事にしたよ。

版権あるもの学習させるのはいいけど、利用は個人でだけにしようね。  SNSとかに投稿しちゃうと業界に迷惑がかかるよ。

出典:みんな


この記事が気に入ったらサポートをしてみませんか?