1. HOME»
  2. AI»
  3. AI画像生成»
  4. LoRAの作り方。イラストを学習させてAIで生成する方法(sd-scripts)

LoRAの作り方。イラストを学習させてAIで生成する方法(sd-scripts)

この記事では、sd-scriptsを使ったLoRAの作り方を、わかりやすく、簡潔に紹介します。

目次
  1. LoRA作成について(必要なものなど)
  2. 方式について
  3. セキュリティの設定(PowerShell実行ポリシーの変更)
  4. 学習させたい画像を準備
  5. LoRA作成用のディレクトリ(フォルダ)
  6. モデルについて
  7. sd-scriptsのインストール
  8. 設定ファイルの作成
  9. WD14Taggerで自動タグ付け
  10. バッチファイルの作成と実行
  11. LoRAを使って画像生成
  12. まとめ

LoRA作成について(必要なものなど)

今回、LoRA作成はローカルで行なっていこうと思います。
高性能なグラフィックボードが必要になります。

参考までに、私が使っているWindowsノートPCには、GeForce RTX 4070 Laptop GPUを内蔵していますが、正常にLoRAを作ることができました。

方式について

学習の方式には以下の3つがあるとのことです。

  1. DreamBooth、class+identifier方式
  2. DreamBooth、キャプション方式
  3. fine tuning方式

公式のREADMEによると、1の方式は学習データの要素のすべてを特徴と捉えてしまうので、プロンプトでキャラクターの服を変更できなかったりするそうです。
でも、3の方式はなんだかむずかしそうでした。

そんなわけで、今回は2の方式、「DreamBooth、キャプション方式」を使っていこうと思います。

セキュリティの設定(PowerShell実行ポリシーの変更)

sd-scriptsを使うには、PowerShell実行ポリシーを変更する必要があるようです。
PowerShellを管理者として開いたあと、以下のコマンドを実行します。

> Set-ExecutionPolicy Unrestricted
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y

管理者として開いたPowerShellは閉じてしまって構いません。

学習させたい画像を準備

学習させたい画像を用意します。
今回は、当サイトのオリジナルキャラクター「りこちゃん」の画像を学習させてみることにしました。

学習させた画像は以下の12枚です。

今回は画像1枚の縦横が512pxの正方形にしました。

LoRA作成用のディレクトリ(フォルダ)

任意の場所に任意の名前のフォルダを作成します。

今回はデスクトップに「MyLoRA」というフォルダを作りました。
その中に「imgフォルダを作り、用意しておいた学習させたい画像を入れます。

さらに、作ったLoRAのファイルを保存するための「outputフォルダも作成しておきましょう。

また今回、画像へのタグ付けのため、「WD14Tagger」という「Stable Diffusion web UI」の拡張機能を使います。
そのため、MyLoRAフォルダの中に「Stable Diffusion web UI」をインストールしておきましょう。

MyLoRA/
|-- img/
|    |-- 01.jpg
|    |-- 02.jpg
|    |-- 03.jpg
|    |-- 04.jpg
|    |-- 05.jpg
|    |-- 06.jpg
|    |-- 07.jpg
|    |-- 08.jpg
|    |-- 09.jpg
|    |-- 10.jpg
|    |-- 11.jpg
|    `-- 12.jpg
`-- stable-diffusion-webui/
     `-- ...省略...

「Stable Diffusion web UI」をインストールすると、起動した状態になるはずです。
(このあとの作業でPCが重くなるかもしれないので、止めておいたほうがいいかもしれません)

また、「Stable Diffusion web UI」のくわしいインストール方法は、こちらを参考にしてください。

モデルについて

今回のLoRAの作成では、モデルに「MeinaMix(https://civitai.com/models/7240/meinamix)」を使おうと思います。
そのため、さきほどインストールしたStable Diffusion web UIでMeinaMixが使えるように、以下の場所にモデルファイルを配置しておいてください。

MyLoRA/
|-- img/
|   `-- ...省略...
`-- stable-diffusion-webui/
    |-- models/
    |   `-- Stable-diffusion/
    |       `-- meinamix_meinaV10.safetensors
    `-- ...省略...

