Pixiv Fanbox
Illustriousでオリジナルキャラ制作 プロフ作りからLoRA学習まで【for R-18】
Published 01/08/2025, 08:27:54 PM · Edited 04/19/2026, 04:06:22 PM

【更新情報】記事中で配布したLoRA学習用プリセットの記録に一部、私のvaeのフルパス設定が残っていたために、皆様の環境でプリセットを使うと「vaeが見つからない」と警告が出てしまう状態になっていました。正しいものに差し替えておきました。(2025/1/13付)
こんにちは、スタジオ真榊です。今回は、Illustrious系モデルを使用してNSFW用途のオリジナルキャラクターをデザインし、LoRAで一貫性を保って再現する方法についての特集記事です。まずはキャラクターのプロフィール(身上書)を決め、イメージ通りのデザインをプロンプトで作ったら、いったん決めたそのデザインをそれ以降安定して再現できるようにLoRA化する工程まで含めて検証してみたいと思います。
オリジナルキャラクターを作るのはAIイラストの醍醐味の一つですが、衣装や容姿にあまり要素を盛りすぎると、生成するたびに微妙に違う見た目になってしまうことがあります。デザインの左右が反転したり、髪留めの位置や形状が違ったりするたびに失敗扱いになるのではなかなか生成が捗りませんので、今回はillustrious系モデルでキャラLoRAを作るやり方やおすすめ設定まで、一気通貫で検証していきます。
=R-18用途のキャラクターを作る関係上、記事中に男性向けNSFW要素が出てきます。あらかじめご留意ください=
目次
1.オリジナルキャラクターの「身上書」を作る
①一言でいうと「〇〇な〇〇キャラ」?
②どんな世界でどんな生い立ちをしたか、年齢は
③どんな性格か
④体型は
⑤衣装の特徴
⑥イメージカラー
⑦チャームポイント
2.キャラクターデザイン実践
3.プロンプトを組む
4.三面図を作る
5.簡易LoRAのデータセットを作る
<間違いやすい場所を確認しよう>
6.学習設定
・CAMEは必要ファイルのダウンロードが必要
・学習元モデルとデータセット指定
・バッチサイズ
・学習率(Lr=Learning rate)
・キャプションのシャッフル
・dim/alphaとエポック数
・「詳細設定」▶「Unet/TEの学習」
7.XYZ plotで性能チェック
8.描画ミス修正テスト
9.本番キャラクターLoRAを学習
10.XYZ plotで再度テスト生成
<反省点>
11.作品作りで自由度を確かめる
<ちびキャラ化も課題>
終わりに - 分かったこと総まとめ -
【おまけ1】失敗を踏まえたランダムプロンプト
【おまけ2】プロンプトで出ないアニメキャラの再現
1.オリジナルキャラクターの「身上書」を作る
まずはどんなオリジナルキャラクターを作るか考えます。さいとうなおき先生や荒木飛呂彦先生が著作で書かれていましたが、キャラクターを作る際は簡単な「プロフィール(身上書・履歴書)」を書くとよいそうです。漫画を作るわけではないなら、そこまで詳細な設定は必要ありませんが、ここでは次のような7つの要素を考えてみます。
①一言でいうと「〇〇な〇〇キャラ」?
薄幸×アイドルキャラ、うさ耳×戦士キャラ、ボクッ娘×人妻キャラなど、できるだけオリジナリティのあるユニークな組み合わせを考える。この時点で「屈強×戦士キャラ」とか「セクシー×人妻キャラ」といった当たり前な描け合わせだと、そもそも没個性なキャラ設定であることが分かる。
この段階では「記号」なので、好きな既存キャラから要素をもらってきても構わない。ただし丸パクリはダメ。「ツンデレ×ツインテールキャラ」くらいなら記号(みんなのもの)だが「過酷な生い立ちで愛に飢えていてプライドが高い、赤がイメージカラーでスレンダー体型のツンデレ茶色髪キャラ」まで引き写すとパクリになる。
②どんな世界でどんな生い立ちをしたか、年齢は
現実世界かファンタジー世界か。過酷な世界なのか平和な世界なのか。お金持ち?貧乏?地方の進学校育ち?現在何歳?それによって性格や衣装のイメージが変わる。次の「③どんな性格か」と行き来しながら、逆算して決めると楽。自分はこのキャラを使って何をしたいのか、キャラの「用途」を踏まえて考えよう。
③どんな性格か
・生い立ちとリンクした性格にすると現実感が増す。これも「厳しい家庭で育ったので真面目な性格」というようなありきたりな性格だと、没個性で広がりがない。クラスに一人はいそうな、変わっているが現実味のある性格のほうが興味を持てる。漫画用にもっと踏み込むなら、一人称や口癖なども決めるとさらにキャラが立つ。
・性格と生い立ちは、そのキャラがある出来事に対してなぜそういうリアクションを取るか、その理由付けに関わる。変わった反応をするキャラほど魅力的。生い立ちは裏設定として自分だけ分かっていればよいので、すべてエピソードとして公開する必要はない。
・「動機付け=何をしたいキャラか」も決めておく。高潔さより、等身大で多くの人が共感できる欲望を出していくと良い。推しに会いたい、彼氏がほしい、お金持ちになってこれがしたい、自分の生まれの謎を解きたいなど。「自堕落で何もしたくない」も立派な個性。
④体型は
シルエットで考えるのが重要。さいとうなおき先生の本によると、シルエットを見ただけでそのキャラと分かるデザインは良いデザインだという。確かに、ポケモン、仮面ライダー、ガンダム、プリキュアなど、有名IPのキャラはシルエットだけで分かる。
細い・太い、高身長・低身長、尻重視・乳重視・重量級などを決め、アホ毛で突起を出したりマントを付けたりして差異を出すと良い(つまり現代日本に生きるキャラはシルエットに差異を出しにくいということになる)。NSFW用キャラなら、どんなHプレイで魅せるキャラかも考えて体型を決める。
⑤衣装の特徴
これは②と④をベースに、世界観と体型に合った服装を考える。具体的なイメージまでしなくてよいので、とりあえず「メイド風のVtuber衣装」とか「メタリックな魔法少女風」などと言語化してしまう。体つきをさらに魅力的に見せる衣装か、逆にギャップのある衣装だと良い。現実世界の場合、毎回全く同じ衣装だと少し変なこともあるので、よそいき着と普段着を分けておくと良いかも。
⑥イメージカラー
ぱっと見て何色に見えるかを2~3色くらいまでで考える(ベースカラー・補色・差し色)。その色を見たらそのキャラを想起させるような取り合わせにしたいので、ベースカラーをイメージカラーにするか、ベースカラーは地味目にして、補色(二番目に広い面積の色)をイメージカラーにするとよいようだ。
(例:「ぼっち・ざ・ろっく」のキャラは、それぞれの髪色がそのままイメージカラー。ぼっちちゃんならピンクがイメージカラー=ベースカラーで、髪留めや瞳の「水色・黄色」が差し色。服を着替えることがある現実世界設定なので、着替えても変化せず面積も大きい髪でイメージカラーを取っていると思われる)
⑦チャームポイント
これは⑥とは逆に、面積は小さくてもよいので目を引くものを考える。①を思い出して、それを部位やモノで表現すると何になるかで決めるとよい。巨乳キャラなら胸元にチャームをつけるとか。不健康キャラならピアスびっしりとか。NSFWキャラの場合、瞳やほくろのように、全裸になっても外れないものだと良い。
2.キャラクターデザイン実践
書籍に書いてある理論はこれくらいにして、実際にやってみましょう。今回は既にいる「四宮綾香さん」というオリジナルキャラクターをリデザインします。
こちらのキャラ、AIを始めたてのころに作ったため、「プロンプトで何度生成してもたいてい同じ見た目になる属性」のカタマリでできています。左右非対称だったり、形状が毎回変わるもの(ヘアピンなど)は盛り込まず、髪の毛もごくシンプルなデザインになっていますね。
これではあまりキャラクターとして面白くないので、プロンプトで多少安定しなくてもいいから好きなデザインをたくさん盛り込んでみようと思います。
①一言でいうと「〇〇な〇〇キャラ」?
寝取られそうにない元気系幼馴染人妻キャラ。
②どんな世界でどんな生い立ちをしたか、年齢は
主人公とともに日本の田舎の進学校で育った。男の兄弟がたくさんいる。小説は書くのも読むのも好きで、部活は主人公と二人だけの小説サークルだった。結婚2年目の25歳。ゲーマー。
③どんな性格か
弟が多いのでお姉さん気質だが、ちょっとアホなところもある。文学オタクで特定作家の大ファン。主人公が大好きで、頼まれると断れない。
④体型は
やや低身長だが巨乳・太ももむっちり。膝から下は細いイマドキ体型。
⑤衣装の特徴
優しそうなお姉さん性格+エロを示すため、ふかふかしたオーバーサイズのセーターがメイン。あまりあか抜けない感じだとセクシーにならないので、ギャップを出せるデザインにしたい。(胸元などのガードは甘めがいい)
⑥イメージカラー
地味目で優しそうな「グレー+黒+差し色ブルー」
⑦チャームポイント
優しさ+元気+強い意志+田舎育ちを示すふと眉と、20代にしては垢ぬけないブルーのヘアピン。ヘアピンは主人公が高校時代にプレゼントしたもの、という設定。二面性を示す左右非対称の髪型。
3.プロンプトを組む
上の身上書をベースにプロンプトを組んでいきます。今回はHキャラなので、Hシーンで映えるかどうかを確かめながら要素を盛っていきます。上の身上書は最終的にできたもので、最初から「ふと眉」や「左右非対称の髪型」「ヘアピン」といった要素を思いついていたわけではありません。
いまの画風で作るとこのようなところからスタートしました。
やはり特徴が少なすぎて面白くないですね、もはや「セーターが本体」という感じです。裸になってもそのキャラと分かるには、首から上に特徴のあるデザインをもう少し盛らないといけないようです。
髪を左右非対称(asymmetrical hair)にして、装飾をつけていきます。hairpinなどを入れると、形状や位置のランダム性が高まってしまいますが、それはLoRAで覚えさせればいいので気にする必要はありません。大事なのは魅力的かどうかです。
フラットな塗りで線も太くしてあるのは、個人的に好きということもありますが、こうしておくとキャラクター記号がシンプル化されて、よいデザインかどうかがわかりやすいということがあります。デフォルメちびキャラでもそのキャラと分かるデザインだと良いですね。
あれを足したりこれを引いたりして作ったのがこちら。
PP:1girl,solo,wife,curvy,blue eyes,(asymmetrical hair:1.2), large breasts,black hair,straight hair,medium hair,medium breasts,crown braid, blue hairpin,x_hair_ornament,tareme,one ear,hair_behind_ear,sweater dress,collarbone, aran sweater,shiny skin,long skirt,thick eyebrows, blunt bangs, detailed grey sweater, black pantyhose,32 years old,sleeves past wrist
さきほどまでの生成例では目の特徴が気が強そうに見えたので、tareme(+NPにtsurime)でこのような目にしました。ふと眉・ヘアピン・クラウンブライドはちゃらちゃらしていない特徴を強調するためのもの。左右非対称の髪型は「二面性」とこじつけましたが、やはり左右対称すぎるキャラデザインはありきたりで魅力が失われやすいためです。(水星の魔女のキャラクターデザインはほぼ左右非対称ですね。ふと眉=田舎出身で純朴というアイコンはスレッタちゃんを参考にしています)
エロシーンチェックです。さっそくキャラデザインの左右が反転していますが、あとで画像編集ソフトで反転させて学習させればよいだけなので、問題ありません。大事なのはギャップが出ているかどうか。
ちなみに、瞳の色もいろいろと考えました。blue eyes + yellow gradient eyesでこのようなツートンカラーの瞳にできます。Hキャラにしてはちょっとサイバーすぎますね。
いろいろ試しましたがこれというものがなく、スタンダードな青瞳にすることにしました。ベースカラーがグレーで、差し色がブルーのキャラなので、これはこれで正しいはず。プロンプトで操作しにくいオリジナル要素を入れたい場合は、加筆で作り込んでLoRA化すればよいと思います。
4.三面図を作る
サイドや背後から見たときに見落としがありそうなので、できたプロンプトで三面図を作ります。顔が小さくなるので、ADetailerを併用しておくとよいでしょう。
三面図の作り方は、「turnaround,reference sheet, multiple views」あたりを入れておけばたいていきれいにできます。ランダム性が出てしまいますが、むしろその方がこのように、「その衣装いいね!?」というものが出てきてよいです。いいですねこのリボンベルト(waist bow)つきのロングスカート。
たくさん生成して、良いデザインが出てきたらその部分を切り出してimage2imageすることでデータセットにすることもできます。
reference sheet由来でAI文字が出てきたりもしますが、データセット用の画像ではないので特に気にしなくてOK。ここで気づくのは、クラウンブライドは後ろからみるとどうなっているか決めないといけない、ということです。
まあ滅多に真後ろの画像は出てこないので、そこまで気にしなくても良いかもしれませんが…。正解はこのように、右側の髪が長く垂れ下がり、クラウンブライド部分は耳の後ろに編み込まれる状態になっていてほしいわけです。上の三面図はヘアバンド状にならず、編み込みが後頭部に回り込んでいるので間違いですね。
ちなみに、こういうきれいな三面図を出したい場合は、Controlnet「openpose」を使います。
参照したい三面図画像からプリプロセッサ「openpose DW」などでポーズ抽出して、openposeモデルに入力すればOK。より理解度を高めるため、プロンプトに「turnaround,reference sheet, multiple views, from side,from behind,straight-on, white background, simple background」あたりを足しておきましょう。
Controlnetの基本的な使い方については、下記記事をご参照ください。
上の三面図を見るとわかりますが、やはりセータードレスの丈が気になります。ミニスカート丈になってしまっても痴女ですが、このように長すぎるのもイマイチですね。スカートなどの丈はある程度プロンプトで制御できますが、間違えることも多いので、これはたくさん画像を出してうまくいったものを抽出してLoRAにすればよいでしょう。
5.簡易LoRAのデータセットを作る
では、この容姿を再現できるように、データセットを作っていきましょう。いきなり大量生成してその中からよくできたものをピックアップしてもよいのですが、それだとたくさんのミス画像の中から正解を探さねばならず、効率が悪いですね。そこで、まずは6枚~10枚程度でできる簡易LoRAから作っていこうと思います。
<illustrious系の特性を理解する>
illustrious系モデルはAnimagine系に比べてキャラLoRAが作りにくいと感じます。学習内容に敏感に反応しすぎる感じがするので、dim/alphaはいずれも低めがよく、余計な概念やバイアスを覚えさせないためにできるだけシンプルなデータセットにした方が良いようです。キャラLoRAの場合、「できるだけ背景なし・他キャラの写り込みなし・ポーズや構図のかぶっている画像は除去・服装の種類はできるだけ少なく」を心がけると、比較的再現度の高いLoRAができる体感があります。
<間違いやすい場所を確認しよう>
さて、綾香さんのキャラLoRAを作る上で問題になるのが、このヘアピンです。さすがに立体的な編み込みの上からX字のヘアピンが掛かるのは現実的ではないですし、生え際でない位置に留められているのも変ですね。何が「正解」かを決めて、正解の画像だけを集める必要があります。ヘアピンのかたちが「X」なのか「XI」なのかも決めておかないといけないので、今回は2本の「X」にすることにしました。
たとえばこの画像を見てみますと、髪のデザインが左右反転(正しくは向かって左に長い髪、右にヘアピン)しており、ヘアピンもやや奥に行き過ぎて編み込みにかぶりそうです。
ですので、データセットに入れるならこのように左右反転して、邪魔な部分を黒く塗りつぶせばOK。ヘアピンの上に編み込みがかぶさるようなイメージです。
あとはこのように、デザインが正解しているものを少数精鋭で選び、フォルダに入れていきます。
今回はこちらのイラストが気に入ったので、スカートがあるパターンとないパターンの両方を作ることにしました。(ヘアピンの位置がおかしいのでデータセットには入れていません)
加筆も加えながら8枚、正しい綾香さんの容姿をとらえた画像を用意できましたので、さっそくタグ付けを行います。基本的にはこちらの手順の通りです。
「wd-EVA02-Large-v3」を使って8枚の画像からタグを抽出します。下図のように、画像を収めているフォルダのフルパスを入れればOKです。
「ayaka_shinomiya」をトリガーワードにし、ayaka_shinomiyaを呼び出したときは必ずそのように描写してほしい要素(容姿タグ)を除去します。sweaterやpantyhoseはHシーンで脱がしたり、別の服を着てもらったり可能性があるので、除去しません。ヘアピンは迷うところですが、外したくなる可能性があるため除去しませんでした。除去したのは髪の色、長さ、目の特徴、髪型、胸の大きさに関わる部分が主です。
このようになりました。一応、Hシーンの画像も一枚入れてあります。必ず中身をチェックして、1つめにトリガーワード「ayaka_shinomiya」があることを確かめておきましょう。
学習設定
学習にはいつも通り、Kohya lora param guiを使います。いろいろ試しているところなのですが、illustriousモデルでは「CAME」という高速オプティマイザを使うやり方を最近は好んで使っています。収束が早く、数百ステップから学習結果がよく出てくる優秀なオプティマイザです。
・CAMEは必要ファイルのダウンロードが必要
CAMEで学習する場合は、事前に「came_pytorch」というファイルを入手する必要があります。画面左上の「ツール」から「ユーティリティ」▶「更新」▶「拡張機能のインストール・更新」の順に押してインストールしてください。黒いコマンドプロンプト画面が出て、しばらくして「(venv) G:\sd-scripts>」というメッセージが表示されたら閉じてOKです。
下記のURLからプリセットの呼び出し用ファイル(拡張子:xmlora)をDLできるようにしておきましたので、よく分からない方はこちらを適当な場所にDL後、「プリセットの読み込み」ボタンで読み込んでみてください。必要な情報が入力欄に呼び出されますので、あとは出力先やLoRA名、ベースモデルなどをぽちぽち選べば私と同じ設定で学習できます。
・学習元モデルとデータセット指定
学習元モデルを何にするかはいろいろな考え方がありますが、私は普段使いのillustrious系モデルをそのまま使う派です。普段いろいろなモデルを使い分けている人の場合は、どの派生モデルでも使えるLoRAにするため、共通するベースモデル(illustriousXL0.1やNoobAI、pony diffusionv6など)を選ぶのが良いでしょう。
キャラ学習の場合、下記のような画風への影響が少なくなるLoRA学習用モデルを選ぶのもオススメです。(画風学習の場合は使えません)
今回は普段使いのモデルで出したキャラクターをそのモデルに学習させるわけなので、絵柄のことは気にしなくて大丈夫です。
教師画像フォルダには、さきほど作ったデータセットの場所を指定します。フォルダ構造をおさらいしておきましょう。
LoRA
└ training/ ←学習データを入れるフォルダ(名前はなんでもよい)
└ ayaka_shinomiya/
└ 8_ayaka_shinomiya/ ←ここに画像とテキストが保存されている
今回は8枚で2500ステップ回すので、8枚×繰り返し数×エポック数=約2500になるように繰返し数とエポック数を設定します。繰返し数が8なら、エポック数はおよそ40になります。繰返し数10ならエポック数はおよそ32です。
「繰返し数32、エポック数10」のように前後逆にしても大差ありませんが、画像学習順のシャッフルによる過学習抑制効果を得るためには、エポック数を繰り返し数よりも多く設定するのがおすすめ。エポックごとにデータセット全体がシャッフルされることで、データ順や偏りで悪影響が出るのを防ぐ効果が期待できますし、エポックごとに細かくLoRAを保存して過学習ぎりぎり手前のものを選ぶこともできます。
・バッチサイズ
複数枚の絵を同時に学習できる設定です。同時学習できるのはキャンバスサイズが同じ画像に限られ、基本は1枚か2枚。2以上にすると学習時間が短縮されますが、グラボのVRAMによってはOut of memoryになりやすく、細部の学習がやや甘くなります(逆に、複数画像を包括的に学習するため過学習を防ぐ効果が得られることもあるらしい)。
今回は時間があったので1にしましたが、簡易LoRAなのでスピード重視の2でよかったかもしれません。
・学習率(Lr=Learning rate)
CAMEの場合、Lr0.0001が基本。損失率(avr_loss)の減りが順調でない場合は0.0002まで上げてもよい…というのが個人的体感です。学習率を上げると早く損失率を減らせる(早いステップから狙った学習効果が出やすいので総ステップ数を減らせる)一方、学習が不安定になりやすくなります。
枚数が少ないと過学習を起こす恐れもあり、データセットの画像に似た構図やカラーリング、ポーズのものばかり出るLoRAになって汎用性が失われてしまうので、時間があるならデフォルト値の0.0001でゆっくり学習しましょう。
キャラ学習でデータセットが20~30枚なら、avr_lossが最終的に平均0.005は切りたいところ。バリエーション豊かなデータセットほど減りが悪くなるので、Lr0.0001だと減りが悪いと感じたら0.0002に上げてやり直すのも良いでしょう。
・キャプションのシャッフル
「キャプションのシャッフル」にチェックを入れ、トークン保持数は1にします。これで、トリガーワードにする最初の「ayaka_shinomiya」以外のタグ順がシャッフルされ、各タグの影響度の偏りを防ぐことができます。
・dim/alphaとエポック数
【dim値】多いほど学習情報を多く保持できる一方、余計な情報まで学習してしまう可能性が高くなり、LoRA自体のファイルサイズも重くなります。例えば、プロンプトで指示していないのに学習データセットにある要素が映り込んでしまうのはdimが高いと起きやすい現象です。キャラ容姿の再現度が高まるとプロンプトでの取り回しが悪くなるイメージですね。
【alpha値】LoRAの影響が強すぎて元のモデルの持ち味を消してしまうのを防ぐためのものと考えましょう。alphaをdimに対して小さく設定することで、LoRAが過剰に学習しないようにできます。alphaはdimの半分以下にするのが基本です(一般にキャラLoRAなら4分の1~2分の1、画風LoRAの場合はdimの4分の1~8分の1程度が良いとされる)
今回はdim4/alpha1とし、総ステップ数が2500ステップ前後になるようにエポック数を調整しました。プロンプトでも再現できるキャラのため、高dimは不要と考えたからです。プロンプトで再現できないアニメキャラなどで、細部の再現度が足りないと感じた場合は、さらにdim/alphaを多くしていきます。正確なデータセットが用意でき、細かな衣装を細部まで正確に再現したいなら「dim64/alpha32」くらいまで上げてもよいかもしれません(その分プロンプトの効き・取り回しは悪くなります)。特に複数のキャラを同時に学習する場合は、相当ステップ数を増やす必要があります。
・「詳細設定」▶「Unet/TEの学習」
左下の「詳細設定」のボタンから設定できる。プロンプトへの反応が強いillustrious系モデルのキャラ学習では、Unetのみの学習ではなく「両方学習」(Text Encorder込み)にして、ベースモデルにないオリジナルのトリガーワード(例:ayaka_shinomiya)を覚えさせると安定するようです。
Text Encorder込みで学習することで、トリガーワードとして新たに創出したオリジナルプロンプトとその特徴(キャラ容姿)を直接エンコーダーに学習させられるため、そのキャラ名に基づく表現がより強化される仕組みです(〇〇しているayaka_shinomiyaという指示が効きやすくなる)。その代わり、学習時間は延び、特定プロンプトに反応しすぎることがある点にご留意ください。
設定変更したら「設定を反映して閉じる」を忘れずに。
<学習開始>
というわけで、さきほど貼ったスクリーンショットの設定で学習を開始します。完成時だけでなく、エポックごとにLoRAを保存したい場合は保存頻度を1以上にしましょう。
この設定だと、うちのRTX4080ならだいたいbatch1で1時間くらいで40エポック学習できます。CAMEは数百ステップから学習内容がちゃんと現れてくる高速オプティマイザなので、時間がない方はもっと低ステップで終わりにしてもOKです。(LoRAは就寝中か外出中に作る派なので、あまり時間効率を気にしていません)
【Kohya lora param guiを最新にしたらCAMEでの学習ができなくなった場合】
学習中に出る黒いコマンドプロンプト画面が途中で止まり、(venv) G:\sd-scripts>と表示された場合、モジュール「pytorch_optimizer」のインストールが必要です。最後に表示された(venv) G:\sd-scripts>のあとに、「pip install pytorch_optimizer」と打ち込みましょう。
(venv) G:\sd-scripts>pip install pytorch_optimizer
のようになっていればOK。ENTERキーをおせばすぐにインストールが済みますので、いったんコマンドプロンプト画面を閉じて、もう一度学習開始してみてください。
7.XYZ plotで性能チェック
というわけで、学習終了。できたLoRAでさっそくXYZ plot試験を行いましょう。プロンプトは「1girl,ayaka_shinomiya」とクォリティタグのみです。
髪型や服装など指定していなくても、「ayaka_shinomiya」という概念が0.75あたりからきちんと出せていますね。衣装指定をいっさいしていないので、学習データセットにない生足で生成されています。スカートにするのかストッキングにするのか分かっていないということは、つまり「このキャラの下半身はバリエーションするのでプロンプトに従うように」という学習意図がうまくいっているということでもあります。一方で、すべてのデータセットにあるセーターは何も指定しなくともちゃんと呼び出されていますね。
では、今度は召喚プロンプトをすべて盛ります。まずはスカートなしバージョン。LoRAの適用度は0.8とします。
おおむね良いようですね。強度0.8だとXヘアピンがシングルになってしまうことがあるようです。今度は表情をwildcardでランダムにして、スカートあり(long black skirt)で試してみましょう。
スカートを履いているイラストはデータセットに1枚しかありませんが、ちゃんとスカートを出すことができました。
8.描画ミス修正テスト
さて今度は、この簡易LoRAにどれくらい描画ミスの修正力があるのか実験してみます。髪のデザインの左右とヘアピンの位置が間違っているこちらのイラストに、LoRAを段階的に強めて掛けてみます。
こちらが修正結果。
0.5からヘアピン形状の修正ができ、強さ1だと狙い通り左右修正ができています。LoRAを強めていくと、途中でAIが間違いに「気づいた」感じがして面白いですね。
では、この簡易LoRAを使って早速バリエーションを出していきましょう。こちらの記事で使った、LoRAデータセット用のバリエーションプロンプトを流用します。キャラクターは固定しつつ、さまざまなポーズや視線、背景でバリエーションを生成するわけですね。
こちらがプロンプト。ぱっと見ややこしいですが、単にいろいろタグをランダムに並べているだけです。ミス修正のため簡易LoRAを掛け、スカートあり/なしの2パターンでさまざまなシチュエーションのイラストを出してもらえるはずです。
PP:<lora:ayaka_shinomiya_v1:1> 1girl,solo,wife,curvy,blue eyes,(asymmetrical hair:1.2), large breasts,black hair,straight hair,medium hair,medium breasts,crown braid, blue hairpin,tareme,one ear,{sweater dress|(black skirt:1.2),sweater tucked in,(long skirt:1.2)},hair_behind_ear,collarbone, aran sweater,shiny skin,thick eyebrows, blunt bangs, detailed grey sweater, black pantyhose,32 years old,sleeves past wrist,masterpiece, best quality, newest, absurdres, highres, safe,white pupils,general,{standing|standing|standing||standing|sitting|sitting|sitting|lying down|lying down|lying down|crouching|leaning|arms crossed|hands on hips|holding phone|waving hand},
{looking at viewer|looking away|side glance}
,__lora_emotion__,
{portrait|upper body|cowboy shot|full body|full body},{front view|front view|(side view:1.3)|(from behind:1.3)},
{indoors, in a bedroom|indoors, on a sofa|indoors, in a living room|outdoors, in a park|outdoors, in a city|outdoors, in a forest|on a bed|on a sofa|in a school|in an office|white background,simple background|white background,simple background},
{day|day|night|night|evening|sunrise|sunset},{open eyes|open eyes|open eyes|closed eyes|half closed eyes},
{open mouth|closed mouth|neutral expression}
「__」で挟まれているタグはいずれもwildcardです。こちらのzipに固めておきましたので、解凍して出てきたtxtファイルをすべて「extensions\stable-diffusion-webui-wildcards\wildcards」に保存すれば使用することができます。
このプロンプトを走らせると、このようなものが次々にできてきます。適用強度1なので、髪やヘアピンのミスがほとんどなくなって効率が良いですね。
これで数十枚~100枚程度にセットを増やすことができます。上の画像を見ていただくと分かると思いますが、容姿の正確性が上がった分、かなり構図が限定されてしまっている感じがするので、できれば構図のバリエーションを増やしたいですね。
枚数が増えることで、容姿再現の正確性も上がりつつ、表情や構図が固くなるのを防ぐことができます。さきほど8枚用意したデータセットは正面の画像が多く、正面の画像になりがちになってしまったので、背後からの画像もできるだけ多く用意するようにします。また、キャンバスサイズも縦長・横長・正方形とバリエーションを出しておくと良いでしょう。棒立ちのイラストばかりだと棒立ちキャラLoRAになってしまいます。
スカートはさきほど三面図で偶然出てきたデザインが可愛かったので、「 waist ribbon,sweater tuck in,dark grey skirt,long skirt,black boots」で量産しておきました。
このデザインは簡易LoRAを適用するとうまく出せなかったので、LoRAなしで生成しています。ヘアピンの位置がミスしているので、悪影響が出ないよう、下図のようにトリミングしてデータセットに取り込みました。(あとでこれは失敗だったと分かりますが、そのまま読み進めてください)
9.本番キャラクターLoRAを学習
無事データセットができたので、今度は本番のキャラLoRAを学習しましょう。soloが多いと他のキャラが出にくいLoRAになってしまうので、男性との絡みを多めにしてあります。(計89枚も用意してしまいましたが、あとになってこれは多すぎたと分かります)
設定はさきほどと同じ。さっきは8枚で2500ステップでしたが、今回は89枚で約1万ステップにしました。1万ステップというと複数キャラの容姿を一回で覚えさせるときに使う規模なので、1キャラの容姿を覚えるのにはいくらなんでも無駄に多すぎると思いますが、今回は実験ということで、保存頻度を1にして、15エポック分毎回保存してみます。できたものを比較することで、1キャラの学習にどれくらいのステップ数が必要なのか見極めるのが目的です。
今回用意したデータセットは半分くらいがスカートあり、残り半分がスカートなしの画像です。はっきり違う服装ならトリガーワード自体別にしてしまう(例:ayaka_sktとayaka_noskt)のですが、そこまで詳細に覚え分けてもらいたい複雑な衣装ではないので、今回は見送りました。
1万ステップだと5時間弱かかりました。ちょっと1人のキャラ学習には現実的でない数字ですので、真似しないようにしましょう。2500ステップでも多いと思います。また、画像の枚数とバリエーションが多すぎたために、avr lossが高止まりしていてあまり学習が捗っていません。
10.XYZ plotで再度テスト生成
過学習を起こしていておかしくないステップ数なので、テスト生成をきちんと行いたいと思います。
まずは約1万ステップ学習した最終モデルを使って「1girl+トリガーワード」生成から。
sweater系のタグを除去せず、ayaka_shinomiya概念にセーターを統合しなかったので、服装を指定していないとそこそこ自由にアレンジしてきますね。大きな破綻はありませんが、表情がやや硬いのと、左下の画像に不穏な感じがします(表情が固まったり、謎の布が表れ始めるのは過学習のサイン)
今度は召喚タグをフルに入力してみます。
1girl, ayaka_shinomiya,wife,curvy,blue eyes,(asymmetrical hair:1.2), large breasts,black hair,straight hair,medium hair,medium breasts,crown braid,x hair ornament, blue hairpin,tareme,one ear,hair_behind_ear,sweater dress,collarbone, aran sweater,shiny skin,long skirt,thick eyebrows, blunt bangs, detailed grey sweater, black pantyhose,32 years old,sleeves past wrist,masterpiece, best quality, newest, absurdres, highres, safe,white pupils,general,<lora:ayaka_shinomiya_v2:1>
きちんと丈など覚えてくれているのは良いですね。ただ、不安になるのが左上。おそらくスカートを覚えさせる際に、頭の途中でトリミングした画像を学習させたため、自然とクロップした画像を出してしまっている感じがします。
とはいえ、学習データセットに「cropped〇〇」というタグが付いていればそんなに影響はないはず…と思ってこちらのトリミングした画像についたタグ群をチェックすると、なんとcropped系のタグがタガーで抽出できていませんでした。そのため「ayaka_shinomiyaは顔が見切れることがよくあるキャラクター」と学習された模様。これは明確に失敗でした。やはり学習前のタグ付けチェックは入念にする必要がありますね。
比較実験を続けます。今度はスカートありで生成した結果。悪くはないのですが、「X」のヘアピンが1/2で崩れてしまっているのと、右下の一枚はスカートが出ていないのが気になります。データセットのスカートに比べて色も薄いですね。
そこで、まずはLoRAの適用強度比較をします。右上と右下の画像をべースに、0~1の間で5段階比較しました。
どちらも1より0.75の方が正確に見えますね。スカートがセーター化していたり、X字が溶けたりしています。やはり、1人のキャラに対して学習ステップを回しすぎた感じがします。キャラクターだけでなくリビング風の背景も覚えてしまっているので、データセットの背景は消したほうがよかったですね。頭がクロップする効果も出てしまっているのもうかがえます。
では、どれくらいの学習ステップがちょうどよかったのか確かめましょう。今回は15エポック回したので、段階ごとに計15個のLoRAが出力されています。上の二つのSeed値を使い、1つ飛ばしで比較したのがこちらの表です。
ヘアピンの溶け(?)が見え始めるのは13エポック(9000ステップ)あたりから。スカートのセーター化はずっと起きていますが、9エポック(6000ステップ)あたりがちょうどよいようですね。
9エポック目を適用強度1でしばらくランダム生成してみます。NSFWタグと全年齢(general)タグそれぞれで実験します。
良いところと悪いところがはっきり見えてきましたね。
<反省点>
良かった点は、左右ミスがほぼなく、きれいに頭部の学習ができていること。ヘアピンのミスが一つもなく、編み込みとの位置関係も良い感じです。アップスケールなしでも細部まで再現できています。
一方悪い点は、スカートがないのに黒いリボンベルトが出てしまったり、セーターの脱ぎ方・たくし上げ方が変な感じになってしまうあたり。前者の方は「waist bow」をネガティブに入れれば解決できそうですが、後者の方は学習データセットに「このセーターがどう脱げるか」の画像が足りなかったことが敗因な気がします。下からたくし上げるのではなく、下図のように上から胸下までセーターの肩口をずり下した画像をいくらか足しておけばよさそうですね。
また、「1girl」で生成しているのに、綾香さんが2人に増えてしまうことがよくありました(LoRAにありがちなクローン現象)。これはデータセットにあるさまざまな角度や表情をうまく統合して学習できなかった場合、一つの画像の中に別々の要素を詰め込もうとして起きてしまう現象です。
dim、alpha、学習率が高すぎた場合や、学習が足りなかった場合のほか、データセットの画像バランスが崩れていたり、正面と背後からのショットを同時に写した画像をデータセットに入れることでも、学習が混乱してこのようなLoRAになりやすいとされています。覚えたさまざまな顔が一つのキャラ概念として統一されず、一つのキャンバス内に複数の顔を同時に描こうとして失敗してしまうのですね。(例:データセットが正面からの顔ばかりだと、後頭部を描こうとしたときに後頭部に顔が生えてしまう。ayaka_shinomiyaは必ず正面顔が描かれるキャラクターと勘違いしている状態)
multiple views画像はさまざまな角度からそのキャラを覚えられそうなので一見データセット向きですが、このようにあまり良い結果にならないので除去した方がよさそうです。(角度ごとに切り出して別画像として保存した方がよい)
さきほど触れた、トリミング(クロップ)画像にうまくタギングができていなかった点も反省点です。このLoRAでもプロンプトに気を遣えば十分使えますが、こうしたミスを覚えておくと次回の学習時に「こういうことが起こりそうだな」と失敗の検討がつくので、比較実験はかならずやっておいたほうがよさそうですね。
11.作品作りで自由度を確かめる
最後に、自由度がどれくらいあるか複雑めなHプロンプトで確かめます。 個人的によく作るのと、プロンプト応答度が分かりやすいのがこういう即堕ち2コマ。複数のシチュエーションのプロンプトが入るので、取り違えが起こりやすいのですが、それなりにうまくいっています。(おへそ周りが失敗しているのはnavelをネガティブに入れていたためっぽい)
このLoRAはさすがにセーターのイメージが強すぎるようで、「sweater」系のタグをネガティブに入れないとセーターっぽいものが画面内に出てしまいますが、とりあえずプロンプトへの反応は悪くないようです。複雑なプロンプトになるほどLoRA強度を下げておき、顔のみにADetaillerで強めにLoRAを掛けるといった工夫をすれば問題なく使えるLoRAになったのではないかなと思います。
プロンプトはこちら。太字部分がキャラ召喚プロンプトで、それ以外が生成プロンプトです。
PP:1girl, ayaka_shinomiya,wife,curvy,blue eyes,(asymmetrical hair:1.2), large breasts,black hair,straight hair,medium hair,medium breasts,crown braid,x hair ornament, blue hairpin,tareme,one ear,hair_behind_ear,collarbone, shiny skin,thick eyebrows, blunt bangs, 32 years old,masterpiece, best quality, newest, absurdres, highres, white pupils,nsfw,nipples,<lora:ayaka_shinomiya_v2-000009:0.7> fur_long coat,public indecency, naked coat,before_and_after,2koma,hetero,instant_loss,(glaring, disgust,frown:1.3),open mouth,steaming body ,pink theme,hotel,doorway,open door,standing,recording, cowboy shot,(undressing coat:1.2), oily skin,earring,lips,frill,collar,gleaming skin, gold bikini , hotel room,on bed,1boy, pov sex,sex from behind,back,facing away,,solo focus,fat man,faceless male, hetero, sweat, trembling, nfsw,(speed lines,motion lines:1.3), (shiny skin:1.2), masterpiece, best quality, newest, absurdres, highres <lora:sdxl-flat:-1>testicles,headboard,fucked silly, on bed,bed sheet,used tissue, used condom, tissue box,many dildo, dark room,faint light,heavy breathing,bald man,age difference,official art,ugly man, clothed female nude male,yen money,prostitution,(steam,smell,very_sweaty:1.3)
基本的に取り回し(プロンプトの応答度)は悪くないのですが、「dark room,faint light,pink theme」という背景タグがあまり効いていないのが気になります。これは明るいインドアのイラストだけで学習していたためかなと思います。100%グレーセーターのみというのもバランスが逆に悪いので、何枚か別の衣装のコスプレ画像も入れておいた方が良かったなと感じました。
<ちびキャラ化も課題>
もう一つ見つけた問題点。デフォルメ画像が一枚もなかったため、「chibi」が効きにくいLoRAになっていました。データセットに引っ張られて、無理やりプロンプトで出そうとすると「chibi inset(ちびキャラとの共演)」のようになります。
LoRAありだと出せないので、LoRAを外し、プロンプトだけでちびキャラを生成してみました。すると問題なく生成できたので、やはりLoRAのバイアスのせいでChibiキャラが出せなくなっていることがわかります(そのかわりヘアピン位置はおかしい)。データセットにはこういう多様性も必要ですね。
100枚近い画像で作っておいて何なのですが、実は8枚で学習した簡易版の方が場合によってはプロンプトの効きが良いことがありました。学習するパターンが多いほど学習結果は収束するのに時間が掛かるため、むしろ覚えさせたいキャラクターデザインを覚えられないまま時間切れになってしまったように思います。(背景やおじさんを覚えるのに気を取られてしまう現象)
1キャラクターの容姿を覚えるだけなら、無造作に100枚近い画像を並べるよりも、厳選した20-30枚程度で学習した方が結果はよくなるようです。なんでもかんでも無駄に応用問題をたくさん覚えさせるよりも、試験範囲は絞った方が効率がよいということですね。
終わりに - 分かったこと総まとめ -
Illustrious系モデルでのキャラLoRA学習について、分かったことを改めてまとめます。
・1キャラの容姿学習なら、オプティマイザ「CAME」で学習率0.0001~0.0002、dim4/alpha1~2、2500~6000ステップ程度でうまくいった。1000ステップでも十分デザインは出てくる
・「データセットは量より質」は常識だが、illustrious系ではもっと厳格。良い画像が出たからといって無駄にすべて盛り込むと、偏ったLoRAになり、学習もはかどらない。30枚くらいまでにとどめたほうが取り回しはよさそう。
・演技ができるLoRAにするには、データセットはできるだけ棒立ち・呆然とした絵を少なくする。激しく怒ったり、笑ったり、表情が動いている画像があったほうが顔面が固まらない。枚数よりも質重視。
・顔の途中や首から上をトリミングした画像はデータセットに不向き。どうしても入れたい場合は、「cropped_head」とタグ付けできていることを必ず確認する。そうしないと首から上が見切れ安いLoRAになる。
・キャラLoRAの場合は、そのキャラとセットで描いてもらいたい背景がないなら大半は白背景にしたほうがいい。バイアスがかかってモデル由来の背景が出にくくなるし、キャラクターに集中して学習できない。すべて白背景だと背景が描かれにくいLoRAになるので、少しは背景ありの画像も混ぜよう。
・1キャラに2パターンの服装がある場合は、多少面倒でもフォルダ分けして別のトリガーワードにしたほうが良い。どうしても要素が混ざりがちになるため。
・統一した衣装のキャラの場合、全裸の画像を多めに入れないと、「脱げないキャラLoRA」になる。多すぎると「指示していないのに脱げるLoRA」になる。
・普段の衣装がどう脱げるか分かりにくい場合は、半脱ぎの画像を入れておくとよい。特にプラグスーツのような脱げ方のわかりにくい服装の場合は注意。
・ちびキャラも少しは入れておかないと、一切ちびキャラ化できないLoRAになる。デフォルメ度(頭身)をそろえたものを数枚入れておこう。
・multiple viewsな画像(キャンバス内にそのキャラが複数の角度で描かれている)を学習させると、キャラが分裂しやすくなる。角度ごとに切り出して別画像として保存するか、除去しよう。
正直、そこまで完璧なLoRAを作ろうとしなくても、ある程度容姿再現ができれば普段使いするのには問題がありません。さきほども書きましたが、8枚程度の簡易LoRAで十分だったくらいです。ただ、せっかく作るなら上記のような点に注意しながら作ると失敗が少なくなると思います。
学習設定は好みの世界ですので、人それぞれ最適な設定や好みのオプティマイザは違うかと思いますが、illustriousの追加学習は初めてという方は今回紹介した設定を軸にいろいろ試していただくと失敗が少なくなるのではないかなと。オリジナルキャラクターはAIイラストの醍醐味ですので、ぜひいろいろと掘り下げてみてくださいね。
最後に「失敗を踏まえたランダムプロンプト」と「最新アニメのキャラLoRA学習実験」の結果を添えておきますので、ご参考まで。
【おまけ1】失敗を踏まえたランダムプロンプト
今回のLoRAは「背景あり、全着衣」で作ってしまった結果、背景への影響が強く、脱ぎにくいLoRAになりました。また、裸の容姿も学習できていないので、次のようなプロンプトを組みなおしました。太字にしているところが服装関連で、①セーターのみ②スカートあり③全裸④セーターたくし下げ(胸露出)の4パターンが排出されるようになっています。
PP:<lora:ayaka_shinomiya_v2-000009:0.75> 1girl,solo,(__lora_emotion__:1.3), white background, simple background,wife,blue eyes,(asymmetrical hair:1.2),{portrait,face|upper body|cowboy shot|full body|full body}, {front view|front view|(from side,side view:1.3)|(from behind:1.3)},large breasts,black hair,straight hair,medium hair,medium breasts,crown braid,x hair ornament, {sweater,aran sweater,ribbon belt,sweater tuck in,dark grey skirt,long skirt,black pantyhose|sweater dress,grey sweater,aran sweater,black pantyhose|(completely nude:1.3),nsfw,vagina,large areolae,nipples,large areolae,puffy nipples,sugging breasts| nsfw,clothes pull,sweater pull,large areolae,nipples,large areolae,puffy nipples,bare shoulder,sweater dress,grey sweater,aran sweater},no_shoes,blue hairpin,tareme,one ear,hair_behind_ear,collarbone, shiny skin,thick eyebrows, blunt bangs, 32 years old,sleeves past wrist,, masterpiece, best quality, newest, absurdres, highres, safe,white pupils,general,__lora_pose__,{standing|standing|standing||standing|sitting|sitting|sitting|lying down|lying down|lying down|crouching|leaning|arms crossed|hands on hips|holding phone|waving hand},{open mouth|closed mouth|neutral expression}
NP:multiple views,
こちらを走らせると、このように服装・カメラ・構図バリエーションが豊富な背景なしの画像が大量生成できます。これに「chibi」や顔のどアップを何枚か足して30枚程度のデータセットを構築すると、より取り回しのよい「v3」ができるかと思います。(LoRA適用度が0.75と低いので、多少左右ミスやヘアピン位置ミスが混じる点に注意)
【おまけ2】プロンプトで出ないアニメキャラの再現
今回はプロンプトでも出せるオリジナルキャラクターの細部を覚えてもらう例でしたが、それでは容姿再現度が分かりにくいので、ベースモデルが全く学習していない新作アニメの主人公の容姿を学習させました。(公式の絵柄に寄せず、キャラクターデザインや服装だけを覚えられるように注意してデータセットを構築しています)
データセット22枚×繰り返し数8×14エポック=2464ステップをバッチサイズ2で学習させました。dim4/alpha2、全工程の学習時間は40分程度です。
このような感じで非常に順調にavr lossが減っているのですが、8エポック目で反発しており、おそらくこのあたりで過学習気味になった可能性があります。
こちらが14エポック回したものの生成結果。非常に特徴的な頭身や画風は引っ張られずにベースモデルの画風を残しつつ、キャラクターデザインを重点的に覚えられているかなと思います。
さて、14エポック(2464ステップ)を40分で学習させたわけですが、CAMEは実際もっともっと少ないステップ数で十分キャラクターデザインを学習できるはずですので、エポック別の比較表を作りました。
14エポック目はやや過学習気味で、指示していないいすが生じたり、ソックスの指示をむりやり効かせようとして不自然な姿勢になっています。7エポックまでは学習が足りず緑のはずのシャツが一部白くなってるので、11エポック=1936ステップあたりで十分だったように見えます。
または、14エポック回したものを弱めに適用するのでもちょうどよいかもしれません。スピードを優先するのか、再現したい意匠はどこまでなのかを考えつつ、データセットや設定(特にdim/alpha)を調整すると良いかと思います。
それでは、今回はこのへんで。次回は「脇役・竿役おじさんLoRA」を時間効率優先で作る手法と適用方法についての記事です。
Attachments (63)

