見出し画像

LoRA初心者教本・改 前編

ごあいさつ
 初めましての方は初めまして。知っている方はこんにちは。かたらぎと申します。以前、記事にしたLoRAの初心者教本が非常に盛況だったため古くなった内容を改定して再発表することにしました。
 前編ではLoRAを作る環境の構築と、簡単なおすすめ設定を紹介します。近日公開予定の後編では上級者を目指すための詳しい解説を行います。


LoRAとは

 LoRAとはLow-Rank Adaptationの略で、stable diffusionのモデル学習に膨大な数の画像が必要なのに対し、LoRAは数十枚と非常に少ない枚数で目的の画像を作ることができる手法です。
 これだけでは何を言っているのかわからない人もいるかと思いますが、一般的にはプロンプトだけでは出すことが難しい版権キャラや身体的特徴などを数十枚の画像があれば手軽に出すことができるものという認識で大丈夫です。

使い方

 Civitaiなどを見るとLoRAやLyCORISと書かれたものがあります。基本的には似たようなものです。以前LyCORISを使用する場合は拡張機能のインストールが必要でしたがWebUIのバージョンが1.5.1以上であればLoRAと同じように拡張機能なしで扱えるようになりました。

 civitaiでダウンロードするには検索ワードを指定した後、ろうとのマークを押します。

 「Filter by Model Type」でLoRAやLyCORISを選ぶことができます。これで好きなものをダウンロードしてみましょう。

 使用方法はダウンロードしてきたLoRAを「models」フォルダーの中にある「LoRA」フォルダーの中に配置します。

 このようにフォルダー分けしているとWebUI内で探すときに便利です。

 LoRAをフォルダーに配置したら、実際に使ってみましょう。「Genetate(生成)」ボタンの下にある花札のマークを押します。

 そうすると「LoRA」のタブ①があるのでそれを選択します。もし、新しいLoRAを入れた際に項目がなければ②の「refresh」を押してください。それでも出ない場合、現在指定しているモデルのバージョンとLoRAが使用できるバージョンが同じかどうか確認してください。確認方法は③の工具マークを選択して下さい。

 そうすると「Stable Diffusion version」という項目があるのでそのLoRAが使えるバージョンが分かります。


LoRAを制作する

 実際にLoRAを制作してみましょう。LoRAを制作するツールは「KohyaGUI」や「LoRA Easy Training Scripts」があります。KohyaGUIは多くの人が解説しているため今回は「LoRA Easy Training Scripts」でLoRAづくりをする方法をご紹介します。KohyaGUIとは別物なのですがシステムの基盤はsd-scriptであり、GUIの見た目が違うというだけです。また、最初のインストールが比較的簡単です。

LoRA Easy Training Scriptsのインストール

 まず、配布ページでダウンロードします。「git clone」などが使える環境の方は下記のコードでインストールしてください。インストールしたいフォルダーでアドレスバーに「cmd」と入力してコマンドプロンプトを起動してください。

git clone https://github.com/derrian-distro/LoRA_Easy_Training_Scripts.git

 使えない方やエラーが出てできない方は公式サイトから手動でダウンロードしてください。

 gitが使えない方で使えるようにしたい方は以下の記事を参考にしてください。

 ダウンロードが終わるとこのような感じになります。

 では次にインストールをしていきましょう。「LoRA_Easy_Training_Scripts」内の「install.bat」を起動してください。勝手にインストールが始まります。

 途中でインストールする「torch」バージョンを聞かれます。3種類ありますが正直どれでも大丈夫です。今回は1の2.0.0でインストールしていきます。

 インストール完了直前で使っているGPUの型番を聞かれます。高速化できるGPUや低VRAMモードに設定する必要があるGPUがあるので該当する方は「y」を押してください。

 これでインストールは完了です。では実際に「run.bat」を選択して起動してみましょう。

 まずコマンドプロンプトが立ち上がり、そのあとGUIが立ち上がります。
起動すると初期画面はこのようになっています。様々な項目が英語で書かれてあり一見すると難しそうですが覚えておけばいい重要な項目は結構少ないです。

WebUI側の準備(着せ替えLoRAを作りたい方以外はこの部分は飛ばしても構いません)

 通常のキャラLoRAではキャプションがなくてもかまいませんが、着せ替えLoRAを作る際は学習から除外する要素を学習画像と同じ名前のテキストファイルに記述することができます。間違えやすいのですが、LoRAのキャプションファイルに記載するのは学習したくない画像の要素です。
 ここで必要なWebUIの拡張機能を二つご紹介します。

