よくわからないおすすめパラメーター
name | params | source |
---|---|---|
emi | s1=0.6, s2=0.4, b1=1.1, b2=1.2 | link |
emi2.0 | s1=1.2, s2=0.7, b1=1.1, b2=1.3 | |
emi2.5 | s1=1.2, s2=0.7, b1=1.1, b2=1.3 |
emi1 - float16
とても良い
emi1 - bfloat16 → float16だった
10枚1分5秒。
freeuモジュールでbfloat16はサポートされていないエラーが出る
emi1 - float16 (no freeu)
freeuを使わないと彩度が下がって画風も若干大人しくなる。10枚1分3秒。
emi1 - float32 (no freeu)
かなりいいけど3倍ぐらい時間がかかる。10枚3分6秒。あと「UserWarning: 1Torch was not compiled with flash attention」という警告が出るのが気になる。
emi1 - float32
ところどころ描き込みのクオリティがすごい。betrayer1ではfloat16を使っていたけど、今回は32にしようと思った。10枚3分3秒。
emi1 - float32 (PyTorch 2.5 (前は2.2))
PyTorchを最新にした。気のせいとは思うけどクオリティが上がった気がする。10枚3分0秒。
emi1 - float32 (PyTorch 2.5 以後同様) - emi2のfreeu謎パラメーター
気になったのでemi2の謎パラメーターをemi1に使ってみた。極端な色使いが減るのかもしれない。10枚3分5秒。
emi2 - float32
emi2。確かにちょっと変わった。良くなったという感じでもないけど。3分7秒
emi2 - float16
明らかに今までにない画風は混ざっている。10枚1分3秒。
emi2 - float16 (old freeu params)
たまたまかもしれないけど、前のparamsのほうが面白い画像は多い気がする。
emi2 - float32 (old freeu params)
今の単語が微妙なだけかもしれない。ただ特にネガティブプロンプトの磨き込みは必要そう。
emi2.5 - float16 (old freeu params)
だいぶん画風が偏るようになった。どこかの単語の問題?
emi2.5 - float16
バリエーションが少ない。
emi2.5 - float16
百枚ぐらいランダムに生成。顔がだいぶん欧米風?になっている。
emi2.5は、emi2にCosmicManという人物画像用基盤モデルをマージしたもの。全身絵の生成が安定したとのこと。
今回の用途(ポートレイト画像の生成)には微妙に不向きな感じがする。
emi2 - float16
emi2は、emiに1000枚学習データを追加して倍の時間学習させたモデル。
確かにバリエーションは増えつつ、安定もしている気がする。
emi2 - float16 (oldparams)
やっぱりよく分からないパラメーターはemi1のやつが断然いい。
emi1 - float16 (oldparams)
emi2と甲乙つけがたい。emi2のほうが安定はしている気がする。採用したいものが多いかは別。
とりあえずfloat32でも100枚ずつ作ってみて考える。
色々作ったけど、float32だと試行回数が稼げないので16の方が良い。emi2はいまいち採用したいと思うものが少ない気がする。
なので変わり映えしないけど前と同じfloat16-emi1で量産する。
b1=1.5, b2=1.6, s1=0.9, s2=0.2
freeuのreadmeにあったパラメーター。詳細さが消える。
b1=1.3, b2=1.4, s1=0.9, s2=0.2
ちょっと色味がおかしいけどよく見る感じになった。
他に置いておくところもないので、ここに置いておく。
b1 1.000 b2 1.000 s1 0.200 s2 0.2 サイケデリック b1 1.000 b2 1.000 s1 0.200 s2 1.0 彩度低い、のっぺり、物足りない、 b1 1.000 b2 1.000 s1 0.467 良いかも b1 1.000 b2 1.000 s1 0.733 s2-0.2でもそこまでひどくない、結構面白い b1 1.000 b2 1.000 s1 0.733 s2-0.4以上になると画風が変わる b1 1.000 b2 1.000 s1 0.733 s2-0.6以上は物足りない、薄い b1 1.000 b2 1.000 s1 1.000 s2-0.2 ややサイケ、ただ適度に書き込みがあって悪くない b1 1.000 b2 1.000 s1 1.000 s2-0.4 ちょうど現実的? b1 1.000 b2 1.000 s1 1.000 s2-0.6 物足りない、書き込み不足 b1 1.000 b2 1.000 s1 1.000 s2-0.6以上 ぼやっとしている、下手? b1 1.000 b2 1.150 s1 0.200 s2-0.2 サイケ、画風が変わった b1 1.000 b2 1.150 s1 0.200 s2-0.7 まだサイケ、画風が変わった、ちょっと下手?画風がやや違うので、撹乱要因としていいかも b1 1.000 b2 1.150 s1 0.200 s2-1.0 下手 b1 1.000 b2 1.150 s1 0.467 s2-0.2 ややサイケだけど、許容範囲かも b1 1.000 b2 1.150 s1 0.467 s2-0.4 画風が違って良い感じ b1 1.000 b2 1.150 s1 0.467 s2-0.6 ややおとなしいけど良い感じ b1 1.000 b2 1.150 s1 0.467 s2-1.0 やや物足りない b1 1.000 b2 1.150 s1 0.733 s2-0.2 ちょっとサイケだけど、あり b1 1.000 b2 1.150 s1 0.733 s2-0.4 ありありのあり b1 1.000 b2 1.150 s1 0.733 s2-0.6 まああり b1 1.000 b2 1.150 s1 0.733 s2-1.0 ちょっと薄い、物足りない b1 1.000 b2 1.150 s1 1.000 s2-0.2 少しサイケ、あり b1 1.000 b2 1.150 s1 1.000 s2-0.4 やや好みでない顔 b1 1.000 b2 1.150 s1 1.000 s2-0.7 顔がちょっとおかしい?、あとおとなしい b1 1.000 b2 1.150 s1 1.000 s2-1.0 書き込みは少ないけど、ありかも b1 1.000 b2 1.300 s1 0.200 s2-0.2 サイケ b1 1.000 b2 1.300 s1 0.200 s2-0.4 ヤヤサイケ b1 1.000 b2 1.300 s1 0.200 s2-0.7 あり b1 1.000 b2 1.300 s1 0.200 s2-1.0 下手、不安定、ややサイケ b1 1.000 b2 1.300 s1 0.467 s2-0.2 ちょっとサイケ、ギリギリ。やや顔の主張が強い b1 1.000 b2 1.300 s1 0.467 s2-0.4 あり、目鼻立ちがくっきり b1 1.000 b2 1.300 s1 0.467 s2-0.6 ちょっと大人しくてものたりないけどあり b1 1.000 b2 1.300 s1 0.467 s2-1.0 ものたりない b1 1.000 b2 1.300 s1 0.733 s2-0.2 あり b1 1.000 b2 1.300 s1 0.733 s2-0.4 ちょっと下手?ものたりない? b1 1.000 b2 1.300 s1 0.733 s2-0.6 おとなしいけどあり b1 1.000 b2 1.300 s1 0.733 s2-1.0 背景や髪が物足りない b1 1.000 b2 1.300 s1 1.000 s2-0.2 サイケだけどあり b1 1.000 b2 1.300 s1 1.000 s2-0.4 ありだけど、ちょっとくっきりしすぎ? b1 1.000 b2 1.300 s1 1.000 s2-0.7 物足りない感もあるけど、バランス良いかも b1 1.000 b2 1.300 s1 1.000 s2-1.0 わりとあり ↑ アリのやつは今までと画風が違うので良い感じ b1 1.000 b2 1.450 s1 0.200 s2-0.2 画風が違う、サイケだど割とあり、ツヤ感がある b1 1.000 b2 1.450 s1 0.200 s2-0.4 0.2よりはおとなしめでバランス良い b1 1.000 b2 1.450 s1 0.200 s2-0.7 ちょっとのっぺり感が出るけどアリ b1 1.000 b2 1.450 s1 0.200 s2-1.0 のっぺり感はあるけど、割とあり b1 1.000 b2 1.450 s1 0.467 s2-0.2 背景のサイケ感は強いけど、あり、くっきり感もある b1 1.000 b2 1.450 s1 0.467 s2-0.4 かなりバランス良いかも b1 1.000 b2 1.450 s1 0.467 s2-0.6 これもバランス良い、落ち着きがある b1 1.000 b2 1.450 s1 0.467 s2-1.0 ありよりだけど、ちょっと髪のあたりなどのっぺり感もあるのでなし b1 1.000 b2 1.450 s1 0.733 s2-0.2 あり、サイケ感は割と薄い、くっきりした感じ b1 1.000 b2 1.450 s1 0.733 s2-0.4 バランス良い b1 1.000 b2 1.450 s1 0.733 s2-0.6 やや書き込みが少ないけどあり b1 1.000 b2 1.450 s1 0.733 s2-1.0 これもありではあるけど、書き込みが少ないのでなし。s1の0.4よりさらに少ない b1 1.000 b2 1.450 s1 1.000 s2-0.2 あり、さいけもだいぶん薄い、だいぶんくっきり b1 1.000 b2 1.450 s1 1.000 s2-0.4 ありだけどちょっとのっぺり b1 1.000 b2 1.450 s1 1.000 s2-0.7 のっぺり。ほかと画風が違いすぎるから微妙 b1 1.000 b2 1.450 s1 1.000 s2-1.0 髪ののっぺり感、ただくっきりした画風とあっていて逆に違和感は減っている。これはこれであり b2を変えると画風がちがってくるのでどれも良い。 b2を上げるほど、くっきり感が増す?細かな描写も減ってシンプルになる。 b2が低いと、よくわからないけどすごい書き込みとか複雑な髪とか、服とかになる。 どちらもあり b1 1.000 b2 1.600 s1 0.200 s2-0.2 ややサイケで、暗み?、コントラスト?がある。 b1 1.000 b2 1.600 s1 0.200 s2-0.4 サイケでのっぺり感があるけど、あり b1 1.000 b2 1.600 s1 0.200 s2-0.7 明暗のコントラストがはっきりしていて独特?あり b1 1.000 b2 1.600 s1 0.200 s2-1.0 顔はありだけど、髪とかがのっぺり気味 b1 1.000 b2 1.600 s1 0.467 s2-0.2 割とあり、サイケ感もほどほど、コントラストがちょっと過剰? b1 1.000 b2 1.600 s1 0.467 s2-0.4 あり、ちょうどいい感じ、背景はややぼやけている b1 1.000 b2 1.600 s1 0.467 s2-0.6 背景ぼやけで、のっぺり感もやや強い、微妙 b1 1.000 b2 1.600 s1 0.467 s2-1.0 髪ののっぺり感。こういう画風で統一するならありかも b1 1.000 b2 1.600 s1 0.733 s2-0.2 サイケはない、シルエット?のハイライト?とか、くっきり感とかちょっとやり過ぎ感 b1 1.000 b2 1.600 s1 0.733 s2-0.4 まあまあのっぺり気味なのと、影・光の色が変 b1 1.000 b2 1.600 s1 0.733 s2-0.6 背景が虚無だけど、割とありかも b1 1.000 b2 1.600 s1 0.733 s2-1.0 コントラスト感とのっぺり感が逆にあってきた、こういう画風ならあり b1 1.000 b2 1.600 s1 1.000 s2-0.2 アニメ塗りというのか、ボーダーのくっきり感がつよい、昔のアニメみたいな感じ、あり、背景は虚無 b1 1.000 b2 1.600 s1 1.000 s2-0.4 同上 b1 1.000 b2 1.600 s1 1.000 s2-0.7 くっきり感のバランスが合っていて逆にあり b1 1.000 b2 1.600 s1 1.000 s2-1.0 背景はきょむだけどまああり b2 1.600までいくと、色々コントラストやくっきり感が行き過ぎている感はあるけど、これはこれであり 時間がないのでb1は省略。 ざっと見た感じb1の変化はわからなかった。数値の変動が小さいのもあるかもしれないけど。 ただb2と同じで、今の範囲なら大きくはずれてはいなさそう
パラメーターを変えるだけでここまで変わっていくのは面白い。
グリッドサーチコードメモ
# 以下の範囲をグリッドサーチする。
# b1: 1 ≤ b1 ≤ 1.2
# b2: 1.2 ≤ b2 ≤ 1.6
# s1: 0.2 ≤ s1 ≤ 1
# s2: 0.2 ≤ s2 ≤ 1
import numpy as np
b1 = np.linspace(1, 1.2, 3)
b2 = np.linspace(1.0, 1.6, 5)
s1 = np.linspace(0.2, 1, 4)
s2 = np.linspace(0.2, 1, 4)
params_list = [
dict(b1=b1_, b2=b2_, s1=s1_, s2=s2_)
for b1_ in b1
for b2_ in b2
for s1_ in s1
for s2_ in s2
]
g = torch.Generator(device="cuda").manual_seed(42)
prompt, jender, hair = generate_prompt()
for para in tqdm(params_list):
print(para)
pipe.enable_freeu(**para)
g = g.manual_seed(42)
prompt = "anime artwork, anime style, (portrait), knight, 1girl, adult, blond hair, scarf, brave, medieval, fantasy, ((transparent))"
for i in range(4):
# prompt, jender, hair = generate_prompt()
# is_female = ("female" in jender) or ("girl" in jender) or ("woman" in jender)
filename = f"{prompt}__{image_id:05d}.png"
out_path = out_dir / "current" / (" ".join([f"{k}-{para[k]:.3f}" for k in para]) + "__" + filename)
# out_path = out_dir / "current" / (("f" if is_female else "m") + "-" + hair) / filename
out_path.parent.mkdir(exist_ok=True, parents=True)
image_id += 1
nega = "(embedding:unaestheticXLv31:0.5), photo, deformed, realism, disfigured, low contrast, bad hand"
image = pipe(
prompt=prompt,
negative_prompt=nega,
num_inference_steps=20,
generator=g
).images[0]
image.save(out_path)
emi, emi2.0, emi2.5の違いメモ
サンプルコードについては、emiはfloat16、emi2.0以降はbfloat16という違いのみ。