自作LoRAならこれ一択!「Kohya」の丁寧すぎる使い方解説【Windows版】

Quup AIのトップ画像
オリジナルAIのビジネス利用なら
「Quup AI」

だれでもカンタンにカスタムAIを作成できます。
作成したBOTは、LINE botやWeb埋め込み、社内チャットに導入することができます。すべて、「エンジニアいらずで」実現できます。




島の探検家
自作LoRAって、Stable Diffusionの拡張機能でできるのもあるらしいけどどうなの?
島の管理人
sd-webui-train-tools」ね!これは実は半年以上前から更新されてなくて使えない例が多いんだよ
島の探検家
Kohya一択ってことか
島の管理人
クオリティの面からもKohyaがおすすめ!
では、さっそくKohyaをWindowsで導入する手順を紹介していきます。もちろん、NVIDAのグラフィックボードを積んだWindows PCである必要があります。
Google ColabでLoRAを作成したい方は以下の記事を参考にしてください!
note(ノート)

LoRAをGoogle Colabで簡単に作りたい! ただ、現状、Google Colabを使ってGUI(マウス操作)だ…

事前に必要なもの・いれといたほうがいいもの

Stable Diffusionを使ってるなら追加で必要なものはありません。
ただ、Pythonのバージョンが一つになっているなら、pyenvでバージョン管理をしたほうがいいかもしれません。(バージョンが合わないと使えない場合もあります)

・Python 3.10系
・Git
Visual Studio

・pyenv

Kohyaのインストール手順

