Pixiv Fanbox
「自分画風モデル」の作り方 for illustriousXL データセット作りからモデルマージまで
Published 10/19/2025, 10:28:18 PM · Edited 02/17/2026, 01:24:30 PM

こんばんは、スタジオ真榊です。今回は、illustrious系の人気モデル「WAI NSFW v14」(現名称はWAI-illustrious-SDXL)をベースに自分好みの「マスピ顔」LoRAを学習し、「自分画風」のオリジナルモデルを作る方法について、2025年10月現在の知見と検証内容をまとめました。LoRAとは何か、絵柄はどう学習すべきかから掘り下げた、2万3000字超の大型特集です。
今回紹介するのはいつものCoppyLoRA法(1枚絵から画風を抽出するかんたん追加学習法)と、自分で数十枚~のデータセットを用意する従来の追加学習法とを組み合わせて、構図やプロンプト応答への悪影響を最小限にする手法です。具体的には、
①好みの1枚絵を作り込み、CoppyLoRAを作成。ベースモデルにマージして、「中間ベースモデル」を作る
②ランダムプロンプトを活用して数百枚のデータセットを自動生成
③WD1.4 taggerやDataset tag Editorを使って独自のタグ付け
④Kohya LoRA param GUIで中間モデルをベースに学習(調整LoRA)
⑤CoppyLoRAと調整LoRAの適用強度を調整、ベースモデルにマージして完成
…という感じです。これによって、CoppyLoRA単体や通常の学習に比べ、悪影響が少なく、より表情豊かで狙った通りの画風を再現できるモデルをオーダーメイドしよう、という試み。特にタグ付けの部分はこれまでの考えと全く違うアプローチができ、再現性も高いはずですので、きっと何かの役に立つと思います。
目次
【序文】二つの「画風LoRA学習法」
①CoppyLoRA法
②従来の追加学習法
③今回の記事の趣旨
1.自分の「好みの画風」はどんなもの?
・好みの画風を組み上げていく
2.CoppyLoRAをサクっと作る
3.データセット用にランダム要素を加える
・縦横それぞれ400枚生成するやり方
・選別してフォルダにまとめる
・画像を一括縮小
4.画風LoRA用のタグ付け考
・タグ付けとは?
・LoRAは何をするものか?
・タグ付けはどんな役割をしているか?
・「Unetのみ学習」と「TE込み学習」
<まとめ>
・画風LoRAではどうタグ付けすべきか?
・結論
5.タグ付けの方法
・WD1.4taggerとDataset tag Editorを用意
・WD1.4taggerでタグ解析
・Dataset tag Editorでタグの取捨選択をしよう
・"すべての変更を保存"を忘れないこと!
6.学習用の「中間ベースモデル」を作る
・マージモデルを作る
7.Kohya LoRA param GUIで学習
・学習設定とその狙い
8.二つのLoRAでテスト生成
9.二つのLoRAの適用強度を調整
【終わりに】 なぜ1girlまで削除したのか?
【序文】二つの「画風LoRA学習法」
さて、実際に作業工程を見ていく前に、まずは画風LoRAとは何で、どうやったら好みの画風を覚えさせることができるのか、というところから入っていきたいと思います。
「自分画風LoRA」を作る方法は大きく分けて二つあります。一つ目は、コピー機学習法が簡単にできる「CoppyLoRAwebUI」を使って2枚の画像ペアから画風LoRAを差分抽出する方法。もう一つは、自分で十数枚~100枚以上の画像とタグのデータセットを用意して学習させる従来の追加学習方法です。
①CoppyLoRA
左の画像から画風を抽出すると、右のような画像が出せるLoRAが簡単に作れるのがCoppyLoRAです。「コピー機LoRA法」という、わざと過学習させたLoRAから差分を抽出することで、狙った概念をピュアに学習できる、非常に優れた学習法です。
本来、コピー機LoRA法は設定や技術理解のハードルが高く、上級者向けの差分抽出法なのですが、とりにく(@tori29umai)さんの無料アプリ「CoppyLoRA webUI v3」を使えば誰でも予備知識なしで作ることができます。(※詳しい使い方はこちらから)
このように、狙った画風の画像を下段に入力し、上段にはそれをめちゃくちゃにimage2imageして画風を「破壊」した画像(ただし、描かれているものや位置は全く同じにする)を入力することで、2枚の差分…つまり、下のイラストの画風をLoRAとして抽出することができます。
できたCoppyLoRAで「1girl」を生成するとこんな感じ。たった1枚の画像から、だいぶ画風の特徴をつかめていますね。勝手に金髪緑眼になったり、前髪に編み込みが生じたりもしません。
ただ、のび太の画像1枚だけでは、ドラえもんもジャイアンもいる藤子不二雄先生の画風を網羅できないように、画像1枚だけで画風を構築するのには無理があります。人間が描く絵にはポーズや画角やパース一つにもクセがあり、色んなところに個性が宿るもの。たった1枚(と破壊した画像のペア)から画風を抽出するのでは、そうした表情やポーズのバリエーションに宿る個性まで覚えさせることはできない…というのが、CoppyLoRAの弱点です。
その代わり、CoppyLoRAは画風概念のみをピンポイントで抜き出して学習できるので、LoRA適用時に構図やタグへの反応がおかしくなることをほぼ抑えることができます。まとめると、「思ったようなポーズや表情にまではさせられないが、悪影響のほとんどない顔立ちLoRAを誰でも簡単にすぐ作れる」のがCoppyLoRAの特徴と言えるでしょう。
②従来の追加学習法
画風LoRAを作るもう一つのやり方は、数十~数百枚の画像データセットを自分で用意して、適切にタグ付けし、それらの画像に共通する概念(この場合は画風)をLoRAとして学習させる従来の追加学習です。こちらはCoppyLoRA法と違って、さまざまな画像から多彩な表情や表現を幅広く覚えさせられる一方で、必要な工程が長く、複雑な点に留意が必要です。
画風が共通していて学習に適性のある画像群を自分で用意する必要がある上、細かな学習設定が非常にピーキーなため、「画風が似たけど、なぜかやたらとアップの画角になる」とか「顔が崩れてしまう」「妙な布が出現する」といった予想外の失敗が起こりやすいのがデメリットです。
③今回の記事の趣旨
今回は、CoppyLoRAに比べてハードルの高かった追加学習についていろいろと試してみた結果、失敗が少なくプロンプト応答への悪影響も少ない学習設定やタグ付け方法が分かってきたので、これをまとめたいと思います。具体的には、このような画像群を自分で用意することで…
「1girl」(髪型・色ランダム指示)でこのような画風が生成できるLoRAを作り、WAI NSFWv14にマージして、取り回しがよく表情豊かな自分モデルにすることができました。
特にこだわったのが、「たれ目」「ツリ目」「年上属性」のオンオフをプロンプトでできるようにしたことです。一つのモデルで、「tareme」と指示するとこのような顔立ちになり、
「tsurime,sanpaku」と指示すればこのような瞳のデザインになります。たまたまそうなるのではなく(適用強度やプロンプトにもよりますが)学習させた顔立ちにちゃんとなりました。もちろんベースモデルであるWAIv14も「tareme」「tsurime」指示でこのような描き分けができますが、それぞれのタグに自分好みの顔立ちを設定し直せるイメージですね。
さらに「mature female」を指示するとこのように年上キャラの顔立ちが描き分けできます。いずれもtsurimeを指示しており、統一感のある画風にできていると思います。
1枚絵のペアで学習させるCoppyLoRA法は非常に手軽なのですが、こうした任意の学習がなかなかうまくいかないのが悩みのタネでした。タグ付けのやり方などをイチから見直したので、改めてローカルLoRA学習の基本記事として書いていきたいと思います。
1.自分の「好みの画風」はどんなもの?
実際の工程をみていく前に、まずは「自分の好みの画風」を探るところから始めなくてはなりません。自分の手描き絵の画風を再現するのであればよいですが、私のように自分の手で理想の絵を描けない場合は、自分の「好き」ってどんなのだろう?という命題と向き合う必要があります。リアルタッチかデフォルメ強めか、頭身はどれくらいか、書き込み量は多いか少ないか、フラットな塗りかそれともグラデが効いているか、瞳の大きさやデザインは?幼め?人妻風?髪や瞳や肌のハイライトはどんな感じ?などなど、いろんな選択肢がありますね。
もちろん、好きな作品や作家さん、イラストレーターさんの画風を軸に考えるのもよいかと思いますが、実在するクリエイターの作品を集中学習させた「名指しタグ」や「名指しLoRA」は炎上と隣り合わせで、単独で使うのは非常にトラブルフルです。そこで、タッチや画材、線の太さ、書き込み量などを調整できるさまざまな調整系タグ・LoRAと複雑に組み合わせて、誰の絵にも似ていない「オリジナルAI画風」を作ってしまおう!というのが今回の企画なわけですね。
・好みの画風を組み上げていく
今回私が作った画風LoRAのテーマは「表情が豊かに出せる」「たれ目キャラとツリ目キャラではっきり顔立ちを描き分けられる」「たれ目は甘く可愛く」「ツリ目は鋭くクール」「年上はエッチに」「線は手描き風に少しジャギーな感じ」「色彩は豊かでポップ」「髪のハイライトと瞳のデザインに特徴を持たせる」「リーニュクレール風の塗り表現」といったところ。
ハイライトや瞳のデザインは、これまで作ってきたCoppyLoRAを複数組み合わせて表現しました。このような画像ペアの差分でできたLoRAが手元にたくさんあるので、これらを強度を強めたり弱めたりしながら適用して、ちょっとずつ好みの画風に寄せていきます。
その結果たどり着いた、スタンダードに「好み!」と言える画像がこちらです。茶髪より画風の色選びがはっきり出る金髪緑眼のキャラクターを被写体にしました。ピースサインを映り込ませたのは、指や爪の描き方も学習させるのが狙いです。
ジャギーな線、まつげの豊かさ、リーニュクレール(色をフラットに描いて、影を実線で縁取る手法)などはプロンプトで再現しました。jaggy linesやlong eyelashes、ligne claireといったタグを強度調整して組み合わせ、既存クリエイタータグも非常に弱めに、かつ複数掛けています。特定のイラストレーター風に顔立ちが寄っては意味がないので、これはごく弱めに、瞳のデザインを少し動かす程度に使っています。
2.CoppyLoRAをサクっと作る
画風の「ベース」となる理想の1枚ができたので、こちらをCoppyLoRAwebUIでLoRAにします。やり方はごく簡単。CoppyLoRAwebUIを起動して、左上からDetailTrain(詳細学習)モードを選択し、さっきの1枚と、それを「画風だけ破壊」した1枚を入力するだけです。
画風破壊は、描かれている被写体の位置やアウトラインはそのままに、タッチだけを大きく突き放す必要があります。いろいろなやり方がありますが、私は元画像のアウトラインをanytest v3で保持しつつ、実写系モデル(juggernautXL)を使ってこのように突き放すのをよくやります。
大事なのは、手や顔や視線や髪の色など、描かれているものは全く同じにすること。二つのペアで、異なっているのが画風だけにしないとなりません。破壊した画像の目が大きくなりすぎると、その差分も抽出されて「目を小さくするLoRA」の性格が強くなってしまうので、あくまで画風だけを突き放したいところ。
ですので、完全に実写調にするのではなく、ほどほどに瞳の大きさも揃えることで、このようなペアにしました。この調整は、Anytestの強度やステップ範囲を調整することで実現しています。
あとは上のスクショのように、ベースモデルを選んで、キャプションを記入し、LoRAの名前を適当に決めて「Train」ボタンで学習開始するだけ。ちなみに、キャプションは右の「Analyze」ボタンで自動抽出できますが、別にblonde hairやgreen eyesと書かなくても「1girl」のみで十分うまくいくことが分かりました。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////【2025/11/14追記】CoppyLoRAのキャプションについて
1girlのみでもこのように画風の学習が可能ですが、コンセプトLoRA(特定の部位のみに効果を利かせたい場合など)の学習時は、きちんと髪型や目の色などのタギングをしたほうが侵襲性の少ないLoRAになることが分かっています。侵襲性が少ないというのは、LoRAをOFFで生成した画像と同一Seed同一設定でLoRAを適用した場合、生成結果に狙っていない変化が起きにくいということです。
CoppyLoRAのキャプション付けはやや難しく、場合によっては予想外の結果を呼ぶことがあります。例えば今作っている画風LoRAのペアを版権キャラで生成した場合に「souryuu asuka langley」タグなどを入れていると、そのキャラを生成したときにしかうまく利かない画風LoRAになってしまうことがありました。
この記事では1girl生成したときはこういう差分を再現してほしいんだよということを強調したかったので1girlタグのみで差分を取りましたが、侵襲性を低くしたい場合にはAnalyzeボタンを使って通常のタギングのようなキャプションにしたほうが良い結果になることが多いです。(その場合、shirtとwhite shirtのような重複タグが出やすいので、片方を削除するとより正確性が増すようです)
コンセプトLoRAにおけるCoppyLoRAのキャプションについては、こちらの記事をご参照ください。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
さて、さきほどの「1girl」のみのキャプションでペアの差分を学習させたところ、40分ほどでLoRAができました。プロンプト「1girl」で生成してみると、このような画風で生成できるLoRAとなっていました。
え、もうこれで十分じゃない!?
…と一瞬なるわけですが、今回作りたいのは、笑ったときや怒ったとき、釣り目や年上を表現したいときにどんな画風になるかも細かく自分で指定できるLoRAです。例えばこのモデルに「1girl,tsurime」と指示すると、とたんに今覚えさせた画風のそれらしさが失われて、ベースモデル(WAI NSFW)の素の画風が出てきてしまいます。
▲コレジャナイ…
そこで、このCoppyLoRAとベースモデル(WAI NSFW v14)を単純マージして「中間モデル」を作り、それをベースに釣り目やたれ目を覚えさせた「調整LoRA」を作って、二つのLoRAをWAI NSFWに混ぜて理想のモデルを作る…という工程をこれからやっていきたいと思います。イメージとしては、新幹線(CoppyLoRA学習)でおおざっぱにガッと目指す場所に近づいてから、各駅(従来LoRA学習)に乗り換えて正確に狙った地点に到着するーという感じです。CoppyLoRAは侵襲性が低く、大きく画風を動かしてもプロンプトの混乱が起こりにくいので、まずはそれでだいたいの位置まで画風を寄らせて、侵襲性がたかく失敗しやすい従来学習で細かく調整するーというのが今回の狙いですが、うまくいくでしょうか。
さきほど金髪緑目の女の子を生成したときのプロンプトでは、さまざまな画風LoRAや画風タグをごった煮にして、このような画像が生成できるようにしていました。いま「tsurime」で生成したCoppyLoRAの生成結果と見比べると、やはり色合いのポップさや表情のかわいらしさが再現できていませんね。これから、こうした「お手本」をたくさん作っていきます。
さらに、「tsurime」や「sanpaku」といったタグや別の画風LoRAを強度調整しながら適用して、釣り目顔の画風も作ってみます。「constricted pupils」などのタグと組み合わせて黒目の大きさをいじるなどして、これくらいが好み!という釣り目顔を作っていきました。
同様にして、好みの「mature female」画風も作っていきます。「mature female」でWAI NSFWで生成すると基本胸の大きい人妻風になるのですが、それでよいのか、それとも違う感じにしたいのか、自分の好みに尋ねてみて、好みの「mature female」が出るプロンプトを考えていきます。
▲私はこういうのが好き
要するに、これからデータセット用に大量の学習用画像を生成するにあたって、「tsurime」「tareme」「mature female」それぞれが確実に好みな感じ(これから学んでほしいお手本)になるプロンプト三種を準備するわけです。既にCoppyLoRAによってある程度ゴール地点に近いところまで画風を寄せられているので、1枚の画像からでは抽出しきれなかった色使いや目のデザイン、表情といった重要な最終調整を数百枚の画像で学んでもらおうということですね。
3.データセット用にランダム要素を加える
LoRA学習用のデータセットでは、できるだけバリエーション豊かな画像を用意する必要があります。バストアップの画像ばかりで学習させると「この画風はバストアップにするんだな」と誤ったメッセージとして伝わってしまい、「full body」と指示しても上半身のアップばかりが出るLoRAになってしまうためです。今回のやり方では「各駅乗り換え法」を使ってこうした悪影響をタグ付けや設定で軽減しますので、そこまで厳密にバリエーション化させる必要はありませんが、やはり偏りは悪影響のもとですので、できるだけ均等化を意識しましょう。
wildcardとランダムプロンプトについてはこちらの記事を参照のこと。
簡単に言えば、「__服装__」のような指示をすると、あらかじめ用意しておいた服装タグ群から一つランダムにピックアップしてプロンプトに加えてもらえるのがwildcard。{smile|angry|sad|happy}のように指示すると、喜怒哀楽のどれかがランダム採用されるのがランダムプロンプトです。
今回は「表情」「ヘアスタイル」「年齢」「アングル・構図」「眉の太さ」「服装」「構図」「ツリ目かたれ目か」「髪や目の色」「視線の向き」といった要素をランダム化させたいので、このようなwildcard+ランダムプロンプトを組みます。
__expression_all__,{upper body|from side|cowboy shot|full body},{tareme|tareme|tsurime,sanpaku},{|||thick eyebrows}, {casual wear|school uniform|bikini| __cosplay__},{looking at viewer|looking ahead|looking away||},__eyes-color__,{||mature female},__hairstyle__,__eyecolor__,__haircolor__
hairstyleなどのwildcardは「プロンプト大辞典」で配布しているものを基に、不要なもの(例えば角刈りなどの髪型)を削除して使いました。こちらからDLできます。
{|||thick eyebrows}や{|||mature female}のように組むと、4回に1回の頻度で太眉や年上キャラが混じります。このあたりは自分の好みでバリエーション頻度を調整すると良いと思います。
準備が整ったら、とりあえず何回か生成してみて、「思った通りの自分画風画像」が自動で量産できるようになるまで、プロンプトを微調整します。目が大きすぎるとか、手足が崩壊しやすいとか、もうちょっとまつ毛描写が欲しいとか、生成結果を見るとさまざまなことが分かるはず。例えば「表情が硬いな」と感じたら、__expression_all__を1.3倍強度で適用してみるなど、自分の好みと需要に従って最後の微調整を行いましょう。
今回は閉じた目をさほど用意しませんでしたが、閉じ目・半とじ目の表現も凝りたい場合は{open eyes|open eyes|open eyes|closed eyes|half closed eyes}などとしてもよいです。open eyesを増やすことで閉じ目ばかりになるのを防げます。
十分理想の画風でランダム生成できるようになったら、いよいよ本番の連続生成を開始します。できたプロンプトで縦400枚、横400枚が連続生成されるよう指示したら、あとはやることがないので就寝。翌朝、このような画像群がちゃんとできていました。
・縦横それぞれ400枚生成するやり方
ちなみに、400枚生成を2連続で行うにはこのような感じで指示します。
4枚同時生成+アップスケーラー+ADetalier適用で100回生成する設定でまず生成開始し、生成が始まったら「幅・高さ」を逆転させて(つまり縦長に変更して)、プロンプト欄でShift+ENTERを押すと、キュー(順番待ち)できます。これで放置しておけば、横長画像を400枚生成したあと、続いて縦長画像が400枚できているはずです。
・選別してフォルダにまとめる
生成できた800枚の中には、六本指などのミス生成や、学んでほしくない表現の画像も相当数混じっているはずです。これらを全部覚えさせると低品質な画風LoRAになるので、800枚の中から使えそうなものをピックアップしていきます。手・指が崩壊していたり、細部がおかしくなっている画像は除き、こういう絵にしたいんだ!という好みの画像を数十枚~数百枚ピックアップしてフォルダに放り込んでいけばOK。
データセット枚数に特に決まりはないので、自分の気合・体力と相談しましょう。枚数が多いことより、きちんと共通性、法則性があってミスのない画像群であることが重要。できるだけバリエーションを多く、均等にばらけさせるのもコツです。upper bodyばかりでfull bodyが少ないと、アップになりがちなモデルができてしまうからです。
フォルダ構成は以下のようになります。
LoRA/ ←適当な浅い場所にルートフォルダを置く(名前はなんでもよい)
└ training/ ←学習データを入れるフォルダ(名前はなんでもよい)
└ mystyle/ ←データセットの親フォルダ(これを学習させる)
└ 1_mystyle/ ←ここにピックアップした画像を保存する
好きな場所にルートフォルダ(例:LoRAフォルダ)を作り、その中にトレーニング画像フォルダ(例:training)を作るのがおすすめ。さらにその中に、これから学習するLoRAごとのフォルダを作るわけですが、画像を保存するのはさらにもう一つ下のフォルダになります。
このようなフォルダ構造になっていればOK。必ず「trainingフォルダの下は2重構造」「画像保存フォルダの冒頭は数字とアンダーバー」のルールを忘れないようにしてください。
画像保存フォルダの頭の数字(上の画像では1)は、画像が少なめな場合にリピート(複数周回)する回数です。100~200枚ほど画像があるとよいわけですが、例えば20枚しかなかった場合に、5~10とここに記入しておくと、同じデータセットをその回数だけ繰り返し学習するので、100~200枚分の学習量に水増しできるわけですね。今回は数百枚画像を用意したので、繰り返しする必要はありません。
・画像を一括縮小
画像のサイズはすべて同じに揃える必要はありませんが、1024px基準で学習する場合、大き過ぎたり小さ過ぎたりすると勝手にリサイズ・トリミングされますので、フリーソフトなどで1024x1024pxの正方形からさほど離れていないサイズに縮小してしまうのがよいです。おすすめツールはこちらの「縮小革命」。
操作は簡単で、このように「1024x〇〇」を選び「短辺基準」「回転なし」「PNG」としておき、右下に画像ファイルを複数選択してドラッグ&ドロップすると、「保存場所」で指定した場所に指定通りのサイズ(短辺1024px)に変更された画像がドッと生成されます。「Resizedの中に保存」にチェックを入れておけば、ファイル名の頭に「s-」がついた画像がResizedフォルダ内に一括生成される仕組みです。
(※縦横比のタブで"アスペクト比調整を有効にする"にチェックが入っていないことを確認しましょう。チェックされていると画像がトリミングされてしまいます)
「ファイル▶その他設定」では、「変換元ファイルへの上書きの許可」をオンにできます。こうしておくと、読み込ませた画像そのものをリサイズできますが、縮小前のサイズにはもう戻せなくなるので、適宜バックアップを忘れないようにしましょう。
4.画風LoRA用のタグ付け考
さて、ここからが今回の記事の本題。SDwebUIの自動タグ付け機能「WD1.4Tagger」とタグ一括整理機能「Dataset tag Editor」を使って、用意した画像にタグ付けをしていくのですが、今回はこれまでとは全く異なる考え方でタグ付けを行います。
どうタグ付けするかの前に、そもそもタグ付けとは何のためにするのか、タグ付けされたデータセットをAIはどのように学習するのか、順を追ってみていきましょう。
・タグ付けとは?
画像生成AIのデータセットは「セット」というくらいですから、画像だけではなくそれに対応した説明文(テキストデータ)が必要です。いま学習用のフォルダ内に「mystyle01.jpg」「mystyle02.png」...と20枚の画像が並んでいるとしたら、フォルダ内に「mystyle01.txt」「mystyle02.txt」...と、同じ名前のテキストファイルも20個並ばせます。テキストなしで画像だけを学習させることもできますが、こうしないとLoRAを狙ったかたちで効かせることができません。
テキストを開くと、そこにはこのように、冒頭にLoRAの効果を発動させる「トリガーワード」が書かれ、その画像に何が描かれているかが続きます。これを用意する作業が「タグ付け」です。
・LoRAは何をするものか?
そもそも、LoRA学習とは内部的に何をしているのでしょうか。そして、ユーザが渡したタグ付けはどのように学習に活用されるのでしょうか。正確性よりも直感的な分かりやすさを優先して考えてみます。
例えば、「1girl,red hair,tareme,upper body,waving hand,smile,serafuku」を普通に生成すると左が出るベースモデルに、適用すると右を生成してくれるLoRAを作りたいとしましょう。LoRA学習とは、集めた画像とベースモデルとの「差分」を抽出して、「ベースモデルの地図を動かす」行為です。そして、学習の発動条件&生成時の発動条件となるのが、学習時に示した「タグ群」です。
ベースモデルの中に、数字で描かれた「言葉の地図」が並んでいるのをイメージしてみます。red hairはこのへんにあって、serafukuはこういうもので、他のタグとはこう関わるよというのが地図上であらかじめ決まっていて、serafukuを着ているキャラはschool bagを持っていることが多いとか、sadな1girlにはtearsもくっついてくることがあるといったことをベースモデルは学習しています。その結果、red hairなどの指示で左の画像が出るわけですが、それを狙った分(左右の画像の差)だけ「ずらす」のがLoRA学習ということになります。
▲ベースモデルの整った地図をちょっとだけ「ずらす」のがLoRA
画像とタグがまとまったLoRAのデータセットを渡されたとき、モデルは「このタグを学習してほしいってことね。で、それが指示されたとき、この画像群のような見た目に全体をずらせばいいのね」と理解します。絵柄やタッチ、色合い、陰影などをまるごと「差分」として覚えるわけです。そして、できたLoRAが生成時に適用されると、タグの発動要件に応じて学んだ内容分地図を「ずらす」。これによって、画風が変化したり、それまで知らなかった概念を生成できたりするようになるわけです。
しかし、画風だけをいじりたいのに、構図部分にも「ずらす」影響が及んでしまったらどうなるでしょうか。cowboy shotと指示しているのに顔のアップばかりが出るようになってしまったり、顔が見切れる画像ばかりが出てしまったりしますね。もっと悪いと、腕が増えたり、キャラが双子に分裂したり。用意したデータセットに予期せぬ偏りがあると、せっかくきれいにできていたベースモデルの地図を乱してしまい、使いづらいLoRAになってしまいます。
CoppyLoRAはこの点、狙った要素(多くは画風)だけに着目して「ずらす」ことができるため、悪影響の少ないLoRAができるわけですね。従来のデータセット学習法は、豊富な画像群でもっと広い範囲を「ずらせる」変わりに、上手に設定できないとさまざまな悪影響を及ぼしてしまいます。
・タグ付けはどんな役割をしているか?
では、「ベースモデルの地図をずらす」にあたって、タグ付けは何をしているか。よく言われるのが「覚えさせたい概念のタグを削除するとトリガーワードとして覚えてくれる」という説明ですね。例えば、ミナちゃんのキャラLoRAを作るときは、「ponytail」や「black hair」「red glasses」といったタグを削除して、すべての画像に「zaraki_mina」というトリガーを与えます。そうすると、zaraki_minaは黒髪ポニテで赤眼鏡の1girlなのねと学んでくれるわけです。
ただ、これは結果的に見た目上そうなるだけで、正確な説明ではありません。正確には、「指定したタグ(トークン)があるときにだけ発動する差分を設定する」のがLoRAなわけです。
すべての画像に共通するタグがついていた場合、それがトリガーワードとして機能するのは、「ponytail」や「red glasses」といった削除したタグの効果が「zaraki_mina」というタグだけで発動するようになるため。ponytailと指示しなくてもポニーテール効果が発動するので、結果として「1girl,zarakimina」で赤眼鏡のポニーテール娘が出てきます。これが「削除したタグの特徴がトリガーに集約された」ようにユーザーからは見えるわけですね。
・「Unetのみ学習」と「TE込み学習」
LoRAにはU-netのみに学習させる方法と、テキストエンコーダ(TE)にも同時に学習させる方法があり、後者では「ベースモデルの地図」をはっきりと動かしたり、新しい概念を覚えさせたりすることができます。語義を上書きすることができるので、極端なことを言えば「sad」と指示して笑顔を出すようなことも可能になります。その代わり、ベースモデルがきれいに整備していた既存タグの地図に予期せぬ「ずらし」を加えてしまうこともあるので、失敗しやすくもなります。
一方、U-netのみに学習させた場合、画像群に共通する「見た目」の分だけ地図はずれますが、語義そのものを大きくずらすような効果はありません。が、zaraki_minaなど新しく与えられたタグ(トリガーワード)が、既存の地図とどのようにかかわるかを理解することもできなくなります。機械的に「zaraki minaって何?まあそのタグが来たらよくわからんけどデータセット差分だけ普段よりずらして絵を描きますよ」という状態になるので、プロンプト応答性はTE込みに比べて下がることになります。
<まとめ>
まとめると、UNetのみの学習は「絵の描き方をざっくり教える」こと、TE込みの学習は「言葉の意味をいちから教え直すこと」と理解すると感覚的に近いように思います。
キャラLoRAや概念LoRA(ポーズLoRA、服装LoRAなど)はTE込みで学習させることで、地図上の言葉を定義・再解釈できますが、その分、地図が「乱れてしまう」恐れも強くなります。黒髪・前傾姿勢ばかりのメイドさんデータセットでmaidと指示したらやたら黒髪でアップになるような現象はこのため起こります。画風LoRAはこうしたことを避けたいので、UNetのみ学習させるか、TEの学習率を大幅に下げたいところ。そうすれば、語義(地図上の位置)は触らずに、見た目だけを狙った分ずらすことができるはずです。
・画風LoRAではどうタグ付けすべきか?
ところで、キャラLoRAでは、覚えさせたいキャラクターのトリガーワードを1つ目に並べ、覚えさせたい(常にそう描いてほしい)概念のタグを削除するのが普通です。例えばこのキャラなら、「anna kinugawa」というトリガーで覚えてほしいblack hairやlong hair、purple eyesといったタグを削除しますよね。服装などを着替えられるLoRAにしたい場合、shirtなどの服装タグは残すことになります。
ここまでは良いとして、では画風LoRAはどのタグを削除して、どれを残すべきなのでしょうか。ここが超本題。
よく言われるのが、「画風LoRAはタグ除去をしなくてよい」という説です。誤検出タグや重複タグはもちろん削除すべきですが、そうしたタグ以外はすべて残すのが画風LoRAの作り方である…というのがよくネット上に書かれている解説で、私もそのようにして学習させてきました。
しかし、先述したようにLoRA学習とは「用意した画像とタグの組み合わせによって、ベースモデルの地図をずらす行為」です。ユーザがタグ付けした概念はLoRAに刻まれて、ベースモデル内のそのタグが示す地図をずらしてしまいます。例えば素の状態のベースモデルが「cowboy shot」の概念をきれいに出せるなら、そこからcowboy shotの地図を動かしたくないわけですが、データセット内のタグ付けに「cowboy shot」が含まれていたら、「これらの画像から読み取れるベースモデルとの差異=差分を学習してください」という意味になってしまいます。前傾したcowboy shot画像がデータセットに多ければ前傾しまくるLoRAになってしまいますし、upper bodyに近い画像にcowboy shotとついていれば、上半身ばかりが描かれるLoRAになってしまうわけです。(語義の変容)
そしてこの現象は、TE込みの学習でなくてもある程度起こりえます。ある画風をUnetのみで学んだLoRAでも、その画像データセットに偏りがあれば、意味も分からずにその偏りを再現しようとするからです。
では結局、画風LoRAのタグ付けはどうしたらいいのか。
・結論
結論です。ただ画風だけを覚えたいなら、画風LoRAにタグ付けは必要ありません。1girlすら削除すべきで、トリガーワードのみでも良いのです。
「そんなことしたら、その画風で1girlをどうやって描けばいいか分からなくなっちゃうし、男が映り込んだりキャラが分裂しちゃわないの?」と思うところですが(私もずっとそう思っていたのですが)タグ付けされていない概念はベースモデルの地図をずらしません。cowboy shotの概念をずらしたくないなら、cowboy shotとタグ付けしなければよいのです。画風だけをピンポイントでずらしたいなら、トリガーワードだけでOKというのが理屈上は成り立つはずです。
しかし、今回は「tareme」指示すると用意したたれ目絵に、「tsurime」で用意したツリ目絵に、「mature female」で用意した年上画風にしてほしいので、トリガーワードとは別に、これらのタグのみは使います。そうしないと、常にこの三つがまじりあって描かれてしまうので、taremeでtsurimeでmatureな1girlが出るLoRAになってしまうわけです。
こちらの画像なら、トリガーワードのdecompmixと「tareme」だけでOK。bikiniとかblack hairなどを定義して動かしてやる必要はありません。黒髪をどう描くかは、ちゃんとタグがなくても画像群の共通点から学習してくれます。
本当かよ?
いや正直、いろいろ考えていてこの結論に至ったときは「絶対嘘だろ」と思ったのですが、とりあえずこの考え方で進めていきましょう。
5.タグ付けの方法
では、用意した画像にトリガーワードと描き分けたい要素のタグをつけていきます。今回は最近読んだ小説にちなんで「デコンプミックス」という名前のモデルにするので、トリガーワードは「decompmix」。描き分けたいのは「tareme」「tsurime」「mature female」ですので、この四つのタグだけを各画像にタグ付けします。
・WD1.4taggerとDataset tag Editorを用意
まだインストールしていない方は、WD1.4taggerとDataset tag Editorをインストールするところからです。といっても、「URLからインストール」に下記のURLを入れてインストールボタンを押すだけです。Forge Classicは対応していませんので、reForgeやA1111版SDwebUIにインストールするのがおすすめです。
・WD1.4taggerでタグ解析
WD1.4taggerは、指定したフォルダにある画像をすべて解析して、インタロゲーターと呼ばれるモデルでdanbooruタグを抽出し、テキストを自動生成してくれるタガーです。これがなかったら、ひとつひとつ画像を見てタグを手打ちするはめになりますので、LoRA学習になくてはならない拡張機能です。(ただ、今回のタグ付けには理由があってうまく使えませんでした。とりあえず読み進めてみてください)
インストールできていれば、「タグ付け」というタブが上部にできているはずです。こちらが起動画面。
「ディレクトリから一括処理」で、画像群を用意したフォルダを指定します。タグ付けテキストが出てくる「出力ディレクトリ」も同じフォルダにします。
インタロゲーターによって、どんなタグが検出するかが異なります。おすすめは、デフォルトにはないwd-EVA02-Large-V3。普通にDLしてフォルダに配置するやり方では導入できませんので、次の方法でインストールしてください。
①「extensions\stable-diffusion-webui-wd14-tagger\tagger」フォルダ内にある「utils.py」というファイルをテキストエディタで開きます。
②21行目(※記事執筆時点。アップデートで変更される可能性があります)にある interrogators: Dict[str, Interrogator] = { から改行して、以下の4行を挿入します。行の冒頭に4つ、または8つ半角スペースが入っていますが、これをそのままコピペしてください。pythonではインデント(行下げ)が揃っていないとエラーが起きるので、すぐ下の似たような行と見比べて、行の開始位置が揃っているか確認してください。
'wd-EVA02-Large-v3': WaifuDiffusionInterrogator(
'wd-EVA02-Large-v3',
repo_id='SmilingWolf/wd-eva02-large-tagger-v3',
),
④挿入した各行の位置が他の行と揃っていることを確認できたら、テキストエディタ上で「上書き保存」し、webUIを再起動しましょう。「タグ付け(Tagger)」のタブを開き、画面左側にある「インタロゲーター」のプルダウンメニューに「wd-EVA02-Large-v3」が追加されていれば成功です。
一括タギングのやり方についてはこちらの記事に詳しく書いてありますので、初めての方はこちらを参考に。
ここでは、検出閾値であるWeight threshold0.35、Min tag fraction in batch and interrogationsは0としてタグを検出してもらいます。Additional tagsにはトリガーワードを入れて、すべての画像にタグ付けしてもらいます。
準備できたらインタロゲートボタンをクリック。なぜかうちの環境では、このStability Matrix画面を最前面にしていないとなかなかタギングが進まないです。
しばらくするとこのように、膨大な量のタグが602枚のデータセットから抽出されました。すべての画像にdecompmixというトリガーがタグ付けできていますね。
今回はキャラLoRAではないので、「decompmix」「tareme」「tsurime」「mature female」以外のタグはすべて除去しますが、その前に「tareme」「tsurime」「mature female」の三つのタグが適切に検出できているか確かめます。ところが検出ランキングを見ると、tsurimeはたった2%しかなく、taremeに至っては一つも検出できていないことがわかりました。
Weight threshold(検出閾値)が0.35だと、tsurimeやtaremeといったマニアックなタグを検出できなかった可能性があるので、0.03まで下げてやり直してみますが、やはりtareme、tsurimeというタグは全体の数パーセントの画像にしかつきませんでした。これはインタロゲーターが何をtaremeと判定するかの学習傾向に基づくものですので、なんともしようがありません。
インタロゲーターによる自動検出では正確にすべてのたれ目・釣り目・年上キャラを見分けて100%の精度でタグ付けするのは無理だと分かりましたので、アプローチを変える必要があります。思いついたのは、まず「tareme」「tsurime」「tarememama」「tsurimemama」の四つの仮フォルダを作って、602枚の画像を手動で振り分け、フォルダ内全部に同じタグ付けをする方法です。(mature female概念の中にもツリ目とたれ目があるので、3つでなく4つに分けないといけません)
根性でカチカチ振り分けしても良いですが、Eagleで画像管理をしている方なら、大量の生成画像の中からtaremeだけ、tsurimeだけを表示するのは簡単でしょう。まずは画像のフォルダ分けをして、Dataset tag Editorでフォルダごとの全画像に「decompmix,tareme」「decompmix,tsurime」「decompmix,mature female,tareme」「decompmix,mature female,tsurime」とタグ付けすればよいわけです。
▲tsurimeのmature femaleだけを用意したフォルダ
・Dataset tag Editorでタグの取捨選択をしよう
フォルダ分けができたら、今度はDataset tag Editorのタブを開きます。この拡張機能では、フォルダ内の大量のタグを簡単便利に検出・追加・削除して整えることができます。こちらが起動画面。
まずは画面左のデータセットディレクトリから、「tareme」フォルダを指定して「読み込み」します。するとこのように、画面左にフォルダ内の画像一覧が、右側に対応するタグ群が表示されます。まだタグ付け前なので、何も表示されませんね。
タグ付け済みの場合は、このようにタグがずらっと並びます。「smile」のタグがついた画像だけをフィルタリングしたり、フィルタリングした画像だけにタグを追加したり、一部を書き換えたり、一括削除したりすることができる便利な機能です。
ここでは、「tareme」フォルダの画像全部に「decompmix,tareme」タグをつけたいので、「キャプションの一括編集」を開きます。タグの編集に追加したいタグを記入し、「先頭にタグを追加」にチェックを入れて、「フィルタリングされた画像に変更を適用する」をクリック。フィルタリングされていないので、これで全部の画像にタグづけがされます。「先頭にタグを追加」にチェックをいれたのは、こうしないと「,decompmix,tareme」と最初に不要な「,」が入ってしまうからです。
ちゃんとタグ付けができたか確かめます。左の一覧からどれか一枚を開いて、右上の「選択した画像のキャプションを編集」タブをクリックしましょう。このように、「decompmix,tareme」と表示されていますね。ちなみにここに「decompmix,tareme,honyarara」と記入して「フィルタリングされた画像に変更を適用する」をクリックすると、任意の内容に変更することもできます。
・"すべての変更を保存"を忘れないこと!
Dataset tag Editorを触る上で一番重要なことは、この段階ではまだ仮想上のタグ付けであり、テキストは出力されていないということです。Dataset tag Editor上でいじったタグは、左上の「すべての変更を保存」することで初めてフォルダ内に出力(変更内容が反映)されますので、絶対に忘れないようにしましょう。せっかくタグ付けしたつもりでも、保存せずにwebUIを終了してしまうと、またゼロからやり直しになってしまいます。
ちなみに、「元のテキストファイルをバックアップします」のチェックが入っていると、更新するたびにどんどんファイルが増殖しますので、外しておくことをお勧めします。
・トリガーワードはいる?
全ての画像に共通する画風を取り出したいのならトリガーワードすらいらないのではないか?ないほうが便利なのではないか?というのは一つ気になるところです。ここはまだ研究不足なのですが、実際にやってみると、トリガーワードがない場合はもちろん「どういうときにでも発動する」LoRAにはなるのですが、タグがたくさん入る複雑な構図を指示すると、ともするとベースモデルの画風のほうが優先されてしまったりします。(たくさんタグを入れると色指示が落ちてしまうのと同じ現象)
そういうときにトリガーワードがあれば、プロンプトの冒頭付近にトリガーワードを強調して入れることで改善できたケースがあり、個人的には画風LoRAでもトリガーワードを入れたほうが取り回しがしやすいと感じています。が、これはあくまで現時点(かつWAIベースに限った)話ですので、SDXLベースやillustriousXLベースにする場合などはまた違うでしょうし、LoRAの学習設定によっても変わってくるのではないかと想像しています。
6.学習用の「中間ベースモデル」を作る
「tareme」「tsurime」「tarememama」「tsurimemama」の4つの仮フォルダに無事対応するテキストを出力できたら、再び学習させるフォルダ(1_decompmix)内にまとめます。これで、たれ目、ツリ目と年上表現のどれに対応する画像かがきれいにタグ付けできました。試しにいくつか開いてみて、ちゃんとタグ付けされているか確かめましょう。
OKですね。
もう一度おさらいですが、これから作るのはベースモデルであるWAI NSFW v14用のLoRAではなく、WAI NSFW v14にCoppyLoRAを適用したところから、さらに画風をずらす(微調整する)ためのLoRAです。よって、学習のベースモデルにするのはWAI NSFW v14ではなく、WAI NSFW v14+CoppyLoRAのマージモデルにする必要があります。
この区別をしていないと、「フラットな塗り」とか「瞳は大きく」といった「ずらし」がCoppyLoRAとこれから作るLoRAでダブってしまい、想定した地図の行先から大きくずれてしまうためです。大阪から渋谷を目指すのに、大阪駅から東京駅まで行ける新幹線をCoppyLoRAで作ったのに、また大阪から渋谷まで行くLoRAを作って両方適用したら、目的地が東方面に大きくずれてしまいますよね。これから作るのはあくまで「東京駅から渋谷駅まで行ける各駅LoRA」というわけです。
・マージモデルを作る
というわけで、SuperMergerを使ってCoppyLoRAをWAIに混ぜます。SuperMergerは優れたマージャ―なのですが、A1111webUI以外で使うといろいろな不具合がでるので、Stability MatrixでA1111版webUIを開きます。SuperMergerの詳しい導入法・操作法は例によってこちらの特集で。
マージする前にまず、もう一度ベースモデルにCoppyLoRAを適用してテスト生成してみます。これはLoRA強度「1」。
こちらは強度「0.6」です。どちらを東京駅(中間地点)にするかを考えて、マージする強さを決めましょう。
SuperMergerの設定はこのような感じ(拡大してみてください)。
SuperMergerのLoRAタブを開いたら、さきほどテスト生成で決めた強度でCoppyLoRAを設定し、ModelAで選んだWAI NSFW v14にマージするだけです。file nameでモデル名を決めて、「Merge to Checkpoint(ModelA)」をクリックすると、1分ほどでマージ完了。出力先は共有のmodelsフォルダではなく、A1111の個別のmodelsフォルダなので、気を付けましょう。(Merged model saved in ●●●\Packages\Stable Diffusion WebUI\models\Stable-diffusion\decompbase.fp16.safetensorsなどと表示された場所にあります)
ここでは「basedecomp1.0.safetensors」という中間モデルを作りました。これをベースモデルにして、学習の後半戦をやっていきます。
7.Kohya LoRA param GUIで学習
学習用のアプリはいろいろとありますが、ここではいつものKohya LoRA param GUIを使います。導入方法と操作方法はこちらの特集を参照のこと。
プリセット情報を他のユーザーと共有できますので、パラメータ設定をどうしたらいいかよく分からない方は私の学習設定を使って学習してみてください。
解凍すると出てくるxmloraファイルを、「プリセットの読み込み」ボタンから読み込むと、このような画面になると思います。
「学習元/事前学習モデル」に先ほど作った中間ベースモデルを、「教師画像フォルダ」に画像を用意したフォルダの一つ上の階層を入力。出力ファイル名にLoRA名を入れて、できたLoRAの出力先フォルダを設定しましょう。
・学習設定とその狙い
今回はAdafactorというオプティマイザを使い、学習率(learning rate)は低めの0.0002、テキストエンコーダには触らないU-netのみの学習設定です。「キャプションのシャッフル」は、そもそもキャプションが2~3個しかないのですが、一応オンにし、「トークン保持数」を1にしてトリガーワードが最初に来るようにします。
次元数(dim)は「4」、アルファは「1」で、一枚一枚の細部を細かく執拗に覚えるというよりは、全体を俯瞰して共通点をふんわり覚える設定に。データセット枚数によりますが、エポックは右下のbatch1相当が2000~3000程度になるようにするとよいでしょう。バッチサイズ(同時に複数の学習を走らせるかどうか)は「2」を普段使いますが、使用グラボのVRAM容量と相談して決めてください。
詳細設定を確認すると、Unetのみ学習になっていることが確認できると思います。ちなみに「パフォーマンス」欄にある「モデルをfp8で読み込む」はオフにしていますが、VRAM10GB以下の環境ではオン推奨です。
準備ができたら学習開始。保存頻度が1になっているので、1エポックごとに一つLoRAが出力されます。過学習を起こす一歩手前のものを採用したいので、avr_lossが一番下がっているあたりが良さそうに見えます。
ベースにした中間モデル「Basedecomp1.0」に、さっそくできたLoRAを適用してみます。強すぎると思いますが、最終エポックのものを強度1で適用するとこんな感じ。
カラーが少し暗いのと、まぶたなどの細部がややおかしいように感じます。強度を下げるとこのような感じ。詳しくはこれから強度を調整していきますが、おおむね狙った成果が出ているように思います。1girlすらないタギングでも大丈夫でしたね。
8.二つのLoRAでテスト生成
これで、1枚絵から抽出したCoppyLoRA(mylora.safetensors)と、600枚のたれ目・ツリ目・年上画像群から抽出した調整LoRA(decompmix_plus)の二つが揃いました。この二つをWAI NSFW v14に同時適用し、強度を調整すれば、大阪駅から渋谷駅まで行ける…もとい、ベースモデルの画風を思った通りの画風に変更できるはずです。
髪型、髪の色、服装をランダムにして、Seed値1に固定してテスト生成してみます。二つのLoRA強度はそれぞれ0.5ずつ。
指示:<lora:mylora:0.5> <lora:decompplus:0.5>1girl, solo,decompmix,masterpiece,best quality,amazing quality, general, jaggy lines,white background, simple background,__cosplay__,__hairstyle__,__hair color__
問題なく、理想の画風が再現できているように見えますね!これはそれぞれ「tsurime」も「tareme」も指示していないので、両方が混じったような顔立ちになっていますが、指示するとどうなるでしょうか。
指示:上記+tareme(Seed値1で固定)
見事にデータセット通りの理想のたれ目になりました。
指示:上記+tsurime
こちらも切れ長でいい感じですね!sanpakuやslit pupilsと混ぜることでニュアンスも操作可能です。
指示:上記+mature female
年上表現も想定した感じになりました。これはたれ目、ツリ目指示がないバージョン。それぞれと組み合わせるとどうでしょうか。
指示:上記+tareme,mature female
指示:上記+tsurime,mature female
求めていた描き分けがしっかりできていますね!制服タグには少女らしい顔立ちがセットで学習されているので、右下だけややmature female度が低いのはそのためでしょう。
しかし、学習強度が強いと余計な場所の地図も動かしてしまって、いざ実用しようとしたら全然言うことを聞かない…というのもLoRAあるある。そこで、「腕組み+手を振る+足を組む+笑顔+年上+つり目+バニーガール+ホテル一室」という少し多めの指示を試します。
指示:<lora:mylora:0.5> <lora:decompplus:0.5>1girl, solo,crossed arms,crossed legs,sitting,smile,mature female,tsurime,playboy bunny,hotel room,
decompmix,masterpiece,best quality,amazing quality, general, jaggy lines,dynamic angle
目立った破綻もなく、安定しているように見えますね。ただ、背景が付くとややベースモデルの雰囲気が出てしまった気がします。今回のデータセットはすべて白背景にしていたので(普段私は白背景しか生成しないのでそれでよいのですが)、背景も含めて好みの画風にしたい場合は、データセットを背景ありの画像にする必要がありますね。
9.二つのLoRAの適用強度を調整
今度は、二つのLoRAをどれくらいの強度で組み合わせると、一番使いやすく好みの画風になるかを調整してみます。XYZ plotで、強度を次のように組み合わせました。X軸がCoppyLoRA、Y軸が調整LoRAで、空欄になっている部分は適用なし。右下が素のWAI NSFW v1の画風で、左上が最も濃く適用した形になります。構図への悪影響が防げていますね!
この中から好みを言えば、CoppyLoRA:1、調整LoRA:0.65くらいの塩梅でしょうか。それでテスト生成したのがこちらです。良い感じですね。
釣り目・たれ目・年上属性がランダム発動するミナちゃんを生成してみますと…
指示:1girl+ミナちゃん召喚タグ+{tsurime|tareme|mature female},knee to chest,smile,decompmix
上段はたれ目ミナちゃん、左下が年上ミナちゃん、右下がツリ目ミナちゃんです。年上ミナちゃんはserafukuのせいか、特に変化がないように見えます。データセットの中にミナちゃん画像を数枚入れておいたので、キャラデザのブレが少ないのもあるかと思います。
▲ちゃんといます
「mature female:1.3」に強めるとこんな感じ。わ…分かる!
調整LoRAの学習設定やデータセットを変えていけば、さらに細かく画風をコントロールすることも可能です。例えば、髪のハイライトのかたちだけを変えるcoppyLoRAを作って三つ目のLoRAとしてマージするのも良いですね。できたモデルを普段の作品作りに使いながら、「ここがちょっと違うな」と思うところがあれば、いつでも調整できるのが自分画風作りの楽しいところです。
【終わりに】 なぜ1girlまで削除したのか?
「ほんとかよ」と思ったタグ削除法でしたが、問題なく学習できてしまいましたね。画風LoRAを学習する際、構図タグを省けば構図指示した際の悪影響が少なくなるという理屈からすれば、ある意味当然ではありますが、1girlすらないのにキャラが増殖しないのは不思議な感じもします。というかそもそも、1girlはなぜ削除すべきなのでしょうか。
「1girl」はキャンバス内に少なくとも1人女性がいることを示すタグ。その女性が主体となることが多いことを示すこと、必ずしも女性単独ではないことなどをベースモデルは学習しています。今回のデータセットはすべて女の子が一人で映っている画像で構成されていますので、もし学習時に1girlとすべてにタグ付けしていたらどうなるでしょうか。普通に考えれば、同様に全ての絵についているdecompmix(トリガーワード)と結びついて「1girlを描くときは常にこの画風で描こう」というバイアスが働くはずで、一見残しておいたほうがより正確に学習できるような気がしますね。
ただ、そうすると1girlを使わなかったときにはdecompmix画風になりにくくなることも考えられます。例えば、1boyを生成したいのに、うまく画風が再現できなくなったら困ります。さきほどのLoRAでは1girlを削除したので、このようにデータセットに1枚もない男性キャラの画風もそれらしく統一してくれています。
もしタグ付けに「1girl」が入ってたら、1boyにここまで画風が適用されなかったかもしれませんね。やはり、偏りもあるデータセットで画風学習をするなら、タグ付けはできるだけ排した方がよいのかなと思います。もちろん、データセットに男性や複数人の画像が入っている場合は、今回tsurimeなどのタグを使ったように1girlや1boy指示を残すべきです。
というわけで、「自分画風モデルの作り方 for illustrious」でした。WAI NSFW+二つのLoRAのままで運用しても構いませんし、この強度で固定したいなら、SuperMergerで二つのLoRAを焼き込んで自分モデルにしても構いません。そのかわり、強度を気軽に調整できなくなるので、それぞれの普段のワークフローによって運用を考えるのがよいでしょう。
2つのLoRAを焼き込んだマージモデルを作っておくと、同じ画風で生成したデータセットでキャラLoRAを作る場合にベースモデルにできるのでのちのち便利だったりもします。
▲WAIv14用のキャラLoRAは普通に使える
今回は背景をあまり考慮しないLoRA作りでしたので、今度は背景込みで学習するやり方も検証してみたいと思います。それにしても、自分の好みの画像しか出てこないモデル作りというのは本当に楽しいですね。このところは新しいモデルが面白すぎて性癖に刺さる画像ばかり生成しているので、いつシャドウバンになるかヒヤヒヤしています…。
それでは今日はこのへんで。スタジオ真榊でした。
【お知らせ】
こちらの「プロンプト大辞典onGPT」ですが、GPT-5になってからNSFW系の指示が断られやすくなっていたので、調整しました。どうしても通らない場合はレガシーモデル(4o)を選ぶとましになるかと思います。
Attachments (70)

jP3Pz3Gxn4nGdU366GUek2Cr.jpeg

MFQPsgi5GaJlJNZYUrlJdQNr.png

TTwUmaCAJLbY1H74t9HNLiqL.png

L7CVd1hsvxT3OvXbmu3dWOVc.png

sAd9wxvY3AgEw2toqokGo9W9.png

DqRP4UgxpIWNw5VcLWqdtWh8.png

rtf4uintEhWe6rZ6eRIWWlcb.png

BauEldwMgNp9tZjJg1MVdP6E.png

8bXZOEV00G1GqhF4e3AbPEkR.png

2MOp2IlG0GGaD0iLkkJMyg10.jpeg

H5Z3mh1j7ily0b5I2rUgZIp4.jpeg

kx12VUGI9Y5HUqmtCu6POxen.png

0nJYt5GLOF2NGzoec4TPL1C3.png

vCBynurNOiRtoR8OI26bqRAZ.png

sWOdDRg4MaeencL7hR7oMBfi.png

GcHCmfGPyh2f4DEWLAdLz6kF.png

kmhHWU7CcwcPfCTgnkSezyYi.png

Nhtv8uRl7R5QzgJtuqjFo4uG.jpeg

tprrE0qvoQL9R2LZuo3PINlF.jpeg

ks5q7NvpoqrseSq0pTV0Ubb1.jpeg
random.zip

obCZEMzsogHFXZyA7QlNDkT3.png

SpwgpdQeo4xW2ryxFPZjW9xb.png

7KgrmBflkOMpNrLIHRhZEvxr.png

k5c8053S1ketGW13KFSpfBFT.png

dZmksd1SnwROaq4dzUiNAwoB.png

NzVqXVkaepWqcH7QO4AVzDiq.jpeg

KNq8HS6e8ByJCv68PefGICkB.png

P0NUK6ZaUfo7AwDlB6mSUp36.png

Nyv09stbKWgmZ5e1wzkM40kf.png

aJfnA5i2H8VzP25utiOvNrlu.png

8myp9094oSzBdgnI63lrgehE.png

GJUw8jivq16rzP0GXUUUx6qX.png

bxaXiZN6s3PFf7E7fVYbMrAX.png

3JCezbBszbjLXD9kSSh2JLFQ.png

VUU44Kx6ewpz7oRp4cwBT9IS.png

Wx9tsJS9M7nGhQU8nbMI1G3f.png

cJ9WbELuxiNtrFPQaL9TFImn.png

zBPWD0QEsCBVc8yhY5aoCnkG.png

0FVUd5i3rjGbCazQCSFWAy3g.png

GzXl6BOi35IeCYCSBTfvba36.png

KQHSFrzwlsToTjhoE1fA7BNo.png

YgereeqbqRdtijFw0EIf4osU.png

bgniZctSA5nEzDYgLPzdmxXM.png

hWfXnseUTxNnd5QUuG71zRxj.png

xw7xYADGzoe7aFNcHpS5Jpi4.png

No8bnnytreKkSTCZnJFnCZg7.png

vPfjkDuBFSFA43GfXC7FzXBk.png

tIqAnZk7uJdOOAUv0rPznpQs.png
スタジオ真榊画風プリセット(adafactor).zip

FPABUBO6xnmqSTHaxb0ocuNw.png

r17QdvxSHx3vH5HI47g9iWBZ.png

WIYTZdwORQHI5Q4GMCUrlagT.png

vtunIRzRtMwDFBMpXsgZRXlE.png

fEZzzGB5UbYz6P7zXFLoRBpU.png

RBAztE1pzLHP6UUP2XryhtiG.png

ohXA3xHjE67Ww0X7vmmzTpoW.png

rCrRJgbP3AUBfg7okHpoXd8L.png

XMdY6YqeaNYWVbD74I0ztjBo.png

lKMixmBYMrmMlpfA3EwUHTQN.png

qvgMhiaqZW87SSBuGzicc1xd.png

OSmxVEHIYFZQUD2TWuSOHZTf.png

bpBCSM1fW8XtzbFVTFIQXEjS.png

N1NWGF2Zn1n2Dcbdltk6lLEK.png

YEcUpyz9YAkm49OX8pPaZgDj.png

0SDGCijBUUZ870FXb5CHNvD6.png

RHBSQbMR53JVFgiFd3RIRMoA.png

bt5VU9GSLpeEmrF0wIscl80M.png

i67pyf8o0iRSLF1AjjfoqUX3.jpeg

kfaQMNMsdfj55hobDyxEf5MN.png
