sd-webui-traintrain で簡単LoRA作り!Stable Diffusion WebUIでLoRAが作れる!TrainTrainを使ってみよう!

Stable Diffusion

 

2024年1月19日にリリースされたLoRA作成用拡張機能「 sd-webui-traintrain 」をご紹介します。

この sd-webui-traintrain (以下、TrainTrain)は、hako-mikanさんが開発した拡張機能で、外部の専用ツールなどを使わず、Stable Diffusion WebUI(AUTOMATIC1111)上でLoRA、iLECO、差分LoRAを作れる優れモノです。

実際に使ってみましたが、使い方は非常に簡単。

設定項目が最小限に精選されており、ほぼ標準設定のままでもLoRAを作ることができます。

本記事では、LoRAを作ったことがない方でも理解できるように、できるだけ分かりやすく解説したいと思います。

iLECOと差分LoRAについては、別記事で解説します。

 

Stable Diffusion WebUI(AUTOMATIC1111)のインストールについては、以下の記事で詳しく解説していますので、ぜひお読みください。

 

1.LoRAを作るために必要なもの

必要なものは、以下のとおりです。

  1. Stable Diffusion WebUI(AUTOMATIC1111)
  2. Dataset Tag Editor(拡張機能)
  3. TrainTrain(拡張機能)
  4. 学習させる画像

 

Stable Diffusion WebUI(AUTOMATIC1111)に2つの拡張機能をインストールする必要があります。拡張機能のインストールは、非常に簡単で時間もかかりません。

各拡張機能のインストールについては、後述の「4. sd-webui-traintrain のインストール」「5.stable-diffusion-webui-dataset-tag-editorのインストール」で解説します。

 

目次に戻る

 

2.学習させる画像についての注意点

LoRA作成で一番重要なものは学習させる画像です。

ここで手を抜くと良いLoRAは作れません。

学習させる画像については、できるだけ綺麗な画像を最低10~20枚程度準備します。
画像の大きさは、512*512 または 1024*1024 を基本にします。
縦長や横長の画像が混在していても学習可能です。

画質が荒いと、その画質の荒さまで学習してしまうことがあるので注意が必要です。

ネットからダウンロードした写真やスマホのゲーム画面のスクショなどは学習画像に向きません。

高画質なものであれば問題ありませんが、大抵の場合、画質が荒いです。元々画質が荒い画像を無理に大きくすると余計に画質が荒れてしまいます。

Stable Diffusionで学習画像を生成する場合には、Hires.Fix(高解像度補助)などを施した方が良いと思います。

以前、実写系のLoRAを作成した際、Hires.Fixを施していない画像を使用したところ、瞳の形やまつ毛、肌の質感などにかなりの悪影響が出ました。

実写系の場合は、無加工の写真データやプリントした写真を高解像度スキャンして使用する方法が良いかもしれません。

今回は、以下の16枚のイラスト画像(大きさは1024*1024)を使用してLoRAを作成します。

 

sd-webui-traintrain :学習させる画像
学習させる画像

目次に戻る

 

3.LoRAを作る流れ

LoRA作成の流れは、ザックリ以下の3つです。

  1. 学習させる画像を準備する(前述のように、多分これが一番大変)
  2. 画像からタグを抽出して整える(Dataset Tag Editorを使用)
  3. LoRAの作成(TrainTrainを使用)

 

目次に戻る

 

 

4. sd-webui-traintrain のインストール

1.Extensionsタブを選択

2.Install from URLタブを選択

3.URL for extension’s git repository欄に以下のURLをペースト

 

4.Installボタンをクリック

sd-webui-traintrain :TrainTrainのインストール①
TrainTrainのインストール①

 

5.Installedタブを選択

6.Apply and restart UIボタンをクリック

sd-webui-traintrain :TrainTrainのインストール②
TrainTrainのインストール②

 

目次に戻る

 

 

5.stable-diffusion-webui-dataset-tag-editorのインストール

1.Extensionsタブを選択

2.Install from URLタブを選択

3.URL for extension’s git repository欄に以下のURLをペースト

 

4.Installボタンをクリック

sd-webui-traintrain :Dataset Tag Editorのインストール①
Dataset Tag Editorのインストール①

 

5.Installedタブを選択

6.Apply and restart UIボタンをクリック

sd-webui-traintrain :Dataset Tag Editorのインストール②
Dataset Tag Editorのインストール②

 

目次に戻る

 

 

6.画像からタグを抽出して整える(Dataset Tag Editorでの作業)