まずは、導入するフォルダーを決定します。今回私は、Stable Diffusionの隣におきますがどこでも大丈夫です。
> ls
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2024/01/10 14:04 StableDiffusionWebUI
つぎにKohyaをダウンロードします。(https://github.com/bmaltais/kohya_ss
git clone https://github.com/bmaltais/kohya_ss
cd .\kohya_ss\
現在使っているPythonのバージョンを確認します。Python 3.10系であればOKです。(推奨は3.10.9です)
> python --version
Python 3.10.6
それ以外が入っている方はpyenvを導入しましょう。pyenvは、今後、Pythonのプロジェクトが増えていくなら必須のツールなので、今回バージョンが3.10だった方も入れておいて損はありません。(→ Windowsへのpyenv導入手順
pyenvでPython 3.10.9を使うのはどうしたらいい?
Kohyaのフォルダー内で行います。

pyenv install 3.10.9 # 少し時間がかかります
pyenv local 3.10.9

これで、Pythonのバージョンが変わっていたら問題ないです。

> python --version
Python 3.10.9

これでバージョンが切り替わらない場合、こちらの記事(https://teratail.com/questions/323659)を参照してみてください。

次にKohyaのセットアップを行います。

.\setup.bat

※もし、Creating venv…だけで実行が終了してしまった場合、再度「.\setup.bat」を実行してください。

Enter your choceでは「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: 1

かなり時間がかかりますが待ちます。処理が完了したら、次に、Enter your choceで「5」を選択します。

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: 5

するとKohyaのGUIの画面が立ち上がります。

KohyaのGUI画面

自作LoRAの作成手順

さっそくKohyaを使っていきたいところですが、まずはLoRA学習用のデータを用意する必要があります。

  1. Stable Diffusionで学習用データを用意する
  2. KohyaでLoRAを作成する

Stable Diffusionで学習用データを用意する

島の探検家
あれ、Kohya使わないの?
島の管理人
まずはデータを整えるのに、Stable Diffusionを使う必要があるよ!

必要なStable Diffusionの拡張機能は2つです。

Tagger

Dataset Tag Editor

Stable Diffusioinの拡張機能の導入方法はわかりやすく画像付きで解説しているので「Stable Diffusionの拡張機能のインストール/停止/削除/アップデート方法」をチェックしてください。

また、Kohyaの中にoutputstrainingtraining_archive、というフォルダーを作っておきます。

Kohyaのディレクトリ構造

outputs 作成したLoRAの格納場所
training LoRA学習用の画像格納場所
training_archive 過去にLoRA学習した画像の格納場所(2回目以降必要になります)

trainingフォルダーの中に、さらにフォルダーを作ります。

ここで注意なのが、[学習の繰り返し回数]_[トリガープロンプト]という名前付けをする必要があり、なんでもつけていいわけではありません

また、このトリガープロンプトは今後も使うので決め切っておいてください。今回は、20_ikkeiというフォルダーを作り、その中に学習させる画像を格納していきます。

学習の繰り返し回数は多ければいいというわけではないので、とりあえず20に設定しましょう、(後で解説します)
どんな画像を用意すればいい?画像の条件と最適枚数
画像選定では、ここらへんを最低限守りましょう。
・クオリティが低いものはいれない
・顔全体が映っている(顔を学習させたい場合)
・横顔や笑顔などが含まれている(顔を学習させたい場合)
学習させる画像の枚数は、20~30枚くらいでOKです。
画像のサイズ・縦横比はバラバラでOKです。
画像の名前が連番になっていない場合
Windowsでは一括で名前変更をすることでファイル名を連番にすることができます。
まずWindowsエクスプローラーで今回学習する画像を一括選択してください。
Windowsエクスプローラーで画像全選択しているところ
一括変更したそのまま、右クリックをして、その他のオプションを確認をクリックします。
Windowsエクスプローラーで右クリックしているところ
名前の変更をクリックします。
Windowsエクスプローラーで右クリックしてその他のオプションをクリックしたところ
なんでもいいので名前を付けてください。一応名前はアルファベットを使用するようにしましょう。
Windowsエクスプローラーで画像で名前変更したところ
完成です!
Windowsエクスプローラーで画像で名前一括変更後

Kohyaのディレクトリ構造(training内)

Tagger

Taggerは画像からそれぞれプロンプトを抽出してテキストファイルにまとめてくれる拡張機能です。

TaggerをStable Diffusioinにインストール出来たら、先ほど学習画像を格納したフォルダーのパスをコピーしてきてください。

Lora学習のためのTagger使用例

Input directory 学習画像を格納したフォルダー
Output directory 学習画像を格納したフォルダー
Additional tags (comma split) トリガープロンプト

Interrogateをクリックしてしばらく待ちます。

実行が完了したら以下のような画面になります。これでTaggerの工程は完了です!

Lora学習のためのTaggerを実行したあと

Dataset Tag Editor

Taggerで抽出したプロンプトを手動で修正します。

まずは、画像を読み込むため、Dataset directoryにTaggerの時と同じく学習画像を格納したフォルダーを入れて、Loadをクリックします。

Dataset Tag Editorで画像をロードする

画像の読み込みが終わったら、次はプロンプトの一括編集を行います。

Batch Edit Captions > Removeから学習してほしいタグにチェックをつけて、Remove selected tagsをクリックします。(え?学習するほうを削除するの?と思わたと思うので下で解説します)

Dataset Tag Editorでタグを削除する画面

学習してほしいプロンプト
・的外れなプロンプト(今回だと、男なのに「1girl」とか)
・学習してほしくないプロンプト(つまり、学習してほしい画像にくっついているいらない情報。例えば、植物があるとか、白いシャツを着ているとか)
・トリガープロンプト(今回はikkei)
島の探検家
え、学習してほしいプロンプトのほうを削除するの?
島の管理人
そう!このプロンプトの役割は、この画像は普段と違うこんな特徴があるってことをLoRA学習の時に伝えるためなんだよ
島の探検家
だから残すべきなのは、学習しなくていい内容ってことか。「closed eyes」状態の顔をそのまま学習されても困るもんなあ
島の管理人
そ!LoRA学習の時に、目を閉じている画像があればこれは「closed eyes」状態なんだよって教えてあげるために残すイメージかな
島の探検家
なるほど!逆に、白TシャツをLoRAに反映させたいなら「white shirt」も消すってことであってる?
島の管理人
正解!

最後に、Save all changesをクリックするのをお忘れなく!

Dataset Tag Editorで変更を保存するボタン

(押しても変化がないように見えますが、画像フォルダーの中身のtxtファイルからタグが削除されてたらOKです)

Dataset Tag Editorでタグを削除したあとのファイル一覧

KohyaでLoRAを作成する

いよいよKohyaを使って自作LoRAを作っていきます。Kohyaの画面に戻ってくださいね!GUIの画面は立ち上がったままでしょうか?

島の探検家
ついにLoRA作成か!
島の管理人
長かったね!あとちょっとだよー
まずは、Kohyaの最上部のメニュータブでLore > Trainingを選択しておきます。(Dreamboothも似た画面なのでご注意ください)
あらかじめ設定するタブ(画面)をリストにまとめておきます。(Lore > Trainingは変化しませんが一応書いておきます)
  • Lore > Training > Source model
  • Lore > Training > Folders
  • Lore > Training > Parameters > Basic
  • Lore > Training > Parameters > Advance

Lore > Training > Source model

ここは、実写・リアル系であればデフォルトの設定のままで大丈夫です。

KohyaのTraining > Source modelの設定画面
アニメ系の画像を学習させたい場合
アニメ系の場合は、AnyLoRA(リンクに飛びます)をダウンロードする必要があります。
Model Quick Pickcustomを選択して、Pretrained model name or pathでダウンロードしたsafetensorsファイルのパスを指定してください。
safetensorsファイルの格納場所はどこでも大丈夫ですが、Kohyaの中に作ったtrainingフォルダーなどと並べてmodelというフォルダーを作り、そこに入れておくのがいいでしょう。
Kohyaのモデルを格納しているファイル一覧
Kohyaのアニメ用のLora Any Loraを選択している画面

Lore > Training > Folders

まず、前に作ったKohyaのoutputsフォルダーに、新しく[学習の繰り返し回数]_[トリガープロンプト](今回だと20_ikkei)という名前のフォルダーを作ります。

KohyaのoutputsフォルダーにLoraフォルダーを作成してる画面

あとは、以下の画面のように3箇所入力してください。

KohyaのTraining > Foldersの設定画面

Image folder 学習画像を格納したフォルダーの親フォルダー(= trainingフォルダー)
Output folder 今作ったoutputs内のフォルダー
Model output name [学習の繰り返し回数]_[トリガープロンプト]
島の探検家
あれ、Image folderには1つ上の階層のパスをいれるの?
島の管理人
そう!ここ間違いやすい!あと、trainingフォルダーにはその時学習させたいものだけいれるように注意ね
trainingフォルダーに複数フォルダーがあると全部学習してしまうので、過去につかったものがあれば、フォルダーごとtraining_archiveフォルダーに移動させましょう

Lore > Training > Parameters > Basic

このParametersの設定がLoRAのクオリティに影響します。

とりあえず、色々検証した結果、以下の設定が最適でした

もっと知りたい方向けにあとで少し設定について解説します。

KohyaのTraining > Parameters > Basicの設定画面

Train batch size 一度に処理されるデータポイントの数です。小さなバッチサイズはメモリ効率が高く、大きなバッチサイズはトレーニング速度が速い傾向があります。設定値:2
Epoch エポック数はトレーニングの繰り返し回数を表します。設定値:8
Save every N epochs モデルのトレーニング中にモデルのチェックポイントを保存する頻度を指定します。細かく設定することで最適なエポック数のモデルが分かります。設定値:2
Caption Extension キャプションファイルの拡張子を指定します。設定値:.txt
Mixed precision/Save precision モデルの浮動小数点精度の設定を指します。設定値:fp16
Network Rank (Dimension) モデルのネットワーク構造の次元数を指します。次元数はモデルの複雑さを示します。設定値:128
LoRA学習の精度の面で重要なのがEpochの数です。
Epoch数(トレーニングの繰り返し回数)は多ければ多いほどいいというわけではありません
画像の枚数 × 学習の繰り返し回数 × Epoch数 = ステップ数
このステップ数を計算して、2000~5000になるくらいが良いとされています。(学習の繰り返し回数は、20_ikkeiの20の部分ですね)
今回の例ですと、28枚×20回×8回 = 4480がステップ数です。
Save every N epochs2に設定しているため、Epoch数が2, 4, 6の時のアーカイブも残ります。そうすることで、ステップ数を段階ごとにチェックすることができ、最適なLoraを得ることができます

Lore > Training > Parameters > Advance

ここでは、Clip skipを2に設定するだけでOKです。

KohyaのTraining > Parameters > Advanceの設定画面

トレーニング開始

どのタブからでもいいので、Kohyaの画面下にあるStart trainingをクリックしてLoRA学習を開始します。
Kohyaのトレーニング開始ボタン
押しても変化がないように見えるのですが、ターミナルを開くと以下のような処理が進んでいることが分かります。(ちないに、最初はモデルの読み込みに時間がかかります)
Kohyaのトレーニング実行中のターミナル
「ImportError: No bitsandbytes / bitsandbytesがインストールされていないようです」の対処法
Kohyaをインストールしたフォルダーで以下を実行してください。(Kohyaのセットアップで使ったsetup.batがある階層と同じところです)

.\venv\Scripts\pip.exe uninstall bitsandbytes
.\venv\Scripts\pip.exe install bitsandbytes-windows

しばらくするとoutputsフォルダーの中にsafetensorsファイルが格納されます。これが僕のLoRAです!

Kohyaで自作Loraが完成したoutput

自作LoRAを使って画像生成をする

ではこのLoRAを使って、Stable Diffusionで画像を生成をしてみます。

とりあえず、20_ikkei.safetensorsを使います。

modelにはBra v7を使用しました。(リアル系のアジア人が得意なモデルですね)

prompt

Zuri from USA, long frizzy [blue-black:.3] hair, (masterpiece,best quality:1.4),(8k,raw photo,photo realistic:1.2), realistic, 1man, single-fold eyelid, 1boy, asian, front, looking at view, short hair, <lora:20_ikkei:1>

Negative Prompt

painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured, painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured, photo, deformed, black and white, realism, disfigured, low contrast, painting, stripes, sketches, monochrome, grayscale, text, watermark, title, (low quality, lowres, worst quality, medium normal quality:1.4), (bad anatomy:1.8), poorly drawn face, , 0001SoftRealisticNegativeV8-neg, (UnrealisticDream:1.2), animal ears, bad-hands-5, bad-picture-chill-75v, bad_pictures, BadDream, badIrisNeg

あとの設定はこんな感じです。

Loraで画像生成時の細かい設定

そして、これが実際の僕(ikkei)です。

庄司一慶の写真

さて、この僕の画像とどれくらい似ている画像ができるのか…画像生成をスタートしてみましょう…。

1000枚でバッチ処理して放置します。

約3時間後…

できました!

庄司一慶の自作Loraでの生成画像

ちょっと目元の雰囲気がもとのBraモデルに影響されていますが、眉毛・鼻・口・髪型はかなり精度がいいのではないでしょうか?

プロンプトで、涙袋を消して、もっと一重にしたらまんま僕ですね。LoRAを使っていてもプロンプトは大事です。

横顔はこんなかんじ。ちょっとまだ学習が足りていない感じですね。イケメン度が強すぎる気がします。

庄司一慶の自作Loraでの生成画像(横顔)

庄司一慶の自作Loraでの生成画像

ここからさらにプロンプトを調整して、より僕に近づけていきます。

プロンプトで一重を強調したり、ネガティブプロンプトで顔に関するものを削除しました。

Prompt

Zuri from USA, long frizzy [blue-black:.3] hair, (masterpiece,best quality:1.4),(8k,raw photo,photo realistic:1.2), realistic, realistic skin, detailed skin:1.2, 1man, slant eyes:1.5,single eyelids:1.2, monolid:1.2, 1boy, asian:1.2, asian man, japanese, front, looking at view, short hair, <lora:20_ikkei>

Negative Prompt

tear bag:1.5, dark circles:1.2, bags:1.5, Beard, painting, bad-image-v2-39000

庄司一慶の自作Loraでの生成画像(プロンプト調整後)

庄司一慶の自作Loraでの生成画像(プロンプト調整後)

庄司一慶の自作Loraでの生成画像(プロンプト調整後)

庄司一慶の自作Loraでの生成画像(プロンプト調整後・横顔)

島の探検家
きたーーー!完全一致!
島の管理人
LoRAがあってもプロンプトは大事ってことだね!

庄司一慶の自作Loraでの生成画像(女性バージョン)

島の管理人
プロンプト次第でこんなものできてしまう
島の探検家
これは…。あかんやつや……。

このようにクオリティが高くなるLoraの使い方だったり、アニメ系・実写系それぞれのおすすめの設定や、効率の良い検証方法は別でまとめますので乞うご期待です。

Quup AIのトップ画像
オリジナルAIのビジネス利用なら
「Quup AI」

だれでもカンタンにカスタムAIを作成できます。
作成したBOTは、LINE botやWeb埋め込み、社内チャットに導入することができます。すべて、「エンジニアいらずで」実現できます。

自作Loraを作成している画面
最新情報をチェックしよう!
>オリジナルAIのビジネス利用なら「Quup AI」

オリジナルAIのビジネス利用なら「Quup AI」

だれでもカンタンにカスタムAIを作成できます。
作成したBOTは、LINE botやWeb埋め込み、社内チャットに導入することができます。すべて、「エンジニアいらずで」実現できます。

CTR IMG