
ベースモデルに対して別のモデルを適応させて、よりターゲットに近い画像を生成できる技術がLoRAです。
有志の方が作成したLoRAをダウンロードして使う方が多いと思いますが、学習環境を整えれば自分で作成することもできます。
自分でLoRAが作成できると特定のモデルに好きなキャラクターやポーズ、服装などを自由に適応させることが可能です。
導入方法はさまざまですが、今回は初心者の方でも比較的導入しやすい「kohya_ss GUI」というツールをご紹介します。
ちょっと長いですが飛ばせる部分もあるので、自分のペースで進めてみてください。
- 自分で画像を学習させたい
- 学習させたLoRAで画像生成を楽しみたい
- 学習環境を構築する方法がしりたい
なお、「Stable Difussion Web UI」と連携する部分もあるため、インストールがまだの方はこちらを参考にしてみてください。


kohya_ss GUIとは?
LoRAの学習・生成ができるsd-scriptsをGUIで使えるようにしたものです。
Kohyaさんという方がsd-scriptsを開発し、bmaltaisさんがkohya_ss GUIを作成してくれました。
通常コマンドラインを書いてフォルダを指定したり、学習させたりしますが、kohya_ss GUIはWebアプリケーションで動かせるため、視覚的に操作がしやすいです。
仕組みがわからなくても順番に設定すれば動かせるため、初心者の方にもおすすめのツールです。
なお、kohya_ss GUIだけで約8GBほどのファイルがインストールされるので、事前にストレージを確保しておいてください。
LoRAの学習環境構築に必要なものをインストール
LoRAの学習環境を構築するには、以下のものが必要です。
- Python 3.10
- Git for Windows
- Visual Studio 2015, 2017, 2019, and 2022
Python 3.10のインストール
kohya_ss GUIはほぼPythonというプログラム言語で動いているため、Pythonのインストールが必要です。
公式ページだと23年5月時点で、Python 3.10.9へのリンクが貼られています。
下記リンクからページ下部にある「Files」に行き、お使いの環境に合わせてインストーラーをダウンロードしてください。


「Add python.exe to PATH」にチェックを入れてから「Install Now」をクリックします。

自動的にインストールが始まるので、終わったら画面を閉じてPythonのインストールは完了です。

Git for Windowsのインストール
Git for windowsはWindows環境でGitを使うためのソフトウェアです。
Gitで公開されているアプリケーションをインストールするために、Git for windowsが必要になります。
まず下記リンクに行き、ダウンロードをクリックします。

ダウンロードしたファイルを起動するとインストールが始まります。
項目は多いですが、全て「Next」で問題ありません。
















最後の「View Release Notes」は更新履歴が確認できるものなので、チェックは外しても大丈夫です。
Finishをクリックすれば、Git for Windowsのインストールは完了です。
Visual Studio 2015, 2017, 2019, and 2022のインストール
Visual Studioはマイクロソフト社が開発・提供する統合開発環境です。
開発に必要なツールがパッケージされたもので、さまざまなツールがインストールできます。
以下のリンクから「https://aka.ms/vs/17/release/vc_redist.x64.exe」をクリックしてインストーラーをダウンロードします。

起動したら「ライセンス~」にチェックを入れてインストールをクリックします。

終わったら「閉じる」をクリックしてインストール完了です。

kohya_ss GUIをインストールする方法
「kohya_ss GUI」をインストールする手順は以下の通りです。
- ターミナルを開いてインストールを実行
- セットアップメニューを順に実行
- アップグレードを実行
ターミナルを開いてインストールを実行
まず「kohya_ss GUI」をインストールするフォルダに行きます。
他の方の解説だとStable Difussion内にインストールしている方が多いので、当記事もStable Difussion内にインストールします。
「stable-diffusion-webui」のフォルダを開き、空白部分を右クリックして「ターミナルを開く」を選択します。

そのフォルダのパスでpowershellが起動するので、以下のコマンドを入力します。
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
.\setup.bat
コピペすると警告が出ますが、そのまま実行して大丈夫です。