AzG1OacZQIo6FldrI67x9UX9.png

yMWVW69XfEAgQNV7Zwfl92Mi.png

QRxJCAc8PsBrFOx5WH9LzDic.png

4vTaW8zFPYVfJl4PZl6xEnyw.png

aLiFDd0IeednVAA0wVPqz8MN.png

qw0CHnKtBxsLpjhpg3HuhEhz.png

kAeDY3YP8GjQbmGw97nbRVPx.png

2EAQxif7yLUOk0Zq8ZnAnENJ.png

itNbFmwSQ182l1Ul9fSfsInB.png

eQloauNX4JC8HYqiANmNsVxd.png

CGSGO2eKi9H9IvTzMz9XAPTc.png

Is9ONmVf15J5fGWMYD0obFDV.png

otqx23P8qePciWNmt3jq7sPa.png

y2KhAZdTCXrfCMFpVkKGEmy2.png

Yy3QTlTPL2oVwHmT5glgEJvI.png

TuLGR54xpeajNZ2FeE1WSNZe.png

Q6g5Bg9P8M2ffBVCsVxPxiJe.png

Zrt1FtErAkhlOit3evGKh8m7.png

D6bInMOr6S4QN0I0OdQoRHZd.png

rPTJCGGD51GuLRL5iMpwoYNG.png

