酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Stable Diffusion の img2img で seed を固定した場合、同じ絵が生成されるのか試してみた #stablediffusion

Stable Diffusion の img2img で seed を固定した場合に、同じ絵が出力されるのか? について検証した。

結果としては seed を固定しても同じ絵は出力されなかった。結局のところ seed を指定しても指定しなくても 何十枚・何百枚と画像を生成して良き1枚を抽出する作業をしないといけないようだ。現時点の Stable Diffusion には冪等性はないと考えた方がよさそうだ。

(2022/09/01 8:45追記) からあげ先生によると「diffusers のバージョンで挙動が変わる気がしてます」とのこと。うちの環境は先週の土曜日に構築したものなので若干古い。古いバージョンが良いのか新しいバージョンが良いのかわからないが、seed を固定して同じ絵を生成できているひともいるみたい?

(2022/09/02 9:08追記) からあげ先生に検証していただきました。diffusers v0.2.5 からは seed を固定すると同じ絵が生成されるようです!

元絵について

元絵にはこれを使った。

ローカル環境でのテストなので版権モノを使ってもよいが、なんかのタイミングでそれが表に出てしまったら困るし、ブログに書きたいことが出てきてもそのまま使えない。基本的には img2img のテストでは自分で書いた絵を元絵にしている。

さくさんは天才なのでテストデータに「うんこ」を使うと本番環境にも出現してしまうことを知ってる。

seed を固定して生成してみた

seed を固定して同じ絵柄になるのか試してみる。

seedを 20000 に固定した下記のコマンドを実行する。このコマンドを3回実行した。

python scripts/img2img.py --init-img sample13.jpg --prompt "a portrait of a cute girl,Girl with brown long hair and wearing a school uniform" --strength 0.6 --n_sample 1 --seed 20000

結果として、同じ seed を指定しているにも関わらず異なる画像が出力された。このことから「同じ seed を指定しても同じ絵は出力されない」と結論づけた。

(2022/09/02 9:08追記) diffusers のバージョンによって挙動が変わる

からあげ先生 に検証していただいたところ、diffusers v0.2.5 からは seed を固定すると同じ絵が生成されるようです。

多分、diffusers、次の0.2.5のバージョンからは、seed値で再現できるようになると思います。

そして、diffusersものすごい勢いで更新されていて、たまに最新バージョン普通に動かなかったりするので要注意です。インストールする際は、バージョンや最新版ならcommit番号をメモして置かないと、同じことをしても違う結果が出て、混乱してしまうかもしれません。

Stable DiffusionでSeedを固定して同じ絵を生成できるのか問題を検証

こちらは Mac なので seed固定で絵も固定できるのか、今週末に時間を見つけて我が家の環境でも追試してみたいと思います。