1行目はcloneコマンドで「kohya_ss」というフォルダを作成して、中に必要なファイルをインストールします。
2行目はチェンジディレクトリしてからセットアップを行うコマンドです。
下記画像の状態で一度止まりますが、そのままEnterを押してください。

セットアップメニューを順に実行
上記のセットアップバッチの起動が終わると、ターミナルにメニューが表示されます。

数字を入力してEnterを押せば、該当する項目を実行できます。
1.Install kohya_ss gui
まず1と入力してkohya_ss guiをInstallします。

インストールするTorchのバージョンを問われるので「2」を入力して、Enterを押します。

必要なモジュールやパッケージがインストールされるので、終わるまで待ちます。

環境によりますが、人によって数分から数十分かかるかもしれません。
全てインストールが終わると、セットアップメニュー4の「Manually configure accelerate」が自動的に実行されます。

ここではいくつか質問されるので以下の順番で回答してください。
- This machine
- No distributed training
- NO
- NO
- NO
- all
- fp16
「*」が付いてる方が選択されている回答で、「NO」と「all」はキーボードで入力する必要があります。
最後のfp16はキーボードの「1」を押せば選択できます。
以下のように表示されていれば設定完了です。

2.(Optional) Install cudann files (avoid unless you really need it)
2は学習速度を向上させるファイルをインストールする手順です。
NVIDIA 30X0/40X0のGPUを使用している方向けのオプションで、公式がインストールを勧めています。
I strongly advise you download them for a speed boost in sample generation (almost 50% on 4090 GPU) you can download them here.
サンプル生成の速度向上 (4090 GPU ではほぼ 50%) のために、これらをダウンロードすることを強くお勧めします。
https://github.com/bmaltais/kohya_ss
2を実行する前に必要なファイルをフォルダ内に入れる必要があります。
以下のリンクを開くと、上記の文章が書いてあるところに飛ぶので、you can download them hereの「here」からzipファイルをダウンロードしてください。
解凍すると中に「cudnn_windows」というフォルダがあるので、そのフォルダを「kohya_ss」のフォルダ内に移動させます。
移動させたらセットアップメニューの「2」を実行します。

このように表示されれば完了です。

3.(Optional) Install specific bitsandbytes versions
これはbitsandbytesというビット操作やバイト操作を簡素化するモジュールのようです。
3を入力して実行するとbitsandbytesのバージョンを指定できます。


以前は0.35.0を使用していたようですが、SDXL用のオプション「--full_bf16」に対応していないようです。
SDXLの学習をしない方は1、SDXLの学習をするなら2か3が無難かと思います。
詳しくは公式を確認してください。
5.Start Kohya_ss GUI in browser
最後に「5」を入力するとGUIが起動します。
このようにWeb UIが表示できていれば「kohya_ss GUI」の導入は完了です。

2回目は以降はsetup.batを起動して、再度5を入力すればWeb UIを開けます。

また「kohya_ss」内にある「gui.bat」を起動して、Ctrlを押しながら以下のURLをクリックでもWeb UIは開けます。

アップグレードを実行
ここは必ず必要な手順ではありません。
23年6月以降アップグレードが頻繁に行われており、その影響で不具合が起きてしまう方も多いようです。
ですので、公式サイトのリリース情報やIssues(問題やバグの報告)を確認してからアップグレードを実行してください。
アップグレード自体は「kohya_ss」内にある「upgrade.bat」を実行すればできます。
画像を学習させてLoRAを作成する方法
続いて実際に画像を学習させ、LoRAを作成する方法について解説します。
- 学習用の画像をダウンロード
- BLIPの設定
- キャプションデータの調整
- 学習元となるモデルの設定
- 正則化画像の用意
- 学習・出力フォルダの設定
学習用の画像をダウンロード
今回学習用の画像は、「東北ずん子プロジェクト」さんが配布しているものを利用させていただきます。
下記URLから「AI画像モデル用学習データ」にあるリンクをクリックします。