sd-scriptsのインストール

つづいて、sd-scriptsをインストールしていきます。

次のコマンドを1行ずつ順番に実行します。(PowerShellは、管理者として開かなくて問題ないです)

git clone https://github.com/kohya-ss/sd-scripts.git
cd sd-scripts

python -m venv venv
.\venv\Scripts\activate

pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install --upgrade -r requirements.txt
pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl

cp .\bitsandbytes_windows\*.dll .\venv\Lib\site-packages\bitsandbytes\
cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bitsandbytes\cextension.py
cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbytes\cuda_setup\main.py

accelerate config

すると質問が始まりますので答えます。
このとき、矢印キーを押してしまうと止まってしまうので、0からの数値で選択します。
もし止まってしまったら、もう一度「accelerate config」を実行しましょう。
入力は以下を参考にしてください。

In which compute environment are you running?
Please select a choice using the arrow or number keys, and selecting with enter
 * This machine
    AWS (Amazon SageMaker)
----------------------------------------------------------------------------
Which type of machine are you using?
Please select a choice using the arrow or number keys, and selecting with enter
 * No distributed training
    multi-CPU
    multi-GPU
    TPU
    MPS
Do you want to run your training on CPU only (even if a GPU is available)? [yes/NO]:NO
Do you wish to optimize your script with torch dynamo?[yes/NO]:NO
Do you want to use DeepSpeed? [yes/NO]: NO
What GPU(s) (by id) should be used for training on this machine as a comma-seperated list? [all]:all
Do you wish to use FP16 or BF16 (mixed precision)?
Please select a choice using the arrow or number keys, and selecting with enter
    no
 * fp16
    bf16
accelerate configuration saved at C:\Users\R/.cache\huggingface\accelerate\default_config.yaml

これで、sd-scriptsインストールは完了です。

MyLoRA/
|-- img/
|   `-- ...省略...
|-- stable-diffusion-webui/
|   |-- models/
|   |   `-- Stable-diffusion/
|   |       `-- meinamix_meinaV10.safetensors
|   `-- ...省略...
`-- sd-scripts/
    `-- ...省略...

設定ファイルの作成

つづいて、設定ファイルを作ります。
例えば、以下のように作って、「config.toml」という名前でMyLoRAフォルダに保存します。

image_dirの部分は、ご自身の環境で画像素材を保存しているパスを入力してください。

[general]
enable_bucket = true

[[datasets]]
resolution = 512
batch_size = 1

  [[datasets.subsets]]
  image_dir = 'C:\Users\R\Desktop\MyLoRA\img'
  caption_extension = '.txt'
  num_repeats = 10

MyLoRAフォルダ全体はこのようになります。

MyLoRA/
|-- img/
|   `-- ...省略...
|-- stable-diffusion-webui/
|   |-- models/
|   |   `-- Stable-diffusion/
|   |       `-- meinamix_meinaV10.safetensors
|   `-- ...省略...
|-- sd-scripts/
|   `-- ...省略...
`-- config.toml

WD14Taggerで自動タグ付け

用意した画像に、それぞれタグ付けしていきます。
stable-diffusion-webui-wd14-tagger(以下WD14Tagger)を使うと、自動的にタグ付けしてくれるので便利です。

GitHub[toriato/stable-diffusion-webui-wd14-tagger]:https://github.com/toriato/stable-diffusion-webui-wd14-tagger

では、Stable Diffusion web UIにWD14Taggerをインストールしましょう。
Stable Diffusion web UIの画面から「Extensions」、「Install from URL」を選択し、URL for extension’s git repositoryの部分に「https://github.com/toriato/stable-diffusion-webui-wd14-tagger」と入力します。
そして「Install」をクリックすることで、インストールすることができます。

「Installed」を選択して、「Apply and restart UI」をクリックします。

