今回はLoRAを使った学習に関する話題で、タイトルの通り
をご紹介するという内容になっています。
以前、LoRAによる追加学習のやり方をご紹介したところ大変な反響がありました。
あれから半年ほど経ち、最近では新しいStable Diffusion XLが登場したこともあってLoRAを取り巻く状況がだいぶ変わりつつあるように思います。そこで、私は普段はあまりLoRAを作らないのですが知識のアップデートも兼ねてSDXLをベースにしたLoRAを作ってみることにしました。
このような次第でここでは主に
- SDXLベースのLoRAの作り方
- 以前のLoRA記事で紹介しきれなかったキャプションファイルを使った学習方法
について丁寧にご説明していきますね。
最新の画像生成AI「FLUX.1」ベースのLoRAの作り方を書きました。SDXLベースのLoRAとの比較も行っていますので、ご興味があればぜひ併せてご覧ください。
今回私が作ったLoRAについて
まず今回はサンプルとして、以前作った「独特すぎる自分の絵を学習させた画風LoRA」のSDXL版を作ってみました。学習に使った画像は元のLoRAと全く同じです。
自作画風LoRAを使ったサンプル画像
今回作った画風LoRAを適用して画像生成を行ったところ次のような超かっこいい画像が生成されました。
時間短縮のために学習のステップ数をかなり減らしたのですが、それでも私の鉛筆画の絵柄を上手く反映した高精細・高解像度の画像を生成することができました。
SDXLをベースにする場合の注意点
さて次に、SDXLベースのLoRAを作る際には一つ注意点があることを申し上げておかなければなりません。その注意点とは
ということです。私はVRAM12GBのグラボを使っているのですが、学習中のVRAM使用量を見たら11.7GBくらい消費していて本当にギリギリでした。なので仮にVRAMが8GBくらいしかなかったらおそらく学習は無理だったと思います。
どうしても試したいけどグラボのスペックが足りないよ…という方はできれば買い替えをご検討ください。グラボの選び方については下記の記事で詳しくご説明していますので併せて参考にしていただければと思います。
下準備:「Tagger for Automatic1111’s WebUI」を使ったキャプションファイルの作成方法
ではここから具体的なLoRAの作り方をご紹介していきます。以前のLoRA記事では正則化画像を使ったDreamBooth方式のやり方をご説明したのですが、今回はせっかくなのでもう一つのキャプションファイルを使った方法についてご説明しますね。
キャプションファイルとは?
まずキャプションファイルとは、その画像がどのような画像なのか?を表すキーワード(=タグ)を羅列したテキストファイルです。例えば下記のような女の子の画像ならキャプションファイルは
といった内容のテキストファイルになります。
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の使い方は、簡単に言うと
- 「ディレクトリから一括処理」タブを開く
- 「入力ディレクトリ」欄にタグ付けしたい画像が入ったフォルダを指定する
- どのくらい確実なタグを含めるか?を指定する「しきい値」を設定する
- 「追加タグ」欄にLoRAのトリガーワードを指定する
- インタロゲートボタンを押す
という感じです。
ただし今回は画風を学習させたいので、このような場合は実はキャプションファイルの中身はトリガーワードだけが含まれていればOKです。そこでTaggerの設定で
- しきい値:「1」
- 追加タグ:適当なトリガーワードを指定(※私の場合は「kurokuma」としました)
と設定してから「インタロゲート」ボタンを押します。こうすればトリガーワードのみが含まれたキャプションファイルが自動生成されます。
「Kohya_ss GUI」を使ったSDXLベースのLoRAの作り方
キャプションファイルを準備できたらいよいよ学習を行います。学習には以前のLoRA記事と同様にKohya_ss GUIというツールを使います。
主な手順は次のとおりです。
- Kohya_ss GUIが古い場合はアップデートする
- 所定のフォルダを作って学習画像とキャプションを入れる
- ベースモデルの設定を行う
- Kohya_ss GUIで必要なフォルダのパスを指定する
- 学習に使うパラメータを設定する
- 学習処理を実行する
それぞれ詳しく見ていきましょう。
手順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には戻りたくなくなると思います。一度は試してみる価値があると思いますのでぜひ皆さんもチャレンジしてみてください。
この記事が何かしら参考になれば幸いです。