//=time() ?>
途中でプロンプトを変更する手法について、img2imgでstrengthを0.5とどう違うのか、という疑問があるかと思いますが、実際にやってみるとかなり異なる画像となりました。
途中まで生成された状態と、逆算でノイズを与えられた状態はかなり異なるものだということなのでしょう。
#stablediffusion
プロンプトを画像生成の途中で変更する実験をしてみました。
1枚目:最後まで同じプロンプト
2枚目:進捗50%で変更
3枚目:進捗20%で変更
4枚目:最初から変更後のプロンプト
進捗50%時点での変更だと構図はほとんど変化せず、細部の変化に留まっていることが見て取れます。
プロンプト画像の方に入るノイズは、画像サイズに依らないので、これが仕様なのでしょう。
もしかすると、スケジューラの仕様? DPM-Solver++のドキュメントを読んでみる方がいいのでしょうか。
最終ステップのプロンプト画像とネガティブプロンプト画像を比べた時、プロンプト画像の方にノイズが入るのは、プロンプトの内容が違うからだと思っていたのですが、全く同じ文をプロンプトとネガティブプロンプトに入れても、やはりノイズが入ることが確認できました。
これは最終ステップでのプロンプト画像、ネガティブプロンプト画像、最終画像の比較です。
プロンプト画像の方がまだ画像が荒いのに対して、ネガティブプロンプト画像は滑らかなのが見て取れます。
最終画像は荒さが強調されるというより、細部の書き込みが細かくなっているように見えます。
先の画像は30ステップで生成したのですが、10ステップ目の画像、20ステップ目の画像、最終画像は次のようになっていました。
#stablediffusion
シフトエンコーディングの特徴を調べるために、いろいろ試していたら、こういうのが出てきました。
言うことを聞かせるのに、まだ慣れが必要な気がしますが、ハンドルが増えた分、可能性が広がったように思いました。
#stablediffusion #anythingv3
もう一つ試してみたのは、意味ベクトルは後ろのトークンに影響を及ぼすという観察を重みづけの計算に織り込むため、適当なベクトル(例えば[0.7,0.23,0.07])で畳み込み演算して重みを計算しました。
1,2枚目: 畳み込みなし
3,4枚目: あり
が、「あり」の方が物の形状が崩れ気味に見えます。
ただ、だからと言って単に反転のみの場合の重みづけを2倍にすればよいというわけではなく、4倍程度で近い影響が得られるようです。ちなみに6倍にすると絵が崩壊してしまいました。
1,2枚目⇒4倍
3,4枚目⇒5倍
反転あり⇒[A B C],[B C],[C],[C B A],[B A][A]
回転あり⇒[A B C],[B C A],[C A B]
例)
プロンプト: black dog, white cat, blue sky and mountain, near a big tree
black dogを3倍
- 1枚目: 反転
- 2枚目: 回転
blue sky and mountain
- 3枚目: 反転
- 4枚目: 回転