wd14-tagger(タグ付け)
 キャプション(タグ)ファイルは手動で用意するのがすごく面倒なのでAIで用意するのが一般的です。この拡張機能は画像にある要素をプロンプトのような形式で書きだしてくれます。

captioning helper(タグ編集)
 上記のwd14-taggerでタグをつけたときに重複していたり、着せ替えLoRAを作る際に不要なタグを削除するのに使います。

 まずは拡張機能をインストールします。WebUIの「Extension」タブを開いて「install from URL」を選択します。「URL for extension's git repository」という欄に次のURLをコピー&ペーストしてください。あとは④の「install」ボタンを押すだけです。

https://github.com/picobyte/stable-diffusion-webui-wd14-tagger

 同じようcaptioning helperもインストールします。

https://github.com/gnnsnzh/captioning_helper

 インストールが終わったら「Apply and restart UI」でWebUIを再起動します。上部のタブに「tagger」と「Captioning Helper」というタブが追加されていたらインストールは完了です。

学習画像の用意

 今回は作例としてキャラLoRAを作っていきます。画像はあいばのうさぎさんの白髪片目隠れ赤目ウサギを再現していきます。キャラLoRAはpixivなどで収集した版権絵を学習させるのが主流ですが、モデルでは打率の低いうちの子などの画像の中から出来がいいものを選んでLoRAにすることもできます。
 とりあえず、最近の投稿から20枚を選びました。

 画像を選別したらこのように二つのフォルダーを用意します。片方は学習用の画像が入ったフォルダー、もう片方は出力されたモデルを保存するフォルダーです。KohyaGUIの場合と同じように、画像フォルダーに繰り返し数とトリガーワード(LoRAをWebUIで使うときプロンプトの一緒に入れるタグのこと)を記載することもできます。しかし、着せ替えLoRAなどキャプションファイルをベッド用意する場合はキャプションファイル内に記述するので必要がありません。

キャプションをつける
 着せ替えLoRAを作る場合は、学習から除外するタグをテキストファイルに記述する必要があります。
 先ほどインストールした「tagger」タブを開いたら、「Batch from directory」のタブを選択します。③の部分にタグ付けする画像が入っているフォルダーを指定します。基本的に同じパスで大丈夫です。

 「Interrogator」ではタグ付けするモデルを選びます。初期では「WD14 moat tagger v2」が選択されていますが今回は「WD14 SwinV2 v1」を使います。⑤ではタグ付けの精度を決めることができます。この値を低くすると多くのタグをつけられていますが関係のないタグが付く可能性があります。
 設定が完了したら中央の⑥「Interrogate」を押します。

 タグ付けが完了するとこのように画像フォルダーにタグファイルが生成されます。

 タグファイルを開くとプロンプトのようなものが羅列されています。着せ替えLoRAの場合、除外したいのは着ているものですので外見のタグを消していきます。まず「Captioning Helper」を開きます。次に画像フォルダーのパスを「Dataset Directory」に入れます。ついでに邪魔なタグや重複したタグも消したいので「Remove Unnecessary Tags」「Remove Duplicate Tags」「Merge Tags」にチェックを入れます。

 トリガーワードを追加する場合は③に「aib」などのトリガーワードを設定します。ここでいったん⑤の「run」を押してタグを整理します。
 ここが一番重要なのですが④に削除する外見の要素を入れます。タグファイルを開くと「white hair」などの覚えさせたいタグがあるのでこれを消していきます。
 私が実際に削除したタグは「 rabbit ears, hair over one eye, red eyes, long hair, large breasts, extra ears, grey hair, rabbit extra ears, long white hair, rabbit girl, white very long hair, animal ear fluff」でした。
これを④に入れてもう一度「run」を押してください。

キャプションの例

 ここからはあいばのうさぎさんからお借りしたデータセットにどんなタグをつけたのか一枚ずつすべて掲載していきます。

