SDXLをベースにしたLoRAの作り方!最新モデルを使って自分の画風を学習させてみよう【Stable Diffusion XL】

SDXLベースのLoRAの作り方 画像生成AI

今回はLoRAを使った学習に関する話題で、タイトルの通り

Stable Diffusion XL(SDXL)をベースにしたLoRAモデルの作り方

をご紹介するという内容になっています。

以前、LoRAによる追加学習のやり方をご紹介したところ大変な反響がありました。

LoRAを使った学習のやり方まとめ!好きな絵柄・キャラクターのイラストを生成しよう【Stable Diffusion】
今回は画像生成AIに関する中級者向けの話題で 既存のモデルに好きな絵柄・キャラクターを追加学習させる「LoRA」のやり方 を一通りご紹介するという内容になっています。 Stable Diffusion系のモデルを使って画像を生成していると、...

あれから半年ほど経ち、最近では新しいStable Diffusion XLが登場したこともあってLoRAを取り巻く状況がだいぶ変わりつつあるように思います。そこで、私は普段はあまりLoRAを作らないのですが知識のアップデートも兼ねてSDXLをベースにしたLoRAを作ってみることにしました。

このような次第でここでは主に

  • SDXLベースのLoRAの作り方
  • 以前のLoRA記事で紹介しきれなかったキャプションファイルを使った学習方法

について丁寧にご説明していきますね。


※「そもそもLoRAって何だよ…」という方はまずは↑のLoRA紹介記事をご覧ください。

今回私が作ったLoRAについて

まず今回はサンプルとして、以前作った「独特すぎる自分の絵を学習させた画風LoRA」のSDXL版を作ってみました。学習に使った画像は元のLoRAと全く同じです。

自作画風LoRAを使ったサンプル画像

今回作った画風LoRAを適用して画像生成を行ったところ次のような超かっこいい画像が生成されました。

時間短縮のために学習のステップ数をかなり減らしたのですが、それでも私の鉛筆画の絵柄を上手く反映した高精細・高解像度の画像を生成することができました。

SDXLをベースにする場合の注意点

さて次に、SDXLベースのLoRAを作る際には一つ注意点があることを申し上げておかなければなりません。その注意点とは

SDXLベースのLoRAを作るにはグラボのVRAMが最低12GB以上必要

ということです。私はVRAM12GBのグラボを使っているのですが、学習中のVRAM使用量を見たら11.7GBくらい消費していて本当にギリギリでした。なので仮にVRAMが8GBくらいしかなかったらおそらく学習は無理だったと思います。

どうしても試したいけどグラボのスペックが足りないよ…という方はできれば買い替えをご検討ください。グラボの選び方については下記の記事で詳しくご説明していますので併せて参考にしていただければと思います。

Stable Diffusion用のグラフィックボードの選び方!美少女イラストを快適に生成しよう
今回も画像生成AIに関する話題で、タイトルの通り Stable Diffusionを快適に動かすためのグラフィックボードの選び方 をご紹介するという内容になっています。 画像生成AIの代表格ともいえるStable Diffusionを動かす...

下準備:「Tagger for Automatic1111’s WebUI」を使ったキャプションファイルの作成方法

ではここから具体的なLoRAの作り方をご紹介していきます。以前のLoRA記事では正則化画像を使ったDreamBooth方式のやり方をご説明したのですが、今回はせっかくなのでもう一つのキャプションファイルを使った方法についてご説明しますね。

キャプションファイルとは?

まずキャプションファイルとは、その画像がどのような画像なのか?を表すキーワード(=タグ)を羅列したテキストファイルです。例えば下記のような女の子の画像ならキャプションファイルは

女の子のイラスト

1girl, solo, black_hair, smile

といった内容のテキストファイルになります。

Tagger for Automatic1111’s WebUIのインストール

キャプションファイルの作り方については、手作業でやるのも大変なので自動的にキャプションを生成してくれる拡張機能を使いましょう。このような拡張機能としては「Tagger for Automatic1111’s WebUI」(WD 1.4 Tagger)があります。

導入方法は、Stable Diffusion web UIを開いて「拡張機能」タブ→拡張機能リストと進みます。「読込」ボタンを押すとインストール可能な拡張機能の一覧が出るので「WD 1.4 Tagger」を見つけて右側のインストールボタンを押しましょう。

インストールできたらweb UIを再起動してください。正常にインストールできていればweb UIの画面に「タグ付け」というタブが出現するはずです。

Tagger for Automatic1111’s WebUIの使い方

タグ付けタブを開くと下のような画面になります。

Tagger for Automatic1111's WebUIの画面

