見出し画像

プロンプトマトリックス(prompt-matrix)の挙動について(StableDiffusion)

気になる噂を小耳に挟んだので検証を進めながら記事を書いていたが、結論から言うと勘違いだった。折角なので機能の説明だけ残しておく。こんなnoteを読む人は既に知っているかもしれないが。

プロンプトマトリックス(prompt-matrix)とは

プロンプトマトリックスとは、StableDiffusionのhlky版フォーク(が開発者なのかは知らないが)に実装されている機能で、プロンプトを「|」で区切ると、区切られたパーツ同士の組み合わせ全てを出力してくれるという機能である。(最初のパーツは必ず使用される。)

Separate multiple prompts using the | character, and the system will produce an image for every combination of them.

https://github.com/hlky/stable-diffusion

ゆえに、例として提示されている

  • a busy city street in a modern city|illustration|cinematic lighting

というプロンプトは

  • a busy city street in a modern city

  • a busy city street in a modern city, illustration

  • a busy city street in a modern city, cinematic lighting

  • a busy city street in a modern city, illustration, cinematic lighting

という4つのプロンプトに変換されて画像を生成する。(シード値は固定され、「|」が「, 」(カンマとスペース)に置換されて結合される)

生成された画像。左上からZ字に1,2,3,4番目の組み合わせの画像を示している。

注意すべき挙動

プロンプトマトリックスモードは、WebUIにおいてはAdvancedタブのCreate prompt matrix~ にチェックを入れることで使用できる。このモードでは、前回記事で紹介したトークン上限超過のWarningが出力されない

プロンプトマトリックスモード

また、当初はバッチサイズ2で検証を進めていたのだが、マトリックスで生成した2番目以降の画像と手動でプロンプトを組み合わせて生成した画像の整合が取れなかった。これは既報のバグの影響の可能性がある。みんなもこまめにアップデートしようねぇ

Correct seeds for batches
If you use a seed of 1000 to generate two batches of two images each, four generated images will have seeds: 1000, 1001, 1002, 1003. Previous versions of the UI would produce 1000, x, 1001, x, where x is an iamge that can't be generated by any seed.

https://github.com/hlky/stable-diffusion

言うまでもないがパーツを区切りすぎると2の累乗で組み合わせの数が増えていくので注意。Batch count(コマンドラインオプションで言えば--n_iter)は無視される


この記事が気に入ったらサポートをしてみませんか?