念のために、PowerShellからStable Diffusion web UIを再起動しておいたほうがいいかもしれません。

すると「Tagger」という項目が増えているはずです。

「Tagger」→「Batch from directory」と選択し、Input directoryとOutput directoryに、画像素材が置かれたディレクトリフォルダ)を指定します。ここでは「C:\Users\R\Desktop\MyLoRA\img」と入力しました。

さらに画面をしたにスクロールさせると、Additional tags (split by comma)という項目がありますので、自作したLoRAを使いたいときにプロンプトに入力するワードを指定します。

今回は「rico」としました。

入力したら、「Interrogate」をクリックします。

しばらく待つと、下の画像のように表示されます。

画像素材を配置したフォルダを開くと、次のように、画像ファイルと同じ名前のテキストファイルがそれぞれ作成されています。

試しに01.txtを開くと、次のようになっています。

rico, 1girl, solo, blonde hair, chibi, smile, shirt, open mouth, side ponytail, skirt, simple background, pink shirt, white background, :d, ribbon

あとは、このワードの中から、作りたいキャラクターの特徴を表したものを消します

例えば、「blonde hair(金髪)」、「side ponytail(サイドのポニーテール)」、といったものです。
これらを消すと、次のようになります。

rico, 1girl, solo, chibi, smile, shirt, open mouth, side ponytail, skirt, simple background, pink shirt, white background, :d, ribbon

キャラクターの特徴を消す作業が終わったら、次は実際にLoRAを作っていきます。

バッチファイルの作成と実行

本当ならば、ここでPowerShellにコマンドを打ち込んで実行するのですが、とても長いコマンドですので、バッチファイルを作成しておくと便利です。

今回は、command.batというファイルを作成します。

ファイルまでのパスなど、必要な部分を直してからお使いください。
(^を行末に置くことで改行することができ、見やすくなりますし、編集もしやすくなります)

command.bat

accelerate launch^
 --num_cpu_threads_per_process 1 train_network.py^
 --pretrained_model_name_or_path="C:\Users\R\Desktop\MyLoRA\stable-diffusion-webui\models\Stable-diffusion\meinamix_meinaV10.safetensors"^
 --dataset_config="C:\Users\R\Desktop\MyLoRA\config.toml"^
 --output_dir="C:\Users\R\Desktop\MyLoRA\stable-diffusion-webui\models\Lora"^
 --output_name=rico^
 --keep_tokens=1^
 --max_train_epochs=20^
 --optimizer_type=AdamW8bit^
 --learning_rate=1e-4^
 --network_dim=128^
 --network_alpha=64^
 --bucket_no_upscale^
 --lr_scheduler=cosine_with_restarts^
 --lr_scheduler_num_cycles=4^
 --lr_warmup_steps=500^
 --shuffle_caption^
 --caption_dropout_rate=0.05^
 --save_model_as=safetensors^
 --clip_skip=2^
 --color_aug^
 --xformers^
 --mixed_precision=fp16^
 --network_module=networks.lora^
 --persistent_data_loader_workers^

command.batファイルは、MyLoRAフォルダに入れておきましょう。

batファイルを作ることができたら、それを実行してみます。

(venv) PS C:xxx\xxxx\> ..\command.bat

これで、LoRAを作ることができます。

「stable-diffusion-webui」→「models」→「Lora」フォルダに、ファイル(今回であればrico.safetensors)が生成されているかご確認ください。

LoRAを使って画像生成

作ったLoRAを使って、実際に画像生成してみました。

テニスをやってみたり……

人魚になってみたり……

重みを調節することで、絵のタッチを変えたりすることもできます。

重みやプロンプトなどの設定で、もっと大幅にタッチを変えてみることもできました。

こんなふうにLoRAを使って学習させることで、自分のイラストが思いもよらないものになって生成されます。

まとめ

今回は、イラストを学習させて、LoRAを作成する方法を紹介しました。