W0sq88b9XvKBoQb7f1QdCFsu.png

JOwvMIYswpIPCrjbhmQNMiV7.png

Dt9lHZMuxZra5j5lKhb1fjNd.png

kyXpJU3CJ3Z1j6UvHfnOY6tF.png

PuppbPYVHyUuba5cwBjAdcbK.png

W6cNm8xQzNUz1rtZ3p7hGQ8Y.png

2MU8d3nZFa1SspBJ7u9LWXWT.png

QhYEc2elvlmmN2ViE97Rtx7O.png

ehlSxOMbmJKgtmcplaL9gSVo.png

iAac36rPZtg0X5tka15JrRRT.png

IAARrJbajEZL4ehB9lE9AaXw.png

BmLfEiWFmgtuKYkpKnbbVzdd.png

tmrE82ghpgFPZIPFfh3kp0Wk.png
LoRA学習用wildcard.zip

vQqhnfY2m40G2nThda9oLLJu.png

ERIBwAvk2YXd2KmKs5u4BHRT.png

SQwN8Szgff5nJDQEJUnV1HEA.png

xMxu8ANKPUN9W4q4fGX7lXxb.png

Zmt2HeuPwZHEiTPMaaUy5w5h.png

DiqvaDiBHaEo9ZL1Qt33Y74M.png