Dataset Tag Editorを使って、画像からタグを抽出し、「学習させたいタグを消去」します。

こうして整えたタグをテキストファイルとして書き出します。

タグの抽出、タグの消去、テキストファイル書き出しは、全てDataset Tag Editorで行います。

 

6-1.画像を任意のフォルダにまとめる

準備した画像を任意のフォルダにまとめておきます。この例では、以下のフォルダ内に画像をまとめてあります。

d:\training\original_character01

sd-webui-traintrain :画像フォルダの注意事項
画像フォルダの注意事項

 

LoRAを作成する際、画像を保存したフォルダの一つ上の階層を指定する必要があるので、CドライブやDドライブなどの直下のフォルダではなく、training などの任意のフォルダを作成してから、その中にもう一つフォルダを作成して画像をまとめておきます。
また、フォルダを複数作成しないようにしてください。

 

目次に戻る

 

6-2.画像からタグを抽出する

⓪.画像フォルダのアドレスをコピー

sd-webui-traintrain :画像フォルダのアドレスをコピー
画像フォルダのアドレスをコピー

 

Dataset Tag Editorタブを選択

Dataset directory欄に先ほどコピーした画像フォルダのアドレスを貼り付け

Use Interrogator CaptionをOverwriteに変更

Interrogators欄で wd-v1-4-*** のいずれかを選択

Loadボタンをクリック
 Loadボタンを押すと画像と画像から抽出したタグが表示されます。(黄枠内)

sd-webui-traintrain :Dataset Tag Editor①タグの抽出
Dataset Tag Editor:画像からタグを抽出

 

目次に戻る

 

6-3.学習させたいタグを選択して消去する

Batch Edit Captionsタブを選択

Removeタブを選択

③タグ一覧から学習させたいタグを選択

Remove selected tagsボタンをクリック

sd-webui-traintrain :Dataset Tag Editor②学習させるタグを選択
Dataset Tag Editor:学習させるタグを選択して消去

 

下のように選択したタグが一覧から消去されました。
タグの数が多い場合は、見落としがあるので③と④を繰り返して学習させたいタグを全て消去します。

sd-webui-traintrain :Dataset Tag Editor③学習させるタグを消去
Dataset Tag Editor:タグが消去される

 

Save all changesボタンをクリック

このボタンを押すとタグをテキストファイルとして書き出してくれます。

sd-webui-traintrain :Dataset Tag Editor④テキストファイルの書き出し
Dataset Tag Editor:テキストファイルの書き出し

 

画像フォルダ内にテキストファイルが作成されました。
それぞれのテキストファイルには、学習させたいタグが消去されたプロンプトが記述されています。

これでLoRAを作る準備が整いました。

 

sd-webui-traintrain :書き出されたテキストファイル
Dataset Tag Editor:画像フォルダに書き出されたテキストファイル

 

目次に戻る

 

 

7.LoRAの作成(TrainTrainでの作業)

今回は、ほぼ標準設定のままでLoRAを作成してみます。

 

⓪画像フォルダの一つ上の階層のアドレスをコピー

この例では、D:¥training となります。

sd-webui-traintrain :①画像フォルダの一つ上の階層アドレスをコピー
TrainTrain①:画像フォルダの一つ上の階層アドレスをコピー

 

TrainTrainタブを選択

②preset欄でLoRAを選択

アイコンをクリックしてLoRAプリセットを適用

Model欄でModel(Checkpoint)を選択

この例では、LoRA作成に適していると評判の anyloraCheckpoint を使用します。

 

上記⓪でコピーした画像フォルダの一つ上の階層のアドレスを貼り付け

lora trigger word欄にトリガーワードを入力

LoRAを適用して画像生成する際、プロンプトに記述するトリガーワードを入力します。
ここでは、orichara01 というトリガーワードにしました。
※この例のようにトリガーワードに01、02のような連番を付けることは、お勧めしません。単に、orichara などにした方が良いでしょう。

 

image size(height, width)欄に学習させる画像のサイズを入力

今回は、1024*1024 の画像を用意したので、1024 にします。

 

save lora name欄にLoRAのファイル名を入力

この例では、TrainTrain_Test_v1 というファイル名にしました。

 

save as jsonを選択(任意)

⓪~⑧で設定した内容を json というファイル形式で保存しておきます。
jsonファイルは、以下のフォルダに保存されます。

/stable-diffusion-webui/extensions/sd-webui-traintrain/jsons/日付フォルダ

