見出し画像

複数のillustriousのLoRAをランダムで組み合わせてオリジナル画風のイラストを作る

前回styleのLoRAを組み合わせてオリジナル画風のイラストを生成するものを実施しています。

illustriousのstyle系のLoRAもどんどん増えているので、11個取得して、ランダム組み合わせるようのワイルドカードを作成しました。

使用するLoRA

下記LoRA11個のLoRAを使用します。
使用するLoRAの中には、紳士が大喜びするstyleが含まれていますのでご留意ください。

STYLES | Illustrious/Noob

96YOTTEA style | Illustrious

[Style] Tian Zhu2357/茶柱 [Illustrious-XL]

Style Art | CHAINSAWMAN | ANIME SERIES

iwao style LoRA for PonyXL/Illustrious

Mamimi (mamamimi) style | Goofy Ai

[Style] Kujirapasta - Illustrious | Pony

Minamoto (Mutton) Style

style patch[noob]

Mosquitoman Style

Raichiyo Style for Pony XL and Illustrious

LoRAの選定について

特になく、新しいものかつstyleで画風を変更するものを採用しています。
基本紳士向けを作成したいという願望のため、紳士LoRAを入れています。
紳士LoRAは、紳士パワーが強いため、nsfw:1.8をネガティブプロンプトにいれても余裕を突破してきます。

ランダム性のLoRAの条件

11個のLoRAをもとに今までの知見から3個から6個までの組み合わせを実施。
LoRAのwightは、0.4から0.8で実施。

  number:
    - "0.4"
    - "0.5"
    - "0.6"
    - "0.7"
    - "0.8"

上記yaml形式で作成しました。
見てもらえば分かりますが、数値ではなく、""で囲っています。
""がなければ、エラーが出てログにてDynamic PromptsのWildcard ManagerがあなたのYAMLファイル内のリストアイテム(この場合は数値)をサポートしていないとでることを今回学びました。

次にLoRAを3から6つまでの組み合わせのワイルドカードを作る際に手でちょこちょこ~なんてことは面倒なので出来ません。
勉強中にpythonを活用して重複しないrandomで生成してもらいました。
3から6までの組み合わせ数は、全部で1,419通りあります。
自分の環境で実行すると500ぐらいしか生成されなかったのですが、1,419個のあるワイルドカードで実施してももう多すぎて分からないので500個ほどのパターン化で実施。
一応カンタンなpythonコード張っておきます。

import random
from itertools import combinations

# LoRAモデルのリスト
lora_models = [
    "<lora:GEN(illust) 0.2v:__umber__>",
    "<lora:96YOTTEA-WAI:__number__>",
    "<lora:[Style] Tian Zhu2357 [Illustrious-XL]:__number__>",
    "<lora:ChainsawstyleByOOA:__wildcards/random-lora-patten/number__>",
    "<lora:iwaoILLUS:__wildcards/random-lora-patten/number__>",
    "<lora:mamimi_mamamimi_style_illustrious_goofy:__number__>",
    "<lora:midis_KujiraPasta_V1[IL]:__number__>",
    "<lora:minamoto_style::__number__>",
    "<lora:mixstyle1_noob10-xl-e50:__number__>",
    "<lora:mosquitoman_Illust:__number__>",
    "<lora:Raichiyo_IL:__number__>"
]

all_combinations = []
for r in range(3, 6):  # 3から5の要素
    all_combinations.extend(combinations(lora_models, r))

random.shuffle(all_combinations)
unique_combinations = all_combinations[:1419]

for i, combo in enumerate(unique_combinations, 1):
    print(f"Combination {i}: {', '.join(combo)}")

LoRAのweight部分をワイルドカードで04-0.8の間をランダムで生成するようにしているので、weight部分の組み合わせを入れるとパターン数がわからないぐらい多い形になります。
上記コード使用の際には、yaml形式のファイルにて、下記内容を入れています。

card-name:
  number:
    - "0.4"
    - "0.5"
    - "0.6"
    - "0.7"
    - "0.8"
  lora-patten:
   大量のloraの組み合わせ

ランダムの組み合わせで生成された画像一覧

Fate/staynightで大活躍したセイバーさんをベースで作成してみました。
ポーズは、手で実施する二丁拳銃のプロンプトを入れています。

double finger gun

割と良い感じのが多数ありました。
あとは、イラストが安定するかです。
メダカの固定値のように狙った配合で作ったメダカの色が安定するかと同じかと思います(最近メダカ買いました)

載せているのは、normalのものです。
紳士向けのLoRAが入っているので、すっぽんぽんだったり、自分の手で二丁拳銃を作ると思いきや紳士のピストル2本生やしたりしました。
確かに手で動作するとは指定しないので、あいまいなため、紳士の銃を2本にしたのでしょう・・・・ギャグセンスあるAIに感謝('ω')

使用したワイルドカードを連携しておきます。
上記記載しているLoRAでの対応となります。
一部のみLoRAをDLして実施した場合は、無いLoRAは反応しないだけで、あるもので実行するので奇跡のガチャを生み出すかもしれません。

※自分用のワイルドカード使用だったため、そのまま使えるよう修正しました。(2025/1/21)

checkPointを変えるとまた違った形になる面白みがあります。


いいなと思ったら応援しよう!

nobin
よろしければ応援よろしくお願いします('ω')b