py7RwsxkQwry2cEgES0u6Maa.png

mv8pTKsLRuPaEDPrBYHZiPEy.png

9NMiTnWd1dSO2YDnSAwn6dbq.png

AdNCIiKsC3q5Yy43KctP9TuB.png

DkrsHKtg8PWhkWIkr5R8F7rE.png

dhhHFuVk7kTjsYs6CdMjJOQu.png

r42Abzub3UyVhSBTwWGjRBgQ.png

jtySAMujFPPGSzkRwFvSJmyy.png

zSfRPozaug70sZS7O7X5fCCR.png

tA8l2hq0eMl8Mj6LgrIg2E5i.png

Vu59yAEe2ls78CGd01zoylVe.png

1bQxNlFd6uuWHiT1RZ3GCej8.png

ENb2vCgQlIW2kDlwzCorOEkM.png

kwBvqqOJXaQibugBNTxNiZjB.png

nwzwYH8hfwurILySUIEVzS9x.png

KJlOIb36vhcqxr4OTszD8wtj.png

YEPQ1kwm27FbNl0mUYpw4sZG.png

mKc0fjk0Y7ZDERwIeCNnPLml.jpeg

Bl4Qck2WayiYgP2JukOCI290.png

HMJBH51eBwQC53k322izgydz.png

lWvUbptOyZJwBJ7o6jUOe9qq.png

TByhRxLkUSwrfiDaESGUOfjv.png

EHVytqcYFDeToPQ37wFMtqg2.png
