//=time() ?>
重みの掛け方を変えて、さらに平均の取り方も少し工夫してみました。
前よりも重みが狙ったものと近い形で効いているような気がします。
1枚目: black dog を3倍
2枚目: white cat を3倍
3枚目: blue sky and mountain を3倍
4枚目: near a big tree を3倍
#stablediffusion
白猫はどこへ行った、ということで、white catを強調してみました。
1枚目: white catを100倍の重みで
2枚目: white catを4回繰り返す
3枚目: white catをblack catの前において100倍
4枚目: white catをblack catの前において4回繰り返し
あれ、黒犬は?
#stablediffusion
意味ベクトルの平均値を取る手法をいろいろ試してみました。
重みを加えるより、言葉を繰り返す方が効果が強そうです。
1枚目: 普通の平均
2枚目: black dogを5倍の重みで
3枚目: black dogを100倍の重みで
4枚目: black dogを4回繰り返し並べる
#stablediffusion
プロンプトの言葉の順序を入れ替えて生成した意味ベクトルの平均を取ると、生成される画像も平均的になりました。
1枚目: black dog, white cat, blue sky and mountain, near a big tree
2枚目: blue sky and mountain, near a big tree, black dog, white cat
3枚目: 平均値
#stablediffusion
Stable Diffusionのプロンプト中のキーワードの位置による影響がよく分かる例です。
左: black dog, white cat, blue sky and mountain, near a big tree
右: blue sky and mountain, near a big tree, black dog, white cat
右は、犬猫が小さく、山と木がよりはっきりと描写されています。
ちょっと考えると、使いどころがありそうなんですが、左右対称が強すぎて、少し不自然すぎるところがあるので、もっとソフトな対称性を作る方法があればいいのに、と思いました。
#stabledifussion #anythingv3
ノイズの作り方を変えたら、それらしい画像が生成できました。多分、ノイズの分散の度合いが、最初の平均を取るやり方だと具合が悪かったのではないでしょうか。
最初の方法: (latents + latents.flip(-1)) / 2.0
成功した方法: cat([half_latents, half_latents.flip(-1)])
text-to-imageの初期ノイズを左右対称にしたら、左右対称な画像が生成されるのではと、深く考えずにやってみたのですが、何とも言えない画像が生成されてしまいました。確かに左右対称だけど……
乱数シードを一定にして試さないと、ただの偶然かもしれないじゃないかと思い直して、乱数シードを固定してやり直してみました。
乱数シードによってははっきりとした差にならないものもありましたが、明確な差が出るものもありました。
ネガティブプロンプトの設定
左: なし
右: "1girl"
昨日、Stable Diffusionのテキストエンコーダーを動的に書き替えられるようにしたので、試しにネガティブプロンプトの側にノイズを乗せてみました。
ノイズありは、まとまりがよい代わりに、ネガティブプロンプトを無視しがちかも。
前2つ:ノイズなし
後2つ:ノイズあり
#stablediffusion