Google Driveに飛ぶので、必要なデータを選択してダウンロードします。
01_LoRA学習用データ_A氏提供版_背景白の中にある「zundamon」をお借りしました。

右クリックからダウンロード、またはカーソルを合わせてアイコンからダウンロードできます。

自動的に圧縮が始まり、終わるとzipデータが保存されます。
次に学習用データのフォルダを作成します。
「kohya_ss」の中に「training」というフォルダを作ります。
解凍したファルダに「zundamon」のフォルダがあるので、それを「training」の中に入れます。
階層で表すとこんな感じです。
- kohya_ss
- training
- zundamon
- training
フォルダ名の設定
学習用の画像が入ってるフォルダ名を「100_zundamon girl」に変更します。
これは左から「画像1枚の学習回数、LoRAと紐づける単語、関連付けるプロンプト」です。
学習回数は公式のチュートリアル動画だと、16枚の画像に対して100を設定していました。
明確に推奨されている回数はありませんが、画像枚数*学習回数で1500~1600くらいを目安にすると良いそうです。
LoRAを紐づける単語は、Civitaiのモデルでいうとtrigger wordsになる部分です。
ここで設定したtrigger wordsをプロンプトとして入力すれば、画像生成時にLoRAを適応できます。
最後の単語はプロンプトでgirlと入力して画像を生成したときに、学習させたLoRAの要素を含めるかどうかです。
ここは人それぞれなので、設定しなくても問題はありません。
フォルダ内のテキストデータ
これは同名の画像から生成したキャプションデータです。
このキャプションデータを編集すると、学習時に画像とキャプションの関係性などを調整できます。
デフォルトでキャプションデータが入っていますが、今回このキャプションデータを作成する手順も解説するので、同じ手順で進めたい方はフォルダ内のtxtを削除しておいてください。
デフォルトのキャプションデータを使っても学習はできるので、すぐに進めたい方はこちらの手順に進んでください。
BLIPの設定
画像データが用意できたら、kohya_ss GUIを起動してBLIPの設定をします。
BLIPは「Bootstrapping Language-Image Pre-training」の略で画像情報からキャプションデータを抽出する技術です。
例えばずんだもんのような緑髪のキャラクターなら、「green hair」などの特徴がキャプションデータとして抽出されます。
この画像とキャプションデータを一緒に学習させることで、画像生成時にキャラクターの特徴などが表現しやすくなります。
まず「kohya_ss」内にあるバッチファイル「gui」を起動して、Webアプリケーションを開きます。
Utilities→Captioning→BLIP Captioningのタブを開きます。

「Image folder to caption」に学習用の画像がある「100_zundamon girl」フォルダのパスを入力します。
右側にあるフォルダアイコンからも選択が可能です。
例) C:\Users\user\デスクトップ\stable-diffusion-webui\kohya_ss\training\100_zundamon girl
次にBLIPの設定をしていきます。

①Caption file extension
画像からキャプションデータを作成したときの拡張子です。
通常はtxtのままで問題ありません。
②Prefix to add to BLIP caption
作成するキャプションの接頭辞に入力したい用語を追加できます。
ここにはtrigger wordsを入力します。
今回は「zundamon」と入力してください。
③Postfix to add to BLIP caption
こちらは接尾語に追加する用語を入力します。
特になければ未入力で大丈夫です。
④Batch size
バッチサイズは一度に学習処理させる数を指定できます。
値が大きいほど学習効率は向上しますが、その分GPUメモリの使用量が増えます。
小さいとメモリの使用量を抑え動作も安定しますが、学習速度は落ちます。
一概にどちらが良いとは言えず、スペックや環境によって適切な値が異なります。
最初は1から試して、お使いの環境に合わせて調整してください。
⑤Use beam search
これはキャプションの生成時にbeam searchというアルゴリズムを使うかどうかです。
ものすごく簡単にいうと、より品質の高いキャプションが生成できるようになります。
通常はチェックを入れておくのがオススメです。
⑥Number of beams
これはbeam searchを同時に動かす数が設定できます。
多い方がより幅広い探索をして、その中から最適なキャプションを生成してくれます。
ただこちらも計算量は増えるため、環境に合わせて調整してください。
⑦Top p
beam searchでキャプションの出現確率を計算するとき、設定した閾値以下の中から単語を抽出するそうです。
その閾値をここで設定できます。
値が大きいほど生成されるキャプションの多様性が高まり、低いと偏ったキャプションが生成されます。
ただこの値がどのように影響するのか、詳細はわかりませんでした。
公式のチュートリアル動画だとデフォルトのままなので、わからない場合はそのままにしておきましょう。
⑧Max length
生成するキャプションの最大長です。
デフォルトだと最大75文字以内でキャプションが生成されます。
⑨Min length
生成するキャプションの最小長です。
デフォルトだと最低でも5文字以上のキャプションが生成されます。
全て設定できたら、一番下にある「Caption images」をクリックします。