使うモデルなどによっても、学習させたイラストが、まったく違うタッチのイラストになったりします。
いろんなモデルや設定を試して、最強のLoRAを作成していきましょう。

15件のコメント 「LoRAの作り方。イラストを学習させてAIで生成する方法(sd-scripts)」

  1. Rさん、遅くなり申し訳ありません!
    コメントが送れていなかったようなので再送します。

    powershellを開いた状態でpip -V⇒
    pip 22.2.1 from C:\Users\PC_User\AppData\Local\Programs\Python\Python310\lib\site-packages\pip (python 3.10)

    仮想環境に入った状態でpip -V⇒
    Fatal error in launcher: Unable to create process using ‘”C:\Users\PC_User\sd-scripts\venv\Scripts\python.exe” “C:\Users\PC_User\Desktop\MyLoRA\sd-scripts\venv\Scripts\pip.exe” -V’: ??????????????????

    こちらが表示されます!

    1. >みかんさん
      こんにちは。コメントありがとうございます。
      出力結果を見るに、Pythonの環境構築はできているようなので、問題があるのは仮想環境の方のようですね。

      以前、「sd-scriptsC:\Users\PC_Userに来てしまったので、それをMyLoRAに移動していいか」という旨のメッセージをいただいたと思います。
      そのとき私は「sd-scriptsがどのような仕組みで動いているのか把握していないので、移動させていいか分からない」とお答えしたのですが、そのあと検証を進めたところ、インストール後にsd-scriptsフォルダを移動してしまうと、エラーになることが分かりました。

      以前のやりとりで、今回の記事のやり方をそのままやってみることをおすすめしました。sd-scriptsをもう一度インストールしなおすこともお試しいただきました。
      なのでおそらく違うと思いつつも、念のために確認したいのですが、PC_Userにインストールしたsd-scriptsMyLoRAフォルダに移動したということはありませんか?

      私の方では、それぐらいしか原因が思い当たらないです。
      ちなみに、ホームディレクトリにインストールしたsd-scriptsを、MyLoRAフォルダにドラッグで移動すると、みかんさんの環境で表示されたエラーと同じものを確認できます。

      お役に立てたか分かりませんが、またよろしくお願いします。

      1. ありがとうございます!

        そういえば記事とできる限り同じ状況にして違いを探しやすくするために、sd-scriptsの位置を変えていました! 元の状態でやったらついにできました、ありがとうございます!!
        sd-scriptsの位置が違った場合、「..\command.bat」これの実行の際に、「C:~~」みたいな感じに、場所を改めて別で指定しないといけなかったので、そこに手間取りましたが……!

        ただ、一回Loraデータができたのですが、うまく学習がいかなかったようなので再度かけたいと思っているのですが、また同じ内容で処理をすればよいのでしょうか?
        それと、command.batの「–output_name=mikazuki_mika^」と、タグ付けしたときの名前の表記が違う場合うまく学習できないでしょうか? タグ付けは「三日月 美香」と漢字でやってしまったんですよね……!

  2. たびたび申し訳ありません、batファイルの作成と実行のところで詰まってしまったのですが、batファイルを作成した後、実行はどこでやっているのでしょうか?
    コマンドプロンプト? powershell? それともpythonの何かでしょうか?

    プログラミングの基本的なことをよく知らずにやっているので、いまいちどこでこのコマンドを打ち込んだら適切に処理が進むのか分かりませんでした……!

    1. >みかんさん
      コメントありがとうございます。
      「sd-scriptsのインストール」の項目を終えたとき、PowerShellのカーソルが点滅している行の先頭に、(venv)という文字が表示されると思います。
      その状態で、batファイルの場所とファイル名を入力して、実行できます。

      もし「sd-scriptsのインストール」のあと、PowerShellを閉じてしまった場合は、cdコマンドを使ってsd-scriptsフォルダに移動し、「.\venv\Scripts\activate」と入力すると、先頭に(venv)と表示された状態になります。

      今回であれば、MyLoRAフォルダにcommand.batファイルを作成したので、sd-scriptsフォルダから見ると、command.batはひとつ上の階層に存在することになります。

      ひとつ上の階層を示す「..」と「command.bat」を組み合わせて、「..\command.bat」とPowerShellに入力することで、command.batを実行できます。

      うまく動作することを願っています。

      1. ありがとうございます!!
        実行はすることができたのですが、fatal errorというものができておそらくうまく処理が進んでいない感じになってしまいました……!

        C:\Users\PC_User\Desktop\MyLoRA\sd-scripts>accelerate launch –num_cpu_threads_per_process 1 train_network.py –pretrained_model_name_or_path=”C:\Users\PC_User\Desktop\MyLoRA\stable diffusion20230801\stable-diffusion-webui\models\Stable-diffusion\onlyanime_v2.safetensors” –dataset_config=””C:\Users\PC_User\Desktop\MyLoRA\config.toml”” –output_dir=”C:\Users\PC_User\Desktop\MyLoRA\stable diffusion20230801\stable-diffusion-webui\models\Lora” –output_name=mikazuki_mika –keep_tokens=1 –max_train_epochs=20 –optimizer_type=AdamW8bit –learning_rate=1e-4 –network_dim=128 –network_alpha=64 –bucket_no_upscale –lr_scheduler=cosine_with_restarts –lr_scheduler_num_cycles=4 –lr_warmup_steps=500 –shuffle_caption –caption_dropout_rate=0.05 –save_model_as=safetensors –clip_skip=2 –color_aug –xformers –mixed_precision=fp16 –network_module=networks.lora –persistent_data_loader_workers
        Fatal error in launcher: Unable to create process using ‘”C:\Users\PC_User\sd-scripts\venv\Scripts\python.exe” “C:\Users\PC_User\Desktop\MyLoRA\sd-scripts\venv\Scripts\accelerate.exe” launch –num_cpu_threads_per_process 1 train_network.py –pretrained_model_name_or_path=”C:\Users\PC_User\Desktop\MyLoRA\stable diffusion20230801\stable-diffusion-webui\models\Stable-diffusion\onlyanime_v2.safetensors” –dataset_config=””C:\Users\PC_User\Desktop\MyLoRA\config.toml”” –output_dir=”C:\Users\PC_User\Desktop\MyLoRA\stable diffusion20230801\stable-diffusion-webui\models\Lora” –output_name=mikazuki_mika –keep_tokens=1 –max_train_epochs=20 –optimizer_type=AdamW8bit –learning_rate=1e-4 –network_dim=128 –network_alpha=64 –bucket_no_upscale –lr_scheduler=cosine_with_restarts –lr_scheduler_num_cycles=4 –lr_warmup_steps=500 –shuffle_caption –caption_dropout_rate=0.05 –save_model_as=safetensors –clip_skip=2 –color_aug –xformers –mixed_precision=fp16 –network_module=networks.lora –persistent_data_loader_workers’: ???????????????

        これは、ディレクトリの場所の情報が間違っているから発生しているのでしょうか?
        それともほかにも原因があるのでしょうか?

        ちなみに、webUIをいれる際は以下のサイトの情報を参照してやったので、It is Rさんの紹介してくれている方法とすべてが同じというわけではないので、その辺の環境設定とかの部分で少し差があるかもしれません……!
        https://piyo-piyo-piyo.com/8824/
        そういったそもそもの環境構築段階でのミスみたいなところもあるでしょうか?

        1. >みかんさん
          コメントありがとうございます。

          私もなんども記事の内容を試してみたのですが、エラーは表示されず、原因を探ることができませんでした。申し訳ありません。

          解決できるかは分からないのですが、sd-scriptsフォルダをいったん削除して、もう一度「sd-scriptsのインストール」の項目を試してみる方法はいかがでしょうか。

          webUIを入れる方法は、webUIがちゃんと動いているのでしたら、問題ないと思います。
          webUIはタグ付けに便利なので使っているだけで、なくてもLoRAの作成はできるはずです。

          もしどうしてもこの記事だけで解決できない場合は、もしかすると私の見落としもあるかもしれないので、公式のGitHubのページも参考にしてください。
          https://github.com/kohya-ss/sd-scripts

          解決できたら、私も原因を知りたいので、教えていただければ幸いです。

          1. ありがとうございます!

            sd-scriptsを入れなおしてみましたが、やはりできませんでした……!
            Fatal error in launcher: Unable to create process using ‘”C:\Users\PC_User\sd-scripts\venv\Scripts\python.exe” “C:\Users\PC_User\Desktop\MyLoRA\sd-scripts\venv\Scripts\accelerate.exe” launch
            一個気になったのが、エラーメッセージの、「”C:\Users\PC_User\sd-scripts\venv\Scripts\python.exe”」この部分ですが、sd-scriptsは本来「C:\Users\PC_User\Desktop\MyLoRA\sd-scripts」にあるので、適切に場所を参照できている気がしないのですが、これは関係あるでしょうか?

          2. >みかんさん
            いつもありがとうございます。

            Fatal error in launcher: Unable to create process using 〜〜」は、Pythonのエラーだと思いますので、Pythonをインストールしたときのミス(パスの追加など)が原因の可能性もあります。

            しかし今回の記事では、Stable Diffusion web UIを使っていますので、それが動くのであれば、Pythonの環境構築は問題なくできているようにも思うのですが……なぜなのでしょうね。

            ちなみに、PowerShellを新しく開いたときの状態で、「pip -V」と入力すると、どのように表示されますか?
            また、仮想環境に入った状態(行の先頭にvenvと表示されている状態)で、「pip -V」と入力した場合はどうでしょうか?

  3. 大変分かりやすい記事ありがとうございます!!

    申し訳ないです、やっている途中で質問があったのですが、sd-scriptsをいれ終わった段階で、sd-scriptsのファイルが「C:\Users\PC_User」この階層に来てしまっていました……。
    これは深く気にせずMyLoRAのところに移動させてもよろしいのでしょうか?
    それともデータが移動しているので、何か書き直さないといけない箇所等があるのでしょうか?

    1. >みかんさん
      コメントありがとうございます。
      返信が遅くなり、申し訳ありません。

      うーん、どうなのでしょうね。
      私もsd-scriptsがどのような仕組みで動いているのか把握していないので、分からないです。
      申し訳ありません。

      ただ、もしもなんらかのミスでLoRAの作成がうまくいかなかったときなどに、その原因を探りやすくするためにも、やはり今回の記事のやり方をそのままやってみるのがおすすめです。
      もちろん、少し大変かとは思うのですが……

      またよろしくお願いします。

        1. >みかんさん
          こちらこそ、私の記事をご覧いただき、ありがとうございます。
          これからもよろしくお願いいたします。

  4. 分かりやすく解説していただいてありがとうございます。
    完全な素人で申し訳ないですが是非試してみたく、Stable Diffusion web UIは以前にインストール済みなのですが、Mac(intel)でのこちらのLora作成の方法も教えていただけたら嬉しいです…!!

    1. >takeさん
      コメントありがとうございます。

      実は私もMacユーザですので、本当はMacでLoRAを作ることにはとても興味があります。
      しかし、私のMacはあまり高性能なものではないので、おそらくLoRAは作れないだろうと思い、今回の記事ではWindows用になってしまいました。

      私が使っているWindowsのGPUは高性能な方とは思うのですが、それでもLoRAの作成に数時間かかりました。
      私のMacですと、たとえLoRAの作成が可能だとしても、もっと時間がかかってしまうと思うので、検証はできていません。

      また、私が使っているのはM1 Macでして、intel Macでも動かせるかどうかの検証もできません。

      ですので、今回のご質問なのですが、お答えするのはむずかしいです。
      大変申し訳ございません。

コメントを残す(コメントは承認後に反映されます)

メールアドレスが公開されることはありません。 が付いている欄は必須項目です




オリジナルゲーム.com