このTagger for Automatic1111’s WebUIの使い方は、簡単に言うと

  1. 「ディレクトリから一括処理」タブを開く
  2. 「入力ディレクトリ」欄にタグ付けしたい画像が入ったフォルダを指定する
  3. どのくらい確実なタグを含めるか?を指定する「しきい値」を設定する
  4. 「追加タグ」欄にLoRAのトリガーワードを指定する
  5. インタロゲートボタンを押す

という感じです。

ただし今回は画風を学習させたいので、このような場合は実はキャプションファイルの中身はトリガーワードだけが含まれていればOKです。そこでTaggerの設定で

  • しきい値:「1」
  • 追加タグ:適当なトリガーワードを指定(※私の場合は「kurokuma」としました)

と設定してから「インタロゲート」ボタンを押します。こうすればトリガーワードのみが含まれたキャプションファイルが自動生成されます。

「Kohya_ss GUI」を使ったSDXLベースのLoRAの作り方

キャプションファイルを準備できたらいよいよ学習を行います。学習には以前のLoRA記事と同様にKohya_ss GUIというツールを使います。

GitHub - bmaltais/kohya_ss
Contribute to bmaltais/kohya_ss development by creating an account on GitHub.

主な手順は次のとおりです。

  1. Kohya_ss GUIが古い場合はアップデートする
  2. 所定のフォルダを作って学習画像とキャプションを入れる
  3. ベースモデルの設定を行う
  4. Kohya_ss GUIで必要なフォルダのパスを指定する
  5. 学習に使うパラメータを設定する
  6. 学習処理を実行する

それぞれ詳しく見ていきましょう。

手順1:Kohya_ss GUIが古い場合はアップデートする

まず既にKohya_ss GUIを導入済みの方で古いバージョンをお使いの場合はアップデートを行ってください。最近のバージョンだとアップデート用のバッチファイルがなくなってしまったようなので、ひと手間かかりますがgit pullしましょう。

手順2:所定のフォルダを作って学習画像とキャプションを入れる

次に適当な場所に学習用の画像とキャプションを入れるフォルダを作ります。フォルダ構成は先ほどからリンクを貼っているLoRA記事の説明と同様ですが、今回は正則化画像用のフォルダは不要です。

具体的には下記のような構成になります。

  • 適当なフォルダ
    • 学習用フォルダ
      • 学習用画像とキャプションファイルを入れるフォルダ
        (フォルダ名が学習に影響するので、上記記事の説明のとおりに設定してください)
    • LoRA出力用フォルダ

学習用画像とキャプションファイルは上記の同じフォルダに入れましょう。

手順3:ベースモデルの設定を行う

ここまでできたらKohya_ss GUIを起動して設定を行っていきます。まずはベースモデルの設定です。

間違えずに「LoRA」タブを開いて下のように設定を行いましょう。

ベースモデルの設定方法

  • Model Quick Pick:「custom」を選択
  • Pretrained model name or path:Stable Diffuison XLのbaseモデルがある場所を選択
  • SDXL Model:チェックを入れる

手順4:Kohya_ss GUIで必要なフォルダのパスを指定する

次に「Folders」タブを開いて先ほど作ったフォルダを指定します。

  • Image folder:
    先ほどの「学習用フォルダ」を指定(その子フォルダではないので注意!)
  • Output folder:
    先ほどの「LoRA出力用フォルダ」を指定

手順5:学習に使うパラメータを設定する

SDXLで学習を行う際のパラメータ設定はKohya_ss GUIのプリセット「SDXL – LoRA adafactor v1.0」をベースにするとよいと思います。

学習パラメータのプリセットの選択

ただしプリセットそのままでは学習に時間がかかりすぎるなどの不都合があったので、私の場合は下記のようにパラメータを変更しました。

  • バッチサイズ:1
  • エポック数:5
  • 最大エポック数:5
  • 学習率:0.001
  • Network Rank:64
  • Network Alpha:32

手順6:学習処理を実行する

ここまでできたらようやく学習処理を実行できます。オレンジ色の「Start training」ボタンを押しましょう。

所要時間は設定値やPCスペック等にもよりますが、私の場合だと全900ステップを完了するのに40分くらいかかりました。従来のLoRAだともっとずっと早く学習が終わっていたのですが流石にSDXLベースだと時間がかかりますね。

無事学習が終わると先ほどの出力フォルダにLoRAモデルが出力されます。あとはweb UIのLoRAフォルダにそのモデルを移動させていつも通り画像を生成すればOKです。

おわりに

以上、Stable Diffusion XLをベースとしたLoRAモデルの作り方をご紹介しました。

SDXLベースのLoRAを作るのにはとにかく時間がかかるものの、出来栄えは非常に良好なのでこのLoRAを体験したらもうSD1.5ベースのLoRAには戻りたくなくなると思います。一度は試してみる価値があると思いますのでぜひ皆さんもチャレンジしてみてください。

この記事が何かしら参考になれば幸いです。