これでキャプションの生成が開始されます。
GUIだと動作の確認ができないので、ターミナルの方でステータスを確認してください。

「zundamon」フォルダ内にtxtファイルができていれば、無事キャプションデータの抽出は完了です。

キャプションデータの調整
それぞれのキャプションデータを編集することで、学習時に画像との関係性を調整できます。
やらなくてもLoRAは作成できるので、飛ばしても問題ありません。
ただ強く学習させたい要素を自分で選択したり、作成したLoRAで上手く特徴が表現できなかったりした場合は、ここの調整で改善できるかもしれません。
やることは主に2つです。
- 単語ごとに切り分ける
- より学習させたい単語を削除する
単語ごとに切り分ける
画像のキャプションデータの1つを開くと、このようになっています。
zundamon a girl in a green hair skirt and white shirt
画像の特徴をそれぞれ分離させるため、カンマと半角スペースで区切ります。
「a」「in」「and」など、プロンプトに使用しないものは削除で大丈夫です。
zundamon, girl, green hair, skirt, white shirt
より学習させたい単語を削除する
その画像に対して強く印象づけたい単語は削除します。
例えばずんだもんは緑髪が特徴的なので、「green hair」という単語を削除すれば「緑髪」をより強く学習します。
zundamon, girl, green hair, skirt, white shirt
また「skirt, white shirt」などを削除すれば、ずんだもんの服装要素を強く学習させることができます。
特定のモデルに対してずんだもんの服装要素だけ適応させたいときなどに便利です。
削除したワードをプロンプトで入力すると、その特徴を表現できる可能性が上がります。
学習させたい要素に合わせて、調整してみてください。
学習元となるモデルの設定
次にLoRAの学習元となるモデルを指定します。
作成するLoRAがアニメ調であれば、アニメ調の生成が得意なモデルを選択した方がより良い結果が得られます。
今回は「NeverEnding Dream (NED)」というモデルを使用しました。
「Dreambooth LoRA」から「Source model」タブを開いてください。

「Pretrained model name or path」のファイルアイコンをクリックして、元となるモデルを選択します。

AUTOMATIC1111のモデルデータは「"stable-diffusion-webui\models\Stable-diffusion"」の中にあります。
正則化画像の用意
学習元のモデルが決まったら、そのモデルを使った正則化画像を用意します。
ここも必ず必要な手順ではないので、飛ばしても問題ありません。
正則化画像は過学習を防ぐために使用するものです。
例えば最初にフォルダ名を変更して「girl」という単語を紐づけましたが、過学習させてしまうと「girl」にずんだもんの要素が強く結びついてしまう可能性があります。
これを防ぐために、ずんだもんではない「girl」の画像を用意して、girlとずんだもんの要素を切り離すのが正則化です。
上記で設定した学習元のモデル(NeverEnding Dream (NED))で、「girl」の画像をいくつか用意します。
学習画像の枚数により異なりますが、学習画像が10枚なら正則化画像は100枚くらいがいいみたいです。
AUTOMATIC1111で「Batch count」を変更すれば連続で画像生成ができます。