次回以降は、各設定を保存したjsonファイルで読み込むことができます。

 

Start Trainingボタンをクリック

Start Trainingボタンをクリックすると学習が始まります。

sd-webui-traintrain :②各パラメータの設定
TrainTrain②:各パラメータの設定

 

今回は、ほぼ標準設定のままLoRAを作成しました。主な項目と使用したグラフィックボード・メモリ容量について記載しておきます。

 

  • 画像枚数:16枚
  • 画像サイズ:1024*1024
  • train iterations(反復回数):1000(標準値)
  • train batch size:2(標準値)
  • グラフィックボード:NVIDIA Geforce RTX4060Ti(16GB)
  • メモリ:32GB

 

sd-webui-traintrain :③ターミナル(コマンドプロンプト)画面で結果を確認
TrainTrain③:学習終了時のターミナル(コマンドプロンプト)画面

 

この設定と環境で学習にかかった時間は、29分10秒でした。
エポックは、125となっています。

kohya_ssなどを使用してLoRAを作成する場合は、以下の計算式で学習ステップ数を決める必要がありましたが、今回使用したTrainTrainでは、繰り返し数やエポックを指定する必要はなく、train iterations(反復回数)の値を指定するだけなので非常に簡単です。

 

画像枚数 × 繰り返し数 × エポック = 学習ステップ数

 

また、作成されたLoRAを所定のフォルダ /stable-diffusion-webui/models/Lora に自動保存してくれるので、ファイル移動などの手間が省けます。

 

目次に戻る

 

 

8.検証

学習時間約30分で作成したLoRAは、いかがなものか?
早速、画像を生成してみましょう。

単純なプロンプトに作成したLoRA(TrainTrain_Test_v1)を強度1で適用して、20枚連続で生成して検証してみました。

容姿や服装に関しては、何も指示していません。

 

・プロンプト

orichara01, best quality, masterpiece, 1girl, smile, full body, standing, solo, white background, simple background, <lora:TrainTrain_Test_v1:1.0>,

 

・ネガティブプロンプト

EasyNegativeV2, painting by bad-artist-anime, bad-hands-5

 

sd-webui-traintrain :検証①20枚連続生成の結果
検証①:20枚連続生成の結果(WebUI画面)

 

背景に余計な模様が出ているのと病的に色白な画像となっています。また、from above(上からのアングル)を強く学習している感じがします。

顔、髪型、服装などキャラクターに関しては、まずまずといった感じです。

ほぼ標準設定で作成したLoRAですが、しっかりと学習しています。

プロンプトを調整して生成すれば、もう少しマシな画像が生成できる可能性があります。

 

sd-webui-traintrain :検証②20枚連続生成の結果(拡大)
検証②:20枚連続生成の結果(拡大)

 

次にX/Y/Z plot(Prompt S/R)で強度0~1まで、0.2ずつ強くしながら生成して比較してみます。

強度0(一番左の画像)は、LoRAが適用されていない状態なのでAnyloracheckpointのキャラクターになっています。強度が上がるにつれて学習効果が表れていますが、それと同時に肌の色が抜けているのが分かります。

顔や服装、体型などに関しては満足のいく結果となりましたが、肌の色がダメですね。

確かに、学習画像を見返してみると肌の色が薄い感じは否めません。
学習画像の修正や差し替えが必要であることが判明しました。。。

画像の準備で手を抜くと、こういう結果となります。

 

sd-webui-traintrain :検証③強度による変化
検証③:強度による変化

 

下の画像は、学習画像の肌色を調整してから作成したLoRAの結果です。
LoRA作成時の各パラメータは、前回と全て同じにして作成しました。
肌色が改善されています。

 

sd-webui-traintrain :検証④強度による変化
検証④:肌色を調整して学習させたLoRAの強度による変化

 

目次に戻る

 

 

9.まとめ

今回は、TrainTrainの細かな設定変更をせず、ほぼ標準設定のままでLoRAを作成しました。

標準設定のままでも、検証結果のように与えられた学習画像を忠実に学習してることがお分かりいただけたと思います。

TrainTrainでのLoRA作成は、外部ツールを使用せずWebUIで全て完結するので、他のツールに比べて分かりやすくて便利だと思います。また、設定項目がかなり精選されているので、他のLoRA作成ツールより扱いやすいと思います。

LoRA作りに興味をお持ちの方は、ぜひチャレンジしてみてください。

最後までお読みいただき、ありがとうございました。

 

ページトップへ

コメント

タイトルとURLをコピーしました