見出し画像

Stable DiffusionのLoRAのつくりかた

はじめに

この記事は、初めてStable DiffusionのLoRAを作成する方に向けた解説です。わかりづらかったらすみません。
この解説ではSDXLベースのAnimagine-XL-3.1で二次元イラストのキャラクターのLoRAを作成します。

注意

すでにWebUIの環境構築と生成ができていて生成に慣れている前提のガイドとなります。
Windows向けのガイドです。
また、NVIDIAのGeForce RTXグラフィックボード(VRAM 8GB以上)が搭載された高性能なパソコンが必要です。


そもそもLoRAってなんぞや?

Low-Rank Adaptationが正式名称です。
難しくいうと、ウェイトとデータセットの差分を出力するものです。低ランクの行列に分解してからファインチューンすることで少ないメモリで学習できるようにしたものです。

簡単に言えば、LoRAはキャラ、衣装、シチュエーションや画風などを追加で学習したもので、生成時に使います。トッピング感覚で簡単に使用できます。
LoRAの学習ツールはkohya-ss氏作成のsd-scriptsが主流です。

LoRAの作成(学習)方法

これからLoRAの作成方法を解説します。ここではAnimagine-XL-3.1(SDXL)で作成します。

1.環境構築

githubで公開している自作のGUIで学習をします。このGUIはsd-scriptsでの学習を容易にするもです。
こちらからlatestとなっているバージョン(ファイル名はkohya_lora_gui-x.x.x.x.zip)をダウンロードし、LoRA GUIなどの名前で新しいフォルダを作成し、そこに解凍します。解凍先は日本語が含まれていない場所を推奨します。

DLするのはkohya_lora_gui-x.x.x.x.zipです!

次に、解凍したフォルダに入っているexeファイルをダブルクリックしてGUIを起動します。
以下のような画面が表示されるので、画面上部にある「簡易インストーラー」をクリックして、開いた画面の手順に従って学習スクリプトのsd-scriptsをインストールしてください。
sd-scriptsのインストール先はLoRA学習GUIのフォルダが入ったフォルダです!GUIフォルダの中ではありません!

GUI

インストールが完了したら、一旦GUIを閉じておきます。

注意!このときディレクトリの階層は以下のようになります。それ以外では見つかりませんなどのメッセージが表示されます。
また、sd-scriptsの名前は変更しないでください

GUIとsd-scriptsの階層

2.データセット用フォルダ作成

学習するためのデータの準備をします。
まずはフォルダを作成してください。場所は深すぎず、日本語が含まれていない場所をおすすめします。次に作成したフォルダの中に新しいフォルダを作成します。名前は「繰り返し数_名前」にします(例:4_aaaa)。よくわからないなら繰り返し数は2にしておきましょう。

ディレクトリの階層の例。繰り返し数_名前のフォルダは複数存在可

3.画像収集

フォルダの作成が終わったら、danbooruなどから学習対象の画像を「繰り返し数_名前」のフォルダにダウンロードします。このとき画像についたタグが載ったtxtファイルを一緒にDLしておくとキャプション作成が楽になります。
画像の枚数は20枚程度でもOKですが、多い方が品質が高くなります。

ちなみに私はGrabberでbooru系サイトからタグと一緒に画像をDLしています。

4-1.キャプション作成

タグが載ったtxtファイルを一緒にDLした場合はここは無視して4-2.キャプション編集の項目から進めてください。

画像の説明文となるキャプションを作成します。ここではdanbooruタグを用います。

WebUIのWD14 TaggerというExtensionで自動でタグをつけます。
Exntensionをインストールするために、AUTOMATIC1111 WebUIを起動し、Extensionsタブを開きます。
Install from URLのURL for…の場所に「https://github.com/picobyte/stable-diffusion-webui-wd14-tagger.git」を入力してInstallボタンを押します。しばらく待ってUse installed tab to restartと出たらwebuiを再起動してください。

Extensions

再起動後、Taggerというタブが出るのでそちらを開きます。
Taggerの画面でBatch from directoryのタブを開き、Input directoryにDLした画像が入ったフォルダのパスを入力します。
画面中央にあるInterrogatorにmoat tagger v2を選択し、下部にあるMin tag fraction in batch and interrogationsを0にしておきましょう。
生成時に学習対象を呼び出す単語(トリガーワード)をAdditional tagsに入力します。
入力し終えたらInterrogateを押してしばらく待ちましょう。自動タグ付けが終わったらWebUIを閉じます。

Tagger

4-2.キャプション編集

4-1でキャプションを自動生成した場合はこの項目はスキップしてください。

BooruDatasetTagManagerなどで生成時に学習対象を呼び出す単語(トリガーワード)を追加して先頭に配置しましょう。

BDTM

5.学習パラメータの設定

GUIを起動します。画面下部にあるプリセットの読込から、こちらで配布しているサンプルプリセット「Animagine汎用プリセット.xmlora」を開きます。
するとある程度パラメータが設定されるので、設定されていない箇所を設定しましょう。
学習元モデルにAnimagine-XL-3.1、教師画像フォルダに先ほど作成したフォルダ(繰り返し数_名前の親フォルダ)、出力先フォルダにwebuiのloraフォルダなどを指定します。出力ファイル名はお好みで。
設定したら画面右下のbatch1相当(目安)に学習ステップ数が表示されるので、これが2000-3000になるようにepochs/stepsの値を調整してください。

GUIの設定する部分

6.学習

画面右下の学習開始をクリックするとターミナル(黒い画面)が表示され、学習が開始します。

ターミナル

時間がかかるので気長に待ちましょう。
注意!この時表示されるA matching Triton is not availableは無視してください。Windowsではいつも表示されますが正常です。
ターミナルに表示されるstepsのプログレスバーが100%になってmodel saved.と出たら完了です。
早速WebUIで使用してみましょう。

7.LoRAを使用

WebUIを起動し、sd checkpointを学習元モデルにしてから、txt2imgのLoraタブを開き先ほど作成したLoRAを選択します。

選択するとプロンプトに<lora:名前:強度>のような文字列が追加されます。これはその名前のLoRAを指定した強度で適用するという意味です。
プロンプトにトリガーワードを入力して生成しましょう。学習対象が出てくれば成功です。
お疲れ様でした。

WebUIで成果確認


この記事が気に入ったらサポートをしてみませんか?