正則化に使用する画像は任意の名前でフォルダを作成して、「kohya_ss」内に置いてください。
学習・出力フォルダの設定
次に学習データがあるフォルダ、LoRAを出力するフォルダなどを設定します。
「Dreambooth LoRA」タブにある「Folders」タブから設定可能です。

①Image folder
学習データの上の階層にあるフォルダを指定します。
ここでは「100_zundamon girl」の上にある「training」を指定してください。
Regularisation folder
正則化画像を入れたフォルダを指定します。
使わない方は未入力で大丈夫です。
Output folder
LoRAデータを出力するフォルダを指定します。
AUTOMATIC1111のLoRAデータは以下のパスに置いてあるので、ここを指定してください。
stable-diffusion-webui\models\Lora
Logging folder
学習するごとに出力されるLogデータを保存するフォルダです。
学習するごとに一時データが入ったフォルダが作成されるので、頻繁に学習を行う場合はまとめておいた方が何かと便利です。

私は「kohya_ss」内に「log」というフォルダを作成してそこを指定しました。
Model output name
出力するLoRAデータの名前を決めます。
ここではそのまま「zundamon」と入力しました。
Training comment
LoRAデータに何かコメントを残したい場合に入力します。
学習回数や元のモデルなどのデータは全て残るため、特になければ空白で問題ありません。
設定の保存
ここまでやってきたモデルやフォルダの設定を保存することができます。
次回の設定が楽になるので保存しておきましょう。
まず「Configuration file」をクリックします。

以下のアイコンが表示されるので、「Save as」をクリックします。

任意の名前を付けて、「kohya_ss」内にjsonファイルを保存します。
今回はsettingとつけました。

次回起動時に「Open」からjsonファイルを呼び出すと、保存した設定が反映できます。
一通り設定ができたら、一番下の「Train model」をクリックします。

GUIだとわからないので、ターミナルの方でステータスを確認してください。

学習が始まりstepsが100%となれば学習完了です。
出力先のLoRAフォルダに「zundamon」のファイルがあるか、確認してみてください。

ちなみに3060Ti(VRAM8GB)で全てデフォルトの設定ですが、1200回の学習で6分21秒かかりました。

学習させたLoRAデータを使って画像を生成する方法
Stable Difussion Web UIを起動して学習させたLoRAデータを使ってみます。
バッチファイルを起動してStable Difussion Web UIを開きます。
花札アイコンをクリックして「extra networks」を開きます。

LoRAタブにある「zundamon」をクリックすればLoRAのプロンプトが入力できます。
以下のように入力して画像を生成してみました。
<lora:zundamon:1>,zundamon,girl

これだけでもずんだもんに近い画像が生成できていると思います。
ウェイトを変更したり、特徴的なプロンプト(green hair,ears)を入れると、ずんだもん要素を保ったまま、さまざまな画像生成が可能です。
画像生成をしながらウェイトやプロンプトを調整して、理想の画像を目指してみてください。
Kohya_ss GUIの構築で発生したエラー
Kohya_ss GUI構築中に発生したエラーと解決方法についてご紹介します。
subprocess.CalledProcessError
一度「subprocess.CalledProcessError」と出て学習が進みませんでした。
このエラーはいろいろ原因があるようで、私の場合は設定ミスとディレクトリを移動させたことが原因です。
1回目は元となるモデルの設定で、拡張子「.info」のファイルを選択してしまったときです。
2回目は「Kohya_ss GUI」をインストール後に、別のディレクトリに移動しても動くか試したところ、このエラーが出て学習ができませんでした。
もしこのエラーが出た場合は、設定や指定したディレクトリなどを見直してみてください。
バッチファイルが起動できないエラー
2023/06/04のアップデートでインストール方法が変わり、従来の方法でインストールしたguiが起動できませんでした。
gui.batを起動すると以下のメッセージが表示され一瞬で消えてしまい、Web UIが開けない状態です。

modules installed outside the virtual environment were found.
this can cause issues. Please review the installed modules.
You can deinstall all the local modules with:
deactivate
pip freeze > uninstall.txt
pip uninstall -y -r uninstall.txt
同じ症状の方もいるようで、公式で質問しています。
結論から言うと具体的なエラーの詳細はわかりませんでした。
ただ新しいインストール方法を最初から試したところ、しっかり起動できました。
メッセージ自体は今でも表示されますが、そのあとにしっかりバッチファイルが起動できています。
ですので、同じエラーが出る方はupgrade.batを実行後、setup.batから新しいインストールを試してみてください。
それでも無理なら一度フォルダごと削除して、最初からインストールをおすすめします。
UnicodeDecodeError
kohya_ss GUIのインストールでTorchのバージョンを選択した後、モジュールやパッケージインストール時に以下のエラーが出ました。
UnicodeDecodeError: 'cp932' codec can't decode byte 0x87 in position 26: illegal multibyte sequence
あまり詳しくわかっていないのですが、cp932という文字コードでデコードすると表示されるエラーのようで、utf-8でデコードするように指定しないといけないみたいです。
これは環境変数でPYTHONUTF8=1と設定したら無事インストールできました。
win11で環境変数を設定する方法は以下の通りです。
Windowsの検索からコントロールパネルと入力してクリックします。

システムとセキュリティに進みます。

システムに進みます。

関連リンクの「システムの詳細設定」を開きます。

システムのプロパティ画面が表示されるので、環境変数をクリックします。

ユーザー環境変数の「新規」をクリックします。

変数名に「PYTHONUTF8」、変数値に「1」を入力してOKを押します。

この設定を行ってから試したところ、エラーが出ずにkohya_ss GUIがインストールできました。
UnicodeDecodeErrorでインストールが進まない方は試してみてください。
「kohya_ss GUI」のインストールとLoRA学習方法まとめ
今回は「kohya_ss GUI」のインストールとLoRA学習方法について解説しました。
- kohya_ss GUIとは?
- LoRAの学習環境構築に必要なもののインストール
- kohya_ss GUIをインストールする方法
- 画像を学習させてLoRAを作成する方法
- 学習させたLoRAデータを使って画像を生成する方法
- LoRAデータの学習で発生したエラー
手順は多いですが、一度導入を経験してしまえばなんとなく使い方はわかるようになります。
何より自分でLoRAが作成できると生成できる画像の幅がグッと広がるので、画像生成AIを使うなら導入しておいて損はありません。
自分でLoRAデータを作成して画像生成を楽しみたい方は、ぜひ挑戦してみてください。
コメント
他の記事でもいつもお世話になっているんですが、このkyohya_ss.guiのインストールは、この記事がなければ絶対インストール出来なかったと思えるので、本当に助かりまくりました。ありがとうございます!これからもサイトを楽しく拝見させていただきます!
コメントありがとうございます!
お役に立てたみたいでよかったです!
今後ともよろしくお願いいたします。
お世話になります。
こちらのサイトを拝見させていただき、構築手順の「1.Install kohya_ss gui」まではうまくいったのですが2.Install cudann files 飛ばして3.Manually configure accelerate を試してみたもののどちらもエラーや手順と違う動きをして起動できませんでした。
何か手立てはありますでしょうか...?
コメントありがとうございます。
どんなエラーかによって解決方法が異なるため、エラー内容がわからないと具体的なことをお伝えするのは難しいです。
なお、インストール手順が新しくなっており、私の環境でもUnicodeDecodeErrorでインストールできない状態になっていました。
インストール方法が確認でき次第、記事を修正する予定ですので、同じエラーの場合はお待ちいただければ幸いです。
ただ少し苦戦している状態なので、解決できなかったらすみません。
・追記
UnicodeDecodeErrorエラーは解決できたので、新しいインストール方法と解決方法を追加して記事を修正しました。
もし私と違うエラーだった場合は、具体的な内容を頂ければお答えできるかもしれません。
よろしくお願いいたします。