aib, japanese clothes, kimono, rabbit ears, twintails, cleavage, floral print, smile, night, looking at viewer, outdoors, open mouth, sash, obi, off shoulder, blush, bare shoulders, star (sky), black kimono, solo focus, starry sky, 1girl, collarbone, yukata, :d, night sky, cowboy shot, standing, bow, building, sidelocks, print kimono, fang, plant, long sleeves, multiple girls
aib, 1girl, solo, japanese clothes, cleavage, looking at viewer, ponytail, off shoulder, blush, outdoors, smile, bare shoulders, collarbone, floral print, open mouth, day, sidelocks, sky, long wide sleeves, sweat, upper body, cloud, :d, red white print kimono, black hakama, hand up, sash
aib, 1girl, solo, rabbit ears, sitting, looking at viewer, japanese clothes, full moon, bare shoulders, sash, closed mouth, barefoot, grass, medium breasts, sky, wide detached long sleeves, white kimono, wariza, night, dark-skinned female, white flower, white dress, hand up, star (sky), obi, outdoors, bare legs, thighs, floral print
aib, 1girl, japanese clothes, solo, rabbit ears, floral print, looking at viewer, blush, water, smile, sitting, long wide sleeves, closed mouth, red print kimono, hair red white flower, outdoors, sash, obi, two side up, sunset
aib, 1girl, solo, japanese clothes, cleavage, off shoulder, twintails, looking at viewer, red kimono, open mouth, night, smile, floral print, bare shoulders, sitting, blush, collarbone, hair ribbon, outdoors, :d, star (sky), sidelocks, long sleeves, night starry sky, thighs, skirt, hakama, building
aib, 1girl, japanese clothes, rabbit ears, full moon, looking at viewer, solo, water, outdoors, floral print, night, rabbit, blush, hair red flower, closed mouth, long wide sleeves, own hands together, smile, wading, white print kimono, animal, long white multicolored streaked red hair, partially submerged
aib, 1girl, solo, twintails, rabbit ears, japanese clothes, looking at viewer, full moon, smile, open mouth, floral print, night, blush, star (sky), east asian architecture, sash, mountain, :d, cowboy shot, standing, outdoors, red pink eyes, starry night sky, looking back, black thighhighs, medium breasts, obi, hair pink flower, pink short kimono, long wide sleeves
aib, 1girl, solo, cleavage, japanese clothes, twintails, smile, looking at viewer, bare shoulders, earrings, off shoulder, autumn leaves, open mouth, jewelry, sitting, white kimono, :d, blush, leaf, outdoors, thighs, detached collar, long sleeves, east asian architecture, sash, day, floral print, sidelocks, collarbone, autumn, long grey hair, bow, between legs, indoors
aib, 1girl, solo, spider lily, japanese clothes, off shoulder, open mouth, looking at viewer, bare shoulders, smile, cleavage, outdoors, extra rabbit ears, black kimono, red flower, twintails, blush, :d, sidelocks, hair ornament, flower field, hand on own chest, hair red ribbon, long wide sleeves, floral print, star (sky), starry sky, night, yukata
aib, 1girl, solo, cleavage, off shoulder, smile, bare shoulders, looking at viewer, thighs, night, long sleeves, outdoors, long grey hair, twintails, white jacket, parted lips, black choker, bowtie, sash, blush, hair red bow, black strapless dress, sidelocks, hand up, rabbit extra fox ears
aib, 1girl, solo, rabbit ears, full moon, night, looking at viewer, smile, star (sky), outdoors, parted lips, starry night sky, hair white flower, blush, long wide sleeves, medium breasts, floral print, standing, skirt, dark-skinned female, one eye covered, cleavage, from side, swept bangs, viera
aib, 1girl, solo, twintails, cleavage, looking at viewer, sitting, blush, extra rabbit ears, bare shoulders, hair flower, detached collar, japanese clothes, open mouth, off shoulder, thighs, kimono, floral print, smile, indoors, sweat, sidelocks, feathered angel wings, black strapless dress
aib, 1girl, solo, cleavage, japanese clothes, off shoulder, twintails, looking at viewer, smile, bare shoulders, night, full moon, thighs, outdoors, blush, parted lips, collarbone, sitting, water, long sleeves, neck ribbon, sash, large between breasts, black kimono, long grey hair, extra rabbit ears, floral print, night sky
aib, 1girl, pom pom (cheerleading), solo, outdoors, smile, looking at viewer, holding, open mouth, japanese clothes, building, blush, day, thighs, standing, :d, black hakama, black pleated hakama skirt, cheerleader, standing on one leg, socks, sky, long white grey hair, collarbone, shoes, leg up, medium breasts, kimono, side ponytail, holding pom poms, red shirt
aib, 1girl, japanese clothes, solo, full moon, braid, cleavage, looking at viewer, night, outdoors, off shoulder, black kimono, blush, sash, hair ornament, smile, bare shoulders, rabbit ears, obi, open mouth, autumn leaves, night sky, water, upper body, floral print, maple leaf, long wide sleeves
aib, 1girl, japanese clothes, solo, cleavage, outdoors, kimono, looking at viewer, autumn leaves, sash, bare shoulders, hair ornament, detached collar, obi, blush, smile, full moon, torii, maple leaf, autumn, water, wide long detached sleeves, fox ears, night
aib, 1girl, solo, japanese clothes, autumn leaves, kimono, outdoors, looking at viewer, bare shoulders, sash, blush, obi, hair ornament, off shoulder, cleavage, floral print, smile, closed mouth, dress, twintails, sidelocks, autumn, wide long sleeves, tree, water, very long grey hair, standing, day, maple leaf, hand up, ribbon, cowboy shot
aib, 1girl, solo, japanese clothes, cleavage, full moon, looking at viewer, outdoors, hair ornament, earrings, smile, jewelry, autumn leaves, blush, night, open mouth, bare shoulders, own hands together, water, very long hair, ponytail, maple leaf, upper body, wide detached long sleeves, sidelocks, black kimono
aib, 1girl, japanese clothes, solo, rabbit ears, looking at viewer, outdoors, water, floral print, smile, sash, blush, ahoge, closed mouth, wading, obi, hair holding white flower, long wide sleeves, tree, from side, standing, tassel, print kimono, hand up
aib, 1girl, solo, full moon, twintails, smile, japanese clothes, looking at viewer, outdoors, black thighhighs, floral print, sash, water, pleated black skirt, long frilled wide sleeves, east asian architecture, frills, zettai ryouiki, blush, night, obi, standing, medium breasts, parted lips, skindentation, night sky, grin, rock, cherry blossoms, white print kimono, star (sky), long grey white hair, wading

 これでキャプションファイルの編集は終わりです。

学習の設定

 「GENERAL ARGS」タブをクリックして折りたたむと全体が概観できます。今回使うのは「MAIN ARGS」の上から四つと「SUBSET ARGS」です。GENERAL ARGSから解説していきます。

GENERAL ARGS

①「Base Model」で学習に使用するモデルのパスを指定します。学習するデータセットによってモデルは変えた方がよさそうです。手描きのイラストを学習する場合は、公式のベースモデルを使った方が画風に影響が出にくいと過去の検証から判明しています。AIイラストを学習する場合は基本的に出力したモデルで学習するか、学習元に複数モデルの出力がある場合やわからないときはそれに近い出力をするモデルが最適かと思われます。
 今回は使用したモデルが分からないので「cetusMix_Whalefall2」を使っていました。


②SD1系ではここにチェックを入れる必要はありません。SD2系の場合は「SD2.X Based」と「V Param」に、SDXLで学習する場合は「SDXL Based」にチェックを入れます。

③「Batch Size」は何枚同時に画像を学習するか決める場所です。この値はGPUのVRAMが多いほど増やすことができます。学習が早くなりますし、画像を一緒に並行して学習するのでより画像を包括的に学習できることが期待できます。設定する際はVRAMが16GBのRTXA4000では5バッチまで上げれるので1バッチ3GB程度を目安にしてください。

④「Xformers」は学習時にVRAMの使用量を減少させます。学習が少し遅くなりますがVRAMが少ない方はチェックを入れることをお勧めします。

⑤「Max Training Time」では何Epoch学習するかを決めます。Epochとはデータセットを何周学習するかということです。ここは迷ったら10などに設定してください。

NETWORK ARGS

①「Network Dimensions」と②の「Network Alpha」は違うものですが同じ値に設定した方がいいです。詳しくは後編で解説したいと思います。いくつに設定すればいいかわからない場合は128に設定してください。

OPTIMIZERARGS

①で「Optimizer Type」というものがありますがこちらはデフォルトで構いません。

②「Larning Rate」は学習率とも呼ばれています。この値が低すぎると学習に時間がかかってしまいますし、高すぎると過学習になって学習元の画像がそのまま出てきてしまいます。初期値は1e-4ですが、これは0.0001という意味です。つまり1×-10の4乗です。。例えば、4e-4の時は0.0004、5e-5の時は0.00005ということになります。表記はどちらでも構いませんので感覚的に理解できる方を使ってください。
 私の経験則から推奨は5e-5~2e-4(0.00005~0.0002)ぐらいです。ただし、服装などを変える必要がなく、しっかり学習させたい場合は3e-4~4e-4(0.003~0.0004)ぐらいにしてもいいです。

SAVING  ARGS

①「Output Folder」では出力されるLoRAを保存するフォルダーを指定します。日本語が含まれたパスだと機能しないようなので入れないようにしてください。

②「Output Name」では出力されるLoRAの名前を指定します。私はいろいろな試行錯誤をするとき「SDバージョン-ベースモデル-学習枚数-(必要によっては繰り返し数)-学習率-エポック」という順番で記述しています。LoRAのインフォメーションからもすべて中身は確認できるのですが一つ一つ見るのが面倒なのでこのような名前にしています。

③「Save Freq」では何エポックごとにLoRAを出力するか指定します。今回は10エポックごとに出力するので2エポックごとに途中経過モデルを出していきます。

DATASET

 次に上部のタブを「SUBSET ARGS」に移動させて「DATASET」を編集します。

①「Input Image Dir」では画像の入っているフォルダーを指定します。先ほども書きましたが、KohyaGUIの場合と同じように、画像フォルダーに繰り返し数とトリガーワード(LoRAをWebUIで使うときプロンプトの一緒に入れるタグのこと)を記載することもできます。しかし、着せ替えLoRAなどキャプションファイルをベッド用意する場合はキャプションファイル内に記述するので必要がありません。

②の「Number of Repeats」で1エポックにつき画像を何回繰り返して学習するか指定します。だいたい10~20くらいが一般的です。

③キャプションファイルと一緒に学習する場合「Shuffle captions」にチェックを入れてください。理由は後編で述べますが、これでキャプションファイルの単語順がシャッフルされます。

④ キャプションファイルの先頭にトリガーワードを追加している場合かつ③の「Shuffle captions」にチェックを入れた際にはその場所だけランダムシャッフルの影響を受けないよう守る必要があります。例えば「aib」のトークン数は1なので「Keep Tokens」で1を指定します。

 以上で学習の準備は整いました。この設定を毎回するのは面倒なので設定ファイルに保存しましょう。画面左上の「File」から「Save Toml」を選択すると設定を保存できます。また、保存した設定は「Load Toml」から読み込むことができます。

 設定を保存したらいよいよ学習開始です。右下の「START TRANINIG」を押して学習を開始します。GPUによっては時間がかかることもあるので気長に待ちましょう。

white hair, hair over one eye, red eye, rabbit ears

 学習が終了したらできたLoRAを早速使ってみましょう。「LoRA」フォルダーに配置したら「Refresh」を押して更新してください。
 今回は学習率5e-5、1e-4、2e-4、4e-4の四種類でLoRAを作ってみました。生成するときに使ったモデルは「Silicon28-negzero」です。

 最初はプロンプトに容姿のプロンプト(white hair, hair over one eye, red eye, rabbit ears)を入れずに生成してみます。容姿を指定しないと2e-4くらいが適性のようです。4e-4の場合は学習率が高く、服装のプロンプトが効きづらいようです。

masterpiece,best quality, indoor, 1girl, solo, medium breasts, school uniform
XYZplot:"<lora:1.5_aib-cem-20-(5e-5)-e10:0>,<lora:1.5_aib-cem-20-(5e-5)-e10:01>,<lora:1.5_aib-cem-20-(1e-4)-e10:1> ,<lora:1.5_aib-cem-20-(2e-4)-e:1>, <lora:1.5_aib-cem-20-(4e-4)-e:1>"

 次に容姿のプロンプトも一緒に入れて生成してみます。容姿のプロンプトを入れると学習率が低くても再現できるようです。

masterpiece,best quality, indoor, 1girl, solo, medium breasts, school uniform, white hair, hair over one eye, red eye, rabbit ears
XYZplot:"<lora:1.5_aib-cem-20-(5e-5)-e10:0>,<lora:1.5_aib-cem-20-(5e-5)-e10:0.8>,<lora:1.5_aib-cem-20-(2e-4)-e:0.8>,<lora:1.5_aib-cem-20-(4e-4)-e:0.8>"

最後に

 前編では、簡単なLoRAの作り方を足早に説明していきました。後編では解説されなかった設定の詳しい説明をしようと思っています。近日公開予定ですのでお